{"version":3,"sources":["redux/history.ts","actions/auth/AuthActionsTypes.ts","reducers/AuthReducer.ts","actions/booking/BookingActionsTypes.ts","actions/reservationsPage/ReservationsPageActionsTypes.ts","config/constants.ts","reducers/BookingReducer.ts","actions/home/HomeActionTypes.ts","actions/restaurant/RestaurantsActionTypes.ts","actions/cabinet/CabinetActionsTypes.ts","helpers/helpers.ts","helpers/scheduleHelpers.ts","helpers/dateHelpers.ts","reducers/CabinetReducer.ts","reducers/HomeReducer.ts","actions/menu/MenuActionsTypes.ts","helpers/menuHelpers.ts","reducers/MenuReducer.ts","actions/promo/PromoActionsTypes.ts","reducers/PromoReducer.ts","actions/photo/PhotoActionsTypes.ts","reducers/PhotoReducer.ts","actions/restaurantsTables/RestaurantsTablesTypes.ts","actions/statistics/StatisticsActionsTypes.ts","actions/sourceStatistic/SourceStatisticActionsTypes.ts","actions/schedules/SchedulesActionTypes.ts","actions/userStatistic/UserStatisticActionsTypes.ts","reducers/LoadingReducer.ts","actions/restorePassword/RestorePasswordActionsTypes.ts","reducers/RestorePasswordReducer.ts","actions/reserveReject/RejectReserveActionsTypes.ts","reducers/ReservationPageReducer.ts","actions/restaurantsInfo/RestaurantsInfoActionsTypes.ts","reducers/RestaurantInfoReducer.ts","actions/restaurantsSettings/RestaurantsSettingsActionsTypes.ts","reducers/RestaurantSettingsReducer.ts","actions/restaurantsWidgets/RestaurantsWidgetsTypes.ts","reducers/RestaurantWidgetsReducer.ts","reducers/ScheduleReducer.ts","reducers/StatisticsReducer.ts","reducers/SourceStatisticReducer.ts","actions/snackbars/SnackBarsActionsTypes.ts","reducers/SnackbarsReducer.ts","reducers/RestaurantsTablesReducer.ts","reducers/UserStatisticsReducer.ts","actions/webSocketService/WebSocketActionsTypes.ts","reducers/WebsocketReducer.ts","actions/restaurantsCalls/RestaurantsCallsActionsTypes.ts","reducers/RestaurantCallsReducer.ts","reducers/OpenReservesReducer.ts","actions/notifications/NotificationsActionsTypes.ts","reducers/NotificationsReducer.ts","actions/appReserves/AppReservesActionsTypes.ts","reducers/AppReservesReducer.ts","reducers/index.ts","config/systems.ts","config/api.js","helpers/tokensHelpers.ts","helpers/scheme/schemeHelpers.ts","helpers/widget/constants.ts","helpers/widget/widgetHelpers.ts","api/utils.ts","api/index.ts","actions/auth/AuthActions.ts","locales/index.ts","sagas/AuthSagas.ts","actions/restorePassword/RestorePasswordActions.ts","sagas/RestorePasswordSagas.ts","actions/restaurant/RestaurantActions.ts","sagas/RestaurantsSectionsSaga.ts","actions/reservationsPage/ReservationsPageActions.ts","actions/reserveReject/RejectReserveActions.ts","actions/snackbars/SnackBarsActions.ts","containers/Reservation/constants.ts","actions/notifications/NotificationsActions.ts","actions/appReserves/AppReservesActions.ts","reducers/selectors.ts","helpers/callHelpers.ts","containers/Reservation/selectors.ts","sagas/ReservationsPageSagas.ts","actions/booking/BookingActions.ts","helpers/bookingHelpers.ts","sagas/BookingSagas.ts","actions/restaurantsTables/RestaurantsTables.ts","sagas/RestaurantsTables.ts","actions/cabinet/CabinetActions.ts","actions/schedules/SchedulesAction.ts","containers/CashBoxWarning/selectors.ts","selectors/RestaurantSelectors.ts","sagas/CabinetSagas.ts","actions/home/HomeActions.ts","sagas/HomeSagas.ts","actions/menu/MenuActions.ts","sagas/MenuSagas.ts","actions/promo/PromoActions.ts","sagas/PromoSagas.ts","actions/statistics/StatisticsActions.ts","helpers/reserveHelpers.ts","sagas/StatisticSagas.ts","actions/userStatistic/UserStatisticActions.ts","sagas/UserStatisticSagas.ts","sagas/RestaurantSaga.ts","actions/restaurantsInfo/RestaurantsInfoActions.ts","sagas/RestaurantsInfoSagas.ts","actions/restaurantsSettings/RestaurantsSettingsActions.ts","sagas/RestaurantsSettingsSaga.ts","actions/sourceStatistic/SourceStatisticActions.ts","sagas/SourceStatisticSaga.ts","components/Common/Snackbar/SnackBars.tsx","sagas/SnackbarsSagas.ts","sagas/SchedulesSaga.ts","actions/photo/PhotoActions.ts","sagas/PhotoSagas.ts","actions/webSocketService/WebSocketActions.ts","actions/notification/NotificationActionsTypes.ts","actions/restaurantsCalls/RestaurantsCallsActions.ts","selectors/AuthSelectors.ts","sagas/WebSocketSaga.ts","actions/notification/NotificationActions.ts","helpers/notificationHelpers.ts","sagas/NotificationSaga.ts","actions/restaurantsWidgets/RestaurantsWidgetsActions.ts","sagas/WidgetsSaga.ts","sagas/RestaurantsCallsSagas.ts","types/INotificationsStore.ts","sagas/NotificationsSaga.ts","api/mocks/helpers.ts","types/IAppReservesStore.ts","sagas/AppReservesSaga.ts","sagas/index.ts","redux/index.ts","theme.js","routers/CabinetPage/styles.ts","components/Common/PageHeaderWrap.tsx","components/Common/PageContentWrap.tsx","components/Common/Icons/wrapSvgPath.jsx","components/Common/Icons/HelpIcon.jsx","components/Common/CustomTooltip.tsx","components/Common/Title.tsx","components/Common/SelfSavingFields/EditField.jsx","components/Common/FieldWrap.tsx","components/Common/Icons/TrashIcon.tsx","components/Common/ScheduleTable/ScheduleRow.tsx","components/Common/ScheduleTable/SchedulePeriodRow.tsx","components/Common/ScheduleTable/BookingPeriodRow.tsx","components/Common/ScheduleTable/index.tsx","components/ReservesSystem/ReservesSystemInfo/index.tsx","containers/ReservesSystemInfo/ReservesSystemInfoCont.tsx","containers/ReservesSystemInfo/selectors.ts","containers/ReservesSystemInfo/index.ts","components/Common/SelfSavingFields/SelectItemLIst.jsx","components/ReservesSystem/ReservesSystemSettings/ReserveSchedule.tsx","components/ReservesSystem/ReservesSystemSettings/index.tsx","containers/ReservesSystemSettings/ReservesSystemSettingsCont.tsx","containers/ReservesSystemSettings/selectors.ts","containers/ReservesSystemSettings/index.ts","components/Common/Icons/FlashActive.tsx","components/Common/Icons/FlashInactive.tsx","components/Tables/TableLIstItem.tsx","components/Tables/index.tsx","containers/ReservesSystemTables/ReservesSystemTablesCont.tsx","containers/ReservesSystemTables/selectors.ts","containers/ReservesSystemTables/index.ts","components/ReservesSystem/ReservesSystemAdditionalNotifications/index.tsx","containers/ReservesSystemAdditionalNotifications/ReservesSystemAdditionalNotificationsContainer.tsx","containers/ReservesSystemAdditionalNotifications/index.ts","components/ReservesSystem/AutoBookingEnabled/AutoBookingFields.tsx","components/ReservesSystem/AutoBookingEnabled/index.tsx","containers/ReservesSystemAutoBooking/ReservesSystemAutoBookingCont.tsx","containers/ReservesSystemAutoBooking/index.ts","components/Reservations/View/RestaurantSchema/rotateHelper.ts","components/Reservations/View/RestaurantSchema/textCenterHelper.ts","components/Reservations/View/RestaurantSchema/utils.ts","components/Reservations/View/RestaurantSchema/TableElement.tsx","components/Reservations/View/RestaurantSchema/ImageElement.tsx","components/Reservations/View/RestaurantSchema/RectElement.tsx","components/Reservations/View/RestaurantSchema/EllipseElement.tsx","components/Reservations/View/RestaurantSchema/TextElement.tsx","components/Reservations/View/RestaurantSchema/styles.ts","components/Reservations/View/RestaurantSchema/index.tsx","components/ReservesSystem/ReservesSystemSchema/index.tsx","containers/ReservesSystemSchema/ReservesSystemSchemaCont.tsx","containers/ReservesSystemSchema/selectors.ts","containers/ReservesSystemSchema/index.ts","components/ReservesSystem/DeleteRestaurant/DeleteRestaurantMessages.tsx","components/Common/DialogTitle.tsx","components/ReservesSystem/DeleteRestaurant/DeleteRestaurantModal.tsx","containers/DeleteRestaurantCont/DeleteRestaurant.tsx","containers/DeleteRestaurantCont/index.ts","components/Common/PageHeaderWarning.tsx","containers/CashBoxWarning/CashBoxWarning.tsx","containers/CashBoxWarning/index.ts","components/Common/Icons/EditIcon.tsx","components/Common/Icons/CopyIcon.tsx","components/ReservesSystem/Widgets/WidgetsTable.tsx","components/ReservesSystem/Widgets/utils.ts","components/ReservesSystem/Widgets/styles.ts","components/ReservesSystem/Widgets/CustomPopover.tsx","components/ReservesSystem/Widgets/CustomField.tsx","components/ReservesSystem/Widgets/WidgetSettings.tsx","components/ReservesSystem/Widgets/WidgetCreateModal.tsx","components/ReservesSystem/Widgets/WidgetEditModal.tsx","components/ReservesSystem/Widgets/WidgetDeleteModal.tsx","containers/ReservesSystemWidgets/ReservesSystemWidgets.tsx","containers/ReservesSystemWidgets/index.ts","components/Employees/Dialog/index.tsx","components/Common/Button/index.tsx","components/Common/Button/Danger/index.tsx","components/Employees/Dialog/Delete.tsx","entities/employees/model/selectors.ts","entities/employees/model/model.tsx","entities/employees/lib/employees.ts","entities/employees/ui/unableToDeleteAlert.tsx","entities/cashbox/model/model.tsx","components/Employees/List/Item.tsx","components/Common/Button/Context/index.tsx","components/Employees/List/index.tsx","containers/Employees/List/index.tsx","components/Employees/Employee/RoleDescription.tsx","components/Employees/Employee/index.tsx","components/Employees/Employee/NotFound.tsx","containers/Employees/Employee/index.tsx","components/Common/Button/Solid/index.tsx","components/Employees/Form/index.tsx","containers/Employees/Form/index.tsx","pages/EmployeesPage.tsx","pages/ProfilePage.tsx","components/Auth/AuthWrapComp.tsx","components/Auth/CommonAuth/Logo.tsx","components/Auth/CommonAuth/UseRules.tsx","shared/ui/noAuthPage.tsx","features/employees/ui/activationSuccess.tsx","features/employees/ui/activationError.tsx","features/employees/ui/activationPassword.tsx","features/employees/component/NoHostessWarning.tsx","features/cashbox/ui/confirmation.tsx","features/cashbox/ui/settings.tsx","features/cashbox/model/model.tsx","entities/cashbox/model/selectors.ts","pages/ReservesSystemPage.tsx","components/Common/StatisticsDateSelect.tsx","components/Common/DatePickers/RangeDatePicker.tsx","components/Common/CustomDateModal/index.tsx","components/Common/CustomDateModal/CustomDateModal.tsx","containers/StatisticDateCont/StatisticDateCont.tsx","containers/StatisticDateCont/index.ts","components/Home/InitMessages.tsx","components/Home/FirstStepConnectSystemMessage.tsx","components/Home/ConnectSystemModal/PinCode.tsx","components/Home/ConnectSystemModal/ConnectSystemForm.jsx","components/Home/ConnectSystemModal/ConnectInstruction.tsx","components/Home/ConnectSystemModal/index.tsx","components/Home/HomeStatistics/HomeStatisticItem.tsx","components/Home/HomeStatistics/HomeStatisticTable.tsx","components/Common/Charts/ReserveStatisticChart.jsx","components/Home/HomeStatistics/index.tsx","containers/Home/HomeCont.tsx","containers/Home/index.ts","containers/Booking/styles.ts","components/Booking/ReserveList/FilterList.tsx","components/Booking/ReserveList/EnhancedTableHead.tsx","components/Booking/ReserveList/index.tsx","components/Common/Icons/ArrowLeft.jsx","components/Common/Icons/ArrowRight.jsx","components/Common/DatePickers/BookingDatePicker.tsx","components/Booking/BookingDate.tsx","containers/Booking/Booking.tsx","containers/Booking/index.ts","components/Statistics/StatisticsTable/StatisticItem.tsx","components/Statistics/StatisticsTable/index.tsx","components/Statistics/StatisticsDiagram/index.tsx","components/Statistics/StatisticsReserveTable/StatisticReserveTableHead.tsx","components/Common/Statistic/StatisticReserveTable/ReserveDetails.tsx","components/Common/Statistic/StatisticReserveTable/ReserveTime.tsx","components/Statistics/StatisticsReserveTable/StatisticsReserveTableItem.tsx","components/Statistics/StatisticsReserveTable/index.tsx","containers/Statistics/StatisticsCont.tsx","containers/Statistics/index.ts","components/Common/CreateRestaurantModal/Yandex/SearchAddress.tsx","components/Common/CreateRestaurantModal/styles.ts","components/Common/CreateRestaurantModal/Yandex/useScript.js","components/Common/CreateRestaurantModal/Yandex/Map.tsx","components/Common/CreateRestaurantModal/CreateRestaurantModalComp.tsx","components/Common/CreateRestaurantModal/index.tsx","components/Common/Preloader.tsx","components/Common/Statistic/StatisticTable/UserStatisticTableItem.tsx.tsx","components/UserStatistic/UserStatisticTable/index.tsx","components/UserStatistic/UserCard/index.tsx","components/UserStatistic/UserReserveTable/UserStatisticReserveTableHead.tsx","components/UserStatistic/UserReserveTable/UserStatisticsReserveTableItem.tsx","components/UserStatistic/UserReserveTable/index.tsx","components/Common/BackButton.tsx","containers/UserStatistic/UserStatisticCont.tsx","containers/UserStatistic/index.ts","components/SourceStatictic/SourceCard/index.tsx","components/SourceStatictic/SourceStatisticTable/index.tsx","components/SourceStatictic/SourceReserveTable/SourceStatisticReserveTableHead.tsx","components/SourceStatictic/SourceReserveTable/SourceStatisticsReserveTableItem.tsx","components/SourceStatictic/SourceReserveTable/index.tsx","containers/SourceStatistic/SourceStatisticCont.tsx","containers/SourceStatistic/index.ts","components/Common/AuthIikoModal/FirstStep.tsx","components/Common/AuthIikoModal/SecondStep.tsx","components/Common/AuthIikoModal/AuthIikoErrorMessages.tsx","components/Common/AuthIikoModal/index.tsx","containers/AuthIikoModalCont/AuthIikoModal.tsx","containers/AuthIikoModalCont/index.ts","components/Common/DrawerAndHeader/styles.ts","components/Common/Header/RestaurantSelect.tsx","components/Common/Icons/UserIcon.tsx","components/Common/Icons/PushIcon.tsx","components/Common/Icons/PlaceholdersIcon.tsx","components/Common/Header/Header.tsx","components/Common/Icons/HomeIcon.tsx","components/Common/Icons/BookingIcon.tsx","components/Common/Icons/SettingsIcon.tsx","components/SideBar/SideBarItem.tsx","components/Common/Icons/StatisticIcon.tsx","components/SideBar/SideBar.tsx","components/Common/DrawerAndHeader/DrawerAndHeaderComp.tsx","components/Common/Snackbar/Notifier.jsx","pages/NotFoundPage.jsx","components/CountdownWrapper.tsx","containers/SocketErrorScreenCont/SocketErrorScreen.tsx","containers/SocketErrorScreenCont/index.ts","components/Reservations/View/RestaurantIcons/index.tsx","components/Common/Icons/ArrowTop.jsx","components/Common/Icons/ArrowBottom.jsx","components/Reservations/View/index.tsx","components/Common/TextFieldComp.tsx","components/Common/TextAreaComp.tsx","components/Reservations/PhoneField.tsx","components/Common/CircleCheckBox.tsx","components/Reservations/ReserveSectionSelect.tsx","components/Common/DatePickers/ReserveDatePicker.tsx","components/Reservations/ReservePersonSelect.tsx","components/Reservations/ReserveTimeSelect.tsx","helpers/normalizeDurationHours.tsx","components/Reservations/ReservesDataFields.tsx","components/Reservations/styles.ts","components/Reservations/Nav/Item.tsx","components/Reservations/Nav.tsx","components/Reservations/index.tsx","helpers/genDurationFromHours.tsx","containers/ReservationPageCreateCont/ReserveCreatePage.tsx","containers/Reservation/actions.ts","containers/ReservationPageCreateCont/index.ts","containers/ReservationPageConfirmCont/ReserveConfirmPage.tsx","containers/ReservationPageConfirmCont/selectors.ts","containers/ReservationPageConfirmCont/index.ts","components/Booking/DeleteReserveModal.tsx","containers/ReservationPageEditCont/ReserveEditPage.tsx","containers/ReservationPageEditCont/index.ts","pages/ReservationsPage.tsx","components/Common/Notifications/Snackbar/Header.tsx","components/Common/Notifications/Snackbar/index.tsx","components/Common/Notifications/Snackbar/BodyItem.tsx","components/Common/Notifications/Snackbar/BodyVisits.tsx","components/Common/Notifications/Snackbar/Call/Body.tsx","components/Common/Notifications/Snackbar/Call/Footer.tsx","components/Common/Notifications/Snackbar/Reserve/Body.tsx","components/Common/Notifications/Snackbar/Reserve/Footer.tsx","components/Common/Notifications/index.tsx","routers/CabinetPage/CabinetPage.tsx","routers/CabinetPage/index.ts","components/Common/ProtectedRoute.jsx","pages/ConfirmationPage.jsx","components/Common/CheckBoxComp.tsx","components/Auth/SigInForm.tsx","containers/Auth/AuthCont.tsx","containers/Auth/index.ts","components/Auth/RegistrationForm.tsx","containers/Registration/RegisterCont.tsx","containers/Registration/index.ts","components/RestorePassword/RestorePasswordForm.tsx","containers/ResetPassword/ResetPassword.tsx","containers/ResetPassword/index.ts","pages/ThanksYouPage.jsx","pages/RulesPage.jsx","components/RestorePassword/NewPasswordForm.tsx","containers/SendNewPassword/SendNewPassword.tsx","containers/SendNewPassword/index.ts","pages/employees/confirmation.tsx","features/employees/model/model.tsx","routers/index.tsx","containers/App/AppComp.tsx","containers/App/App.tsx","index.jsx","images/logo.svg","audio/GuestMe-Bell.wav"],"names":["history","createBrowserHistory","SIGN_UP_REQUEST","SIGN_UP_SUCCESS","SIGN_UP_ERROR","SIGN_IN_REQUEST","SIGN_IN_ERROR","SIGN_IN_SUCCESS","SIGN_OUT","GET_SESSION_REQUEST","GET_SESSION_SUCCESS","GET_SESSION_FAIL","CONFIRM_EMAIL_REQUEST","CONFIRM_EMAIL_SUCCESS","CONFIRM_EMAIL_ERROR","CONFIRM_EMAIL_RESEND","initState","user","undefined","error","loading","getSessionProcess","confirmEmailProcess","confirmEmailStatus","authorized","AuthReducer","state","arguments","length","action","type","ActionTypes","Object","objectSpread","payload","activated","INIT_BOOKING_PAGE","INIT_BOOKING_PAGE_SUCCESS","INIT_BOOKING_PAGE_ERROR","GET_BOOKING_REQUEST","GET_BOOKING_SUCCESS","GET_BOOKING_ERROR","SWITCH_BOOKING_ACTIVE","SORT_BOOKING_LIST","SET_FILTERS","OPEN_EDIT_RESERVE_MODAL","CLOSE_EDIT_RESERVE_MODAL","UPDATE_RESERVE_REQUEST","UPDATE_RESERVE_SUCCESS","UPDATE_RESERVE_ERROR","GET_FREE_TABLES_REQUEST","GET_FREE_TABLES_SUCCESS","GET_FREE_TABLES_ERROR","OPEN_CREATE_RESERVE_MODAL","CLOSE_CREATE_RESERVE_MODAL","OPEN_CONFIRM_RESERVE_MODAL","CLOSE_CONFIRM_RESERVE_MODAL","CREATE_RESERVE_REQUEST","CREATE_RESERVE_ERROR","CREATE_RESERVE_SUCCESS","CONFIRM_RESERVE_REQUEST","CONFIRM_RESERVE_SUCCESS","CONFIRM_RESERVE_ERROR","GET_RESERVE_INFO_SUCCESS","GET_RESERVE_INFO_ERROR","REJECT_NEW_RESERVE_REQUEST","REJECT_NEW_RESERVE_SUCCESS","REJECT_NEW_RESERVE_ERROR","SET_ACTIVE_TABLE_REQ","SET_ACTIVE_TABLE_SUCCESS","RESET_ACTIVE_TABLE","SET_MAX_CAPACITY","MERGE_TABLES_REQ","MERGE_TABLES_SUCCESS","MERGE_TABLES_ERROR","FETCH_OPEN_RESERVES","FETCH_OPEN_RESERVES_SUCCESS","FETCH_OPEN_RESERVES_ERROR","RESET_OPEN_RESERVES","ADD_OPEN_RESERVE","REMOVE_OPEN_RESERVE","CONFIRM_OPEN_RESERVE","CONFIRM_OPEN_RESERVE_SUCCESS","CONFIRM_OPEN_RESERVE_ERROR","REJECT_OPEN_RESERVE","REJECT_OPEN_RESERVE_SUCCESS","REJECT_OPEN_RESERVE_ERROR","Routers","main","auth","login","resPassword","registration","cabinet","home","booking","statistics","settings","servicesInfo","reservesSystem","restaurantScheme","cardMenu","cardAction","cardSettings","userStatistics","sourceStatistics","confirmation","thanks","rules","newPassword","reserve","employees","employeeConfirmation","profile","cardFieldType","phone","site","extras","kitchen","schedule","priceLevel","name","about","description","bookingProcessor","bookingDuration","isAutoBookingEnabled","autoBookingMinTimeElapsed","autoBookingMinFreeTables","autoBookingMaxNumberEmptySeats","isSchemasEnabled","isTelegramNotificationEnabled","telegramNotificationUsernames","autoBooking","api","cashBox","dashBoardDates","today","tomorrow","seven","fourteen","twentyEight","sixty","firstMonth","secondMonth","currentMonth","custom","workTimes","reserveState","ACCEPTED","DECLINED","GUEST_DECLINE","RESTAURATEUR_DECLINE","UNKNOWN_DECLINE","CREATED","SENT","CLOSED","IN_PROGRESS","PATCHING","ERROR","NEED_PREPARE_TABLE","GUEST_IS_LATE","UNKNOWN","CANCELING","CANCELED","editableReserveStates","localStorageItems","autoBookingSchedule","filters","reserveSource","reserveModal","EDIT","CONFIRM","NEW","emptyTime","emptyString","weekDays","MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY","phoneCode","ru","key","code","firstLabel","secondLabel","title","ukr","est","uz","am","ge","kz","ae","us","az","by","kg","tm","sortPhoneCodeByTitle","a","b","nameA","toUpperCase","nameB","getPhoneCodes","firstCountryKey","sortByTitle","codes","values","sort","concat","toConsumableArray","filter","item","isInit","bookingList","getBookingInfoProcess","getBookingInfoError","currentStatisticDate","moment","format","onlyActive","orderBy","order","value","active","reducer","BookingActions","reserves","_action$payload","date","map","id","updatedReserve","localStorage","setItem","JSON","stringify","_action$payload2","resetFilters","updateFilters","f","CONNECT_RESTAURANT_SUCCESS","RESET_CONNECT_STATUS","AUTH_FORM_IIKO_REQUEST","AUTH_FORM_IIKO_SUCCESS","AUTH_FORM_IIKO_ERROR","GET_ORGANIZATION_LIST_FORM_IIKO_ERROR","SELECT_ORGANIZATION_REQUEST","SELECT_ORGANIZATION_SUCCESS","SELECT_ORGANIZATION_ERROR","SWITCH_PIN_CODE_MODAL","CLOSE_PIN_CODE_MODAL_STATE","OPEN_PIN_CODE_MODAL_STATE","SWITCH_RESERVE_PROCESSOR_REQUEST","SWITCH_RESERVE_PROCESSOR_SUCCESS","SWITCH_RESERVE_PROCESSOR_ERROR","GET_STATISTIC_REQUEST","GET_STATISTIC_SUCCESS","GET_STATISTIC_ERROR","GET_ATTENDANCE_REQUEST","GET_ATTENDANCE_SUCCESS","GET_ATTENDANCE_ERROR","GET_RESTAURANT_PIN_CODE_REQUEST","GET_RESTAURANT_PIN_CODE_SUCCESS","GET_RESTAURANT_PIN_CODE_ERROR","DELETE_RESTAURANT_REQUEST","DELETE_RESTAURANT_SUCCESS","DELETE_RESTAURANT_ERROR","GET_SECTION_REQUEST","GET_SECTION_REQUEST_SUCCESS","GET_SECTION_REQUEST_ERROR","INIT_START","INIT_END","GET_RESTAURANT_LIST_REQUEST","GET_RESTAURANT_LIST_SUCCESS","GET_RESTAURANT_LIST_ERROR","CREATE_RESTAURANT_REQUEST","CREATE_RESTAURANT_SUCCESS","CREATE_RESTAURANT_ERROR","CREATE_RESTAURANT_RESET_SUCCESS_STATUS","SET_CURRENT_RESTAURANT","OPEN_MODAL","CLOSE_MODAL","SHOW_WARNING","HIDE_WARNING","UPDATE_RESTAURANT_LIST","SWITCH_IIKO_MODAL","CHECK_RESTAURANT_FROM_IIKO_REQUEST","NEED_AUTH_FROM_IIKO","CASHBOX_CONNECT_STATUS_REQUEST","CASHBOX_CONNECT_STATUS_SUCCESS","CASHBOX_CONNECT_STATUS_ERROR","CASHBOX_PLUGIN_STATUS_REQUEST","CASHBOX_PLUGIN_STATUS_SUCCESS","CASHBOX_PLUGIN_STATUS_ERROR","SWITCH_CUSTOM_DATE_MODAL","CHANGE_CUSTOM_DATE","phoneUtil","PhoneNumberUtil","getInstance","getPercentDiff","previous","current","previousResult","currentResult","Math","round","getMoneySymbol","countryCode","saveCurrentRestaurantIdToLocalStorage","removeItem","getCurrentRestaurantIdFromLocalStorage","storage","getItem","parse","isNaN","parsePhone","input","region","regions","i","phoneNumber","parseAndKeepRawInput","isValidNumberForRegion","sortWeekdays","scheduleList","sorter","parseTimeToInt","time","parseTime","split","slice","join","parseInt","getNextWeekDay","day","getMergedSchedule","reduce","group","records","_objectSpread2","nextDay","start","end","forEach","defineProperty","getBookingGroupsForForceUpdate","days","groups","newTimes","mergedGroups","list","indexOf","parseScheduleStart","parseNewStart","parseScheduleEnd","parseNewEnd","overMidnight","newEndOverMidnight","r","getGroupsForUpdate","row","initRow","g","d","_","find","isWorkingTime","getNewGroupForCreate","newRow","initRows","restaurantId","difference","getScheduleForDelete","initDays","ids","getSchedulesRows","_ref","array","Group","props","By","getGroupedItems","returnArray","push","arrayRecord","keys","groupBy","_records$filter","s","thisDay","slicedToArray","_records$filter3","floor","random","parseDateForStatisticReq","period","endOf","from","startOf","to","subtract","monthForPeriodPicker","month","getPeriod","diffDays","diff","getDateFormat","roundCurrentTimeBy","interval","ceil","getSelectedTimeFromByNewDate","oldTimeList","newTimeList","oldTime","t","label","parseTimeByString","hours","minutes","generateTimeList","timeList","stop","add","getTimeList","isEdit","timeLabels","selectedDate","weekDay","locale","currentWorkTime","workTime","parseStart","parseEnd","isToday","notWorkingTime","isPastTime","currentTime","startTime","endTime","findIndex","unshift","previousDay","previousDayStart","previousDayEnd","getBookingStatus","currentDate","bookingDate","dateDiff","parseDateForReq","getHoursAndMinutes","ms","h","m","restaurantList","audioNotification","createRestaurantError","createRestaurantSuccess","currentRestaurant","moneySymbol","modalOpen","modalAuthIikoOpen","warningOpen","iikoAuth","needAuthFromIiko","organizationList","step","cashBoxStatus","cashBoxPlugins","bookingQueue","StatisticCustomDateModalOpen","StatisticDate","restaurants","savedRestaurantId","x","address","restaurant","iikoOrganizationId","connectError","connectStatus","pinCodeModal","getStatisticError","getAttendanceProcess","getAttendanceError","currentRestaurantStatistic","currentRestaurantAttendance","pinCode","timeLeft","connectProcess","HomeActionTypes","GET_MENU_REQUEST","GET_MENU_SUCCESS","GET_MENU_ERROR","GET_MENU_FROM_IIKO_REQUEST","GET_MENU_FROM_IIKO_SUCCESS","GET_MENU_FROM_IIKO_ERROR","CHANGE_VISIBLE_MENU_LIST_ITEM","OPEN_ALL_MENU","CLOSE_ALL_MENU","mergeMenu","menuT","menu","categories","assign","apply","category","open","items","categoryId","parentCategoryId","changeVisibleForAll","menuList","changeVisibleById","GET_PROGRAMS_REQUEST","GET_PROGRAMS_SUCCESS","GET_PROGRAMS_ERROR","LOAD_PROGRAMS_REQUEST","LOAD_PROGRAMS_SUCCESS","LOAD_PROGRAMS_ERROR","programList","GET_IMAGES_REQUEST","GET_IMAGES_SUCCESS","GET_IMAGES_ERROR","UPLOAD_IMAGE_REQUEST","UPLOAD_IMAGE_SUCCESS","UPLOAD_IMAGE_ERROR","HIDE_IMAGE_REQUEST","HIDE_IMAGE_SUCCESS","HIDE_IMAGE_ERROR","SHOW_IMAGE_REQUEST","SHOW_IMAGE_SUCCESS","SHOW_IMAGE_ERROR","SET_COVER_REQUEST","SET_COVER_SUCCESS","SET_COVER_ERROR","HIDE_MAIN_IMAGE_REQUEST","HIDE_MAIN_IMAGE_SUCCESS","HIDE_MAIN_IMAGE_ERROR","images","imagesList","img","imageId","isHidden","newMainId","isMain","hideImgId","UPDATE_RESTAURANT_TABLE_REQUEST","UPDATE_RESTAURANT_TABLE_SUCCESS","UPDATE_RESTAURANT_TABLE_ERROR","GET_ALL_TABLE_REQUEST","GET_ALL_TABLE_SUCCESS","GET_ALL_TABLE_ERROR","GET_SUMMARY_STATISTICS_REQUEST","GET_SUMMARY_STATISTICS_SUCCESS","GET_SUMMARY_STATISTICS_ERROR","OPEN_BOOKING_DETAILS","OPEN_BOOKING_DETAILS_SUCCESS","OPEN_BOOKING_DETAILS_ERROR","GET_SOURCE_STATISTIC_REQUEST","GET_SOURCE_STATISTIC_SUCCESS","GET_SOURCE_STATISTIC_ERROR","GET_RESERVES_BY_SOURCE_REQUEST","GET_RESERVES_BY_SOURCE_SUCCESS","GET_RESERVES_BY_SOURCE_ERROR","GET_SOURCE_INFO_REQUEST","GET_SOURCE_INFO_SUCCESS","GET_SCHEDULE_LIST_REQUEST","GET_SCHEDULE_LIST_SUCCESS","GET_SCHEDULE_LIST_ERROR","UPDATE_SCHEDULE_REQUEST","UPDATE_SCHEDULE_SUCCESS","UPDATE_SCHEDULE_ERROR","FORCE_UPDATE_BOOKING_SCHEDULE","FORCE_DELETE_BOOKING_SCHEDULE","DELETE_SCHEDULE_ROW_REQUEST","DELETE_SCHEDULE_ROW_SUCCESS","DELETE_SCHEDULE_ROW_ERROR","ADD_SCHEDULE_ROW","UPDATE_FREE_DAYS","GET_USER_STATISTIC_REQUEST","GET_USER_STATISTIC_SUCCESS","GET_USER_STATISTIC_ERROR","isLoading","loadingRequests","SettingsActionTypes","CabinetActionsTypes","ReserveModalActionsTypes","PhotoActionsTypes","BookingActionsTypes","StatisticsActionsTypes","UserStatisticActionsTypes","SchedulesActionTypes","SourceStatisticActionsTypes","newLoadingRequests","RESTORE_PASSWORD_REQUEST","RESTORE_PASSWORD_SUCCESS","RESTORE_PASSWORD_ERROR","SEND_NEW_PASSWORD_REQUEST","SEND_NEW_PASSWORD_SUCCESS","SEND_NEW_PASSWORD_ERROR","userEmail","restorePasswordError","sendNewPasswordError","restorePasswordSuccess","sendNewPasswordSuccess","RestorePasswordReducer","email","REJECT_RESERVE_REQUEST","REJECT_RESERVE_SUCCESS","REJECT_RESERVE_ERROR","activeTables","previousActiveTables","editReserveModalIsOpen","createReserveModalIsOpen","createReserveModalInitialData","confirmReserveModalIsOpen","currentReserve","editReserveInfo","freeTables","sections","maxCapacity","isMergeTables","ReserveActionsTypes","activeTable","tables","at","ReserveRejectActions","RestaurantActions","initialData","reserveInfo","capacity","mergeTables","UPDATE_RESTAURANT_INFO_REQUEST","UPDATE_RESTAURANT_INFO_SUCCESS","UPDATE_RESTAURANT_INFO_ERROR","updateError","updateProcess","updateStatus","SWITCH_RESERVE_SCHEDULE_TYPE_REQUEST","SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS","SWITCH_RESERVE_SCHEDULE_TYPE_ERROR","SET_SECTION_ID","isActiveRestaurantSchedule","sectionId","bookingSchedules","CREATE_WIDGET_REQUEST","CREATE_WIDGET_SUCCESS","CREATE_WIDGET_ERROR","UPDATE_WIDGET_REQUEST","UPDATE_WIDGET_SUCCESS","UPDATE_WIDGET_ERROR","DELETE_WIDGET_REQUEST","DELETE_WIDGET_SUCCESS","DELETE_WIDGET_ERROR","GET_ALL_WIDGETS_REQUEST","GET_ALL_WIDGETS_SUCCESS","GET_ALL_WIDGETS_ERROR","widgets","RestaurantWidgetsReducer","newWidget","w","widgetId","widget","defaultFreeDays","bookingRows","bookingFreeDays","restaurantRows","restaurantSchedules","restaurantFreeDays","restaurantWorkTimes","getFieldName","field","rows","schedules","freeDays","changeFreeDays","activate","changeFreeDaysForUpdatesDays","deactivate","_objectSpread3","fields","newValue","_objectSpread5","_action$payload3","_getFieldName2","newRows","newSchedules","_action$payload4","newDays","_action$payload5","rowId","summary","averageReceiptAmount","total","totalCancelledByGuest","totalCancelledByRestaurant","totalClosed","totalDeclined","totalGuests","totalNewGuests","totalReceiptAmount","pie","pages","size","first","last","totalPages","totalElements","bookingsOrders","StatisticReducer","bookingId","sourceInfo","createdDate","lastReserve","isActive","statistic","commissionAmount","UStatisticReducer","sourceStats","reserveList","source","ENQUEUE_SNACKBAR","REMOVE_SNACKBAR","CUSTOM_ERROR","CUSTOM_MESSAGE","CUSTOM_SNACKBAR","defaultState","notifications","SnackbarsReducer","notification","tableList","getTableError","userInfo","firstVisit","lastVisit","userStats","userReserves","SOCKET_RESERVE_CREATED","SOCKET_RESERVE_CONFIRMATION","SOCKET_RECONNECT","SET_SOCKET_CONNECT_STATUS","socketIsConnect","socketIsReconnect","isConnect","FETCH_RESTAURANT_CALLS","FETCH_RESTAURANT_CALLS_SUCCESS","FETCH_RESTAURANT_CALLS_ERROR","RESET_RESTAURANT_CALLS","ADD_RESTAURANT_CALL","REMOVE_RESTAURANT_CALL","calls","call","SET_NOTIFICATIONS","RESET_NOTIFICATIONS","TOGGLE_NOTIFICATIONS","CLOSE_NOTIFICATIONS","OPEN_NOTIFICATIONS","ADD_NOTIFICATION","REMOVE_NOTIFICATION","TOGGLE_NOTIFICATION","IDLE","getKey","SET_APP_RESERVES","ADD_APP_RESERVE","REMOVE_APP_RESERVE","OPEN_APP_RESERVE","CLOSE_APP_RESERVE","TOGGLE_APP_RESERVES","CHANGE_APP_RESERVE","OUTER_CHANGE_APP_RESERVE","openKey","lastKey","selectedReserve","closeKey","Error","changed","reserveId","outerChangeType","systems","clientId","secretKey","yandexMapAPIKey","host","process","account","token","confirmEmail","confirmEmailResend","registerRestaurateur","restaurantTable","restaurateur","restaurateurBooking","restaurantWidget","bookingJournal","statisticSummary","statisticPie","statisticGuest","websocket","programs","loadsPrograms","menuRestaurant","restaurantSchedule","restaurantScheduleGroup","restaurantScheduleGroups","restorePasswordInit","restorePasswordFinish","restaurantCalls","REMEMBER_ME_KEY","getToken","tokenName","sessionStorage","setRememberMe","remember","window","setTokens","accessToken","refreshToken","getAccessToken","getRefreshToken","deleteTokens","getColor","color","getSchema","data","uuid","lastModifiedDate","width","height","elements","marks","element","rectangles","ellipses","z","fallbackValue","isShowHeader","isEmailRequired","isLastNameRequired","colors","mainColor","formBackground","pageBackground","formHeaderColor","formBaseColor","formFieldColor","adapt","result","variable","transform","_regeneratorRuntime","exports","Op","prototype","hasOwn","hasOwnProperty","obj","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","enumerable","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","this","getProto","getPrototypeOf","NativeIteratorPrototype","Gp","defineIteratorMethods","method","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","reject","invoke","record","__await","then","unwrapped","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","return","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","val","object","reverse","pop","skipTempReset","prev","charAt","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","dataProp","res","interval5minInMs","queryWithRetry","requestFunction","params","retries","maxInterval","_callee","lastError","intervalMs","delayMs","_context","t0","response","String","status","delay","axios","withCredentials","interceptors","request","use","config","configResult","url","ConfigAPI","headers","Authorization","refreshTokenReq","userData","base64BasicKey","btoa","post","originalRequest","useDispatch","dispatch","_retry","access_token","refresh_token","tokenReq","password","registerRestaurateurReq","postData","firstName","lastName","confirmEmailReq","get","activation-key","remember-me","confirmEmailResendReq","getAccountReq","createRestaurantReq","restaurantReqData","telegramNotificationSettings","isEnabled","country","city","street","point","coordinates","lat","y","lon","placeId","updateRestaurantReq","restaurantInfo","put","getRestaurantPluginsInfoReq","getAllTableForRestaurantReq","deleteRestaurantReq","delete","updateTableReq","getAllRestaurantReq","getAllBookingsByRestaurantId","dateFrom","dateTo","scheduled","getOpenReserves","getAllBookingsByRestaurantIdWithPageable","page","final","getAllBookingsByUserPhone","guest-phone","getAllBookingBySource","source-id","getRestaurantStatistic","getSummaryStatistic","getStatisticPie","getGuestStatistic","userPhone","getUserVisitInfo","getSourceStatisticReq","getRestaurantAttendance","createReserveReq","_ref2","duration","persons","comment","isBanquet","reqData","getFreeTablesReq","adaptSection","schema","getSectionTablesReq","mapFp","getReserveInfo","sendRejectReserveRequest","patchReserveReq","patch","confirmReserveReq","authIikoReq","authData","getOrganizationFromIiko","selectOrganizationReq","organizationId","checkRestaurantFromIikoReq","getProgramsReq","loadProgramsReq","getScheduleGroupReq","createScheduleGroupReq","updateScheduleGroupReq","deleteScheduleGroupReq","getRestaurantMenuReq","getRestaurantMenuFromIikoReq","_ref3","switchBookingProcessorReq","_ref4","processorType","reserveProcessor","cashBoxConnectStatusReq","getRestaurantPinCodeReg","restorePasswordReq","Content-Type","sendNewPasswordReq","getImageReq","uploadImageReq","image","formData","FormData","append","hideImageReq","showImageReq","setImageAsCoverReq","createWidgetReq","widgetTransform","widgetAdapt","getAllWidgetsReq","deleteWidgetReq","updateWidgetReq","getOrderByBookingIdReq","getRestaurantCallsReq","states","queryStates","getEmployeesRequest","getCurrentEmployeeRequest","getCreateEmployeeRequest","employeeData","getUpdateEmployeeRequest","getDeleteEmployeeRequest","getSendActivationEmailEmployeeRequest","getEmployeeByActivationKeyRequest","getActivateEmployeeRequest","getResetEmployeePasswordRequest","getCashboxStatusRequest","getCashboxDeleteRequest","hwid","signUp","signUpError","signIn","signInSuccess","signInError","signOut","getSession","i18next","init","lng","debug","resources","locales","react","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","AuthSagas_regeneratorRuntime","_marked","setToken","_marked2","signUpSaga","_marked3","confirmEmailSaga","_marked4","confirmEmailResendSaga","_marked5","signInSaga","_marked6","getSessionSaga","_marked7","signOutSaga","_marked8","saga","tokenData","Token","Api","_context2","message","has","AuthActions","_context3","errorText","_context4","User","_context5","_context6","_context7","console","log","signInSuccessSaga","_action$payload$user","Sentry","toString","_context8","all","takeLatest","restorePassword","sendNewPassword","RestorePasswordSagas_regeneratorRuntime","RestorePasswordSagas_marked","RestorePasswordSagas_marked2","RestorePasswordSagas_marked3","deleteRestaurant","getSections","getSectionSuccess","RestaurantsSectionsSaga_regeneratorRuntime","RestaurantsSectionsSaga_marked","fetchSections","RestaurantsSectionsSaga_marked2","RestaurantsSectionsSaga_marked3","sortBy","openReserveEditModal","closeReserveEditModal","updateReserve","newReserveInfo","updateReserveSuccess","getFreeTables","getFreeTablesSuccess","getFreeTablesError","openReserveCreateModal","closeReserveCreateModal","createReserve","createReserveError","getReserveInfoSuccess","closeReserveConfirmModal","confirmReserve","confirmReserveSuccess","rejectNewReserve","rejectNewReserveSuccess","setActiveTable","resetActiveTable","setActiveTableSuccess","getTableData","fetchOpenReservesSuccess","removeOpenReserve","manually","confirmOpenReserve","confirmOpenReserveSuccess","rejectOpenReserve","rejectOpenReserveSuccess","rejectReserve","removeSnackbar","customErrorShackBar","customMessageShackBar","getReserveFormName","modalName","toggleNotifications","closeNotifications","addNotification","removeNotification","toggleNotification","idle","addAppReserve","removeAppReserve","openAppReserve","closeAppReserve","options","toggleAppReserves","changeAppReserve","selectorTableSections","selectorTableSectionsAvailable","createSelector","section","table","isBookingAllowed","normalizeOption","section2option","selectorSectionOptions","selectorSectionAvailableOptions","useWindowSize","_useState","useState","_useState2","windowSize","setWindowSize","useEffect","handleResize","innerWidth","innerHeight","addEventListener","removeEventListener","sortNotifications","sortOrderA","getSortOrder","sortOrderB","selectorOpenModal","selectorForm","formName","formValueSelector","sectionIdSelector","openModal","selectorCurrentSection","Number","selectorFreeTables","includes","selectorCurrentSectionSchema","notificationsSelector","selectorSelectedAppReserve","appReserves","selectorLastAppReserve","selectorAlreadySelectedTables","selectedTableDate","accumulator","j","ReservationsPageSagas_regeneratorRuntime","ReservationsPageSagas_marked","reserveRejectSaga","ReservationsPageSagas_marked2","editReserveSaga","ReservationsPageSagas_marked3","updateReserveSuccessSaga","ReservationsPageSagas_marked4","confirmReserveSuccessSaga","ReservationsPageSagas_marked6","getFreeTablesSaga","ReservationsPageSagas_marked7","createReserveSaga","ReservationsPageSagas_marked8","openNewReserveModalSaga","_marked9","confirmNewReserveSaga","_marked10","rejectNewReserveSaga","_marked11","getMaxCapacitySaga","_marked12","setActiveTableSaga","_marked13","mergeTablesSaga","_marked14","fetchOpenReserves","_marked15","removeOpenReserveSaga","_marked16","confirmOpenReserveSaga","_marked17","openReserveSuccessSaga","_marked18","rejectOpenReserveSaga","_marked19","openReserveErrorSaga","_marked20","setActiveTableSuccessSaga","_marked21","openReserveModalSaga","_marked22","ReserveModalActions","select","currentRestaurantSelector","activeTablesObj","activeTablesArr","freeTablesMap","_activeTablesArr$redu","isIncludeReserveTables","newFreeTables","findTableBySection","reserveFormName","form","currentReserveSection","currentFreeTables","rInfo","parseTableList","number","getFormValues","isUndefined","aT","fork","_context9","_context10","_context11","_yield$select","newTable","activeTablesId","newActiveTables","_context12","hall","_context13","store","_context14","_context15","responseReserve","_context16","_context17","_context18","_context19","_context20","_context21","_context22","RejectReserveActionTypes","takeEvery","initBookingPages","initBookingPagesSuccess","initBookingPageError","getBookingList","getBookingSuccess","getBookingError","switchBookingFilter","sortBookingList","filterBookingListBy","parseTableHall","parsingMergedTables","validateReserveFields","validateConfirmReserveFields","parseReserves","canceledBy","BookingSagas_regeneratorRuntime","BookingSagas_marked","initBookingPageSaga","BookingSagas_marked2","getAllBookingsSaga","BookingSagas_marked3","setFiltersSaga","BookingSagas_marked4","storageFilters","newFilters","t1","isNull","activeFilters","ReserveModalActionTypes","ReserveRejectActionsTypes","getTablesForSettings","getTablesForSettingsSuccess","updateRestaurantTable","RestaurantsTables_regeneratorRuntime","RestaurantsTables_marked","getAllTablesSaga","RestaurantsTables_marked2","updateRestaurantTableSaga","RestaurantsTables_marked3","sortTableList","Array","isArray","initStarting","getRestaurantListSuccess","getRestaurantError","addRestaurant","resetRestaurantSuccessStatus","setCurrentRestaurant","openCreateModal","closeCreateModal","switchAuthIikoModal","getCashBoxConnectStatus","getCashBoxConnectStatusSuccess","getCashBoxPluginsStatus","hideWarning","switchCustomDateModal","changeCustomDate","getScheduleList","updateFreeDays","addNewScheduleRow","updateSchedule","updateScheduleSuccess","updateScheduleError","deleteScheduleRow","deleteScheduleRowSuccess","forceUpdateBookingSchedule","isSomePluginUpdateRequired","property","plugins","some","plugin","actual","isUpdateRequired","isSubVersionUpdateRequired","isVersionUpdateRequired","isCashBoxUpdateRequired","selectorRestaurant","selectorRestaurantId","useRestaurantId","useSelector","CabinetSagas_regeneratorRuntime","CabinetSagas_marked","initCabinetSaga","CabinetSagas_marked2","getRestaurantListSaga","CabinetSagas_marked3","setSentryContext","CabinetSagas_marked4","addRestaurantSaga","CabinetSagas_marked5","checkRestaurantFromIikoSaga","CabinetSagas_marked6","getCashBoxConnectStatusSaga","CabinetSagas_marked7","getCashBoxPluginsStatusSaga","CabinetSagas_marked8","_yield$call","content","Notification","requestPermission","e","_yield$call2","restaurantData","getRestaurantPinCode","ActionsTypes","getRestaurantPinCodeSuccess","resetConnectStatus","switchPinCodeModal","closePinCodeModal","switchBookingProcessor","authFromIiko","authFromIikoSuccess","selectOrganization","getRestaurantStatistics","getRestaurantStatisticsSuccess","getRestaurantAttendances","getRestaurantAttendancesSuccess","attendance","HomeSagas_regeneratorRuntime","HomeSagas_marked","getRestaurantPinCodeSaga","HomeSagas_marked2","switchPinCodeModalSaga","HomeSagas_marked3","authRestaurantToIikoSaga","HomeSagas_marked4","selectOrganizationFromIikoSaga","HomeSagas_marked5","switchBookingProcessorSaga","HomeSagas_marked6","getRestaurantStatisticSaga","HomeSagas_marked7","getRestaurantAttendanceSaga","HomeSagas_marked8","_response$data","_response$data2","defaultDate","totalSuccessful","totalCanceled","totalExpectingGuests","totalSkipped","toFixed","percent","reqDate","attendanceDate","dateFormat","labels","getRestaurantMenuFromIikoSuccess","getRestaurantMenuSuccess","MenuSagas_regeneratorRuntime","MenuSagas_marked","getMenuRestaurantSaga","MenuSagas_marked2","getRestaurantMenuFromIikoSaga","MenuSagas_marked3","isEmpty","getProgramsSuccess","loadProgramsFromIikoSuccess","PromoSagas_regeneratorRuntime","PromoSagas_marked","getProgramsSaga","PromoSagas_marked2","loadProgramsSaga","PromoSagas_marked3","getStatistics","getStatisticsSuccess","openBookingDetails","onlyNumbers","replace","parseReserveList","parsePhoneNumber","normalizePhone","onlyNums","azPos","azLength","getLocale","StatisticSagas_regeneratorRuntime","StatisticSagas_marked","getStatisticSaga","StatisticSagas_marked2","StatisticSagas_marked3","dateReq","t2","bookingOrders","getUserStatistic","userPhoneNumber","getUserStatisticSuccess","UserStatisticSagas_regeneratorRuntime","UserStatisticSagas_marked","getUserStatisticSaga","UserStatisticSagas_marked2","userVisits","allReserves","mockUser","mockStat","RestaurantSaga_regeneratorRuntime","RestaurantSaga_marked","deleteRestaurantSaga","RestaurantSaga_marked2","updateRestaurantInfo","RestaurantsInfoSagas_regeneratorRuntime","RestaurantsInfoSagas_marked","updateRestaurantInfoSaga","RestaurantsInfoSagas_marked2","newData","priceLvlValue","kitchens","usernames","ReservesSystemActionsTypes","switchReserveSchedule","switchReserveScheduleSuccess","switchSectionId","RestaurantsSettingsSaga_regeneratorRuntime","RestaurantsSettingsSaga_marked","updateBookingScheduleType","RestaurantsSettingsSaga_marked2","prepareForSave","savedSchedule","parsedSchedule","getSourceStatistic","getReservesBySource","getSourceInfo","getSourceInfoSuccess","SourceStatisticSaga_regeneratorRuntime","SourceStatisticSaga_marked","getSourceStatSaga","SourceStatisticSaga_marked2","SourceStatisticSaga_marked3","SourceStatisticSaga_marked4","stats","defaultPeriod","parsePage","errorSnackBar","Date","getTime","variant","anchorOrigin","vertical","horizontal","messageSnackBar","customSnackBar","react_default","createElement","Button","SnackbarsSagas_regeneratorRuntime","SnackbarsSagas_marked","snackbarsSaga","SnackbarsSagas_marked2","errorBody","messageBody","RestaurantsInfoTypes","RestaurantsTablesTypes","PromoActionsTypes","AuthActionsTypes","RestaurantTypes","MenuActionsTypes","WidgetActionTypes","SchedulesSaga_regeneratorRuntime","SchedulesSaga_marked","getScheduleSaga","SchedulesSaga_marked2","deleteScheduleRowSaga","SchedulesSaga_marked3","updateScheduleSaga","SchedulesSaga_marked4","forceDeleteBookingScheduleSaga","SchedulesSaga_marked5","forceUpdateBookingScheduleSaga","SchedulesSaga_marked6","_yield$getScheduleGro","scheduleGroupField","groupType","scheduleGroups","groupsForCreate","groupsIdForDelete","groupsForUpdate","updatedSchedules","newGroups","_days","unionBy","times","idForDelete","_days2","groupsForForceUpdate","showImageSuccess","PhotoSagas_regeneratorRuntime","PhotoSagas_marked","getImagesSaga","PhotoSagas_marked2","uploadImageSaga","PhotoSagas_marked3","switchVisibleImageSaga","PhotoSagas_marked4","setCoverSaga","PhotoSagas_marked5","hideMainImageSaga","PhotoSagas_marked6","_iterator","_step","_createForOfIteratorHelper","n","mainImgId","secondImgId","socketReconnect","setSocketConnectStatus","NEW_NOTIFICATION","fetchRestaurantCallsError","removeRestaurantCall","selectorAuth","selectorIsAuthorized","selectorAuthUserId","useAuthUserId","WebSocketSaga_regeneratorRuntime","WebSocketSaga_marked","watchChannelEvents","WebSocketSaga_marked2","websocketEmitterType","close","connect","connectRestaurant","newReserve","update","newCall","callEnded","websocketError","invalidToken","unknownError","createSocketChannel","eventChannel","emitter","ws","SockJS","transports","client","Stomp","over","onClose","subscribe","body","json","emitterType","isInvalidToken","search","disconnect","channel","event","currentRestaurantId","take","bookingState","websocketSaga","isAuthorized","Infinity","cancelled","audio","require","Sound","src","classCallCheck","sound","document","setAttribute","style","display","appendChild","createClass","play","pause","removeChild","ring","playPromise","setTimeout","destroy","NotificationSaga_regeneratorRuntime","NotificationSaga_marked","reservesNotificationsSaga","NotificationSaga_marked2","icon","logo","createWidget","createWidgetSuccess","updateWidget","getAllWidgets","deleteWidget","WidgetsSaga_regeneratorRuntime","WidgetsSaga_marked","getAllWidgetsSaga","WidgetsSaga_marked2","createWidgetSaga","WidgetsSaga_marked3","updateWidgetSaga","WidgetsSaga_marked4","deleteWidgetSaga","WidgetsSaga_marked5","allWidgets","updatedWidget","RestaurantsCallsSagas_regeneratorRuntime","RestaurantsCallsSagas_marked","fetchRestaurantCallsSaga","RestaurantsCallsSagas_marked2","removeRestaurantCallSaga","RestaurantsCallsSagas_marked3","updateCurrentRestaurantCallsSaga","RestaurantsCallsSagas_marked4","perPage","_this","offset","fiftyFiftyOffset","getDate","getFoldHeight","getUnfoldHeight","getLastVisit","guestLastVisitDate","getTotalVisits","guestTotalVisits","CallNotification","_Notification","_this2","possibleConstructorReturn","valueOf","getFirstName","guestFirstName","getLastName","guestLastName","inherits","ReserveNotification","_Notification2","_this3","getComment","noTailSpaces","clippedComment","substr","getCommentLines","lines","getVisitDate","isTable","getTable","NotificationsSaga_regeneratorRuntime","NotificationsSaga_marked","addNotificationSaga","NotificationsSaga_marked2","playNotificationSaga","NotificationsSaga_marked3","fetchCalls","NotificationsSaga_marked4","addCall","NotificationsSaga_marked5","fetchReserves","NotificationsSaga_marked6","addReserve","NotificationsSaga_marked7","isNotificationsOpen","getRandomInt","min","max","mn","mx","Reserve","originPayload","makeKey","prefix","getFormType","AppReservesSaga_regeneratorRuntime","AppReservesSaga_marked2","addAppReserveSaga","AppReservesSaga_marked3","AppReservesSaga_marked4","openAppReserveSaga","AppReservesSaga_marked5","closeAppReserveSaga","AppReservesSaga_marked6","toggleAppReservesSaga","AppReservesSaga_marked7","openNextKey","formType","removed","nextAppReserve","skipModalClosing","openNext","openIndex","openNewReserve","remove","sagas_regeneratorRuntime","sagas_marked","rootSaga","authSaga","cabinetSaga","reservationsPageSagas","homeSaga","restaurantSaga","restaurantsInfoSagas","restaurantsSettingsSaga","restaurantsSectionsSaga","cardSettingsSaga","bookingSaga","statisticSaga","sourceStatistic","restorePasswordSaga","menuSaga","promotionSaga","userStatistic","schedulesSaga","photoSaga","widgetsSaga","restaurantsCallsSaga","NotificationsSaga","AppReservesSaga","sagaMiddleware","createSagaMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","sentryReduxEnhancer","enhancer","applyMiddleware","routerMiddleware","createStore","combineReducers","reservesSystemInfo","reservesSystemSettings","router","snackbars","promo","photo","openReserves","run","createMuiTheme","typography","h4","fontFamily","fontSize","lineHeight","h5","h6","subtitle1","subtitle2","body1","caption","button","textTransform","useNextVariants","palette","primary","contrastText","secondary","grey","buttonGrey","hover","overrides","MuiButton","root","MuiInput","underline","&:hover:not($disabled):not($focused):not($error):before","borderBottomColor","MuiTooltip","tooltip","maxWidth","padding","MuiMenuItem","&$selected","backgroundColor","fontWeight","&:focus","&:hover","MuiListItem","MuiTouchRipple","rippleVisible","MuiTableCell","head","styles","theme","createStyles","flexGrow","marginTop","breakpoints","down","withStyles","toolbarWrap","flex","background","justifyContent","alignItems","boxShadow","classes","children","className","fullWidth","direction","spacing","ClassNames","Grid","container","wrapSvgPath","path","viewBox","SvgIcon","wrapWithPath","paddingBottom","&:last-child","cursor","marginLeft","Tooltip","HelpIcon","classNames","index","dangerouslySetInnerHTML","__html","borderBottom","spaceBetween","margin","text","helps","subTitle","Typography","gutterBottom","Common_CustomTooltip","EditField","_Component","handleChange","setState","target","handleSetNewChange","_this$state","initValue","handleChangeList","_this$props","suffix","_this$props2","disabled","fieldType","alignCenter","maxLength","endAdornment","EndAdornmentComp","InputAdornment","position","right","TextField","numberFiled","InputLabelProps","shrink","onChange","onBlur","onKeyPress","ev","InputProps","formTextInput","inputProps","Component","defaultProps","textAlign","& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button","opacity","fill","MenuProps","PaperProps","maxHeight","ITEM_HEIGHT","formControl","flexDirection","chips","flexWrap","noLabel","timeFieldsWrap","timeFields","withTheme","onUpdate","onDelete","FormControl","Select","multiple","Input","renderValue","selected","marginRight","MenuItem","free","Icons_TrashIcon","onClick","SchedulePeriodRow","handleUpdateFreeDays","handelUpdateSchedule","handleDeleteScheduleRow","changeState","ScheduleTable_ScheduleRow","fieldEmpty","isEqual","getFreeDays","changeWorkTime","_useState3","_useState4","workTimeList","workDays","workPeriod","getWorkTimeForAutoBooking","currentStart","currentEnd","workStart","workEnd","marginButton","handleAddScheduleRow","BookingPeriodRow","ScheduleTable_SchedulePeriodRow","contentWrap","updateRestaurant","Paper","elevation","Title","Common_FieldWrap","SelfSavingFields_EditField","ScheduleTable","ReservesSystemInfoCont","_PureComponent","_getPrototypeOf2","_len","args","_key","handleUpdateRestaurant","newScheduleInfo","prevProps","_this$props3","_this$props4","ReservesSystemInfo","PureComponent","freeDaysSelectors","rowsSelector","bindActionCreators","SelectItemLIst","nextProps","InputLabel","htmlFor","AutoBookingSwitch","handleSwitchReserveSchedule","activeType","disable","handleSwitchBookingProcessor","handleUpdateRestaurantSettings","bookingProcessorText","Paper_default","SelfSavingFields_SelectItemLIst","ReserveSchedule","ReservesSystemSettingsCont","ReservesSystemSettings","cx","cy","hallRow","tableListItemCheckBox","handleUpdateTable","changeList","CircleActive","FiberManualRecord_default","CircleInactive","IconFlashActive","FlashActive","IconFlashInactive","FlashInactive","handleChangeAllBooking","newState","updatedTables","handleChangeBooking","bookingType","TableRow","TableCell","colSpan","align","Checkbox_default","stopPropagation","checkedIcon","checked","isAutoBookingAllowed","IconButton","left","top","ArrowDropUp_default","ArrowDropDown_default","tabIndex","newTableData","Index","hallList","Table","TableHead","TableBody","Tables_TableLIstItem","SettingsCont","handleGetAllTablesList","Tables","selectorGetHallList","hallIndex","allBookingAndAutoBooking","onlyBooking","ReservesSystemTablesCont","useStyles","makeStyles","paperContent","blockLabelContainer","blockLabel","& li","tgLabel","marginBottom","counter","ReservesSystemAdditionalNotificationsComponent","_settings$telegramNot","tgRules","inputValue","setInputValue","accounts","setAccounts","_useState5","_useState6","accountCounter","setAccountCounter","changeAccounts","value_","trim","startsWith","xs","Switch","Fragment","sm","multiline","placeholder","helperText","FormHelperTextProps","usernames_","accounts_","rule","ReservesSystemAdditionalNotificationsContainer","ReservesSystemAdditionalNotifications","AutoBookingFields","currentRestaurantSettings","AutoBookingEnabledComp","AutoBookingEnabled_AutoBookingFields","AutoBookingEnabled","ReservesSystemAutoBookingCont","rotatePoint","rad","rcos","cos","rsin","sin","rotateAroundCenter","node","rotation","topLeft","Konva","getAngle","rotated","dx","dy","getOffset","textHeight","textCenterBox","textNode","offsetX","offsetY","textCenter","shapeNode","SCALE_MAX","SCALE_MIN","getScaleToFit","bgImage","getScale","imageWidth","imageHeight","scaleX","scaleY","scaleUp","scale","scaleDown","handleZoomChange","stage","scaleTo","onWheel","evt","preventDefault","currentScale","pointer","getPointerPosition","deltaY","mousePointTo","newPos","batchDraw","on","off","getCenter","p1","p2","handleTouchMove","lastCenter","lastDist","onTouchMove","touches","touch1","touch2","isDragging","stopDrag","clientX","clientY","newCenter","dist","sqrt","pow","getDistance","pointTo","onTouchMoveEnd","setCursor","getStage","genAvailableTableMap","hasCapacity","colorsMap","regular","TableElement","handleSelect","angle","shapeRef","React","useRef","textRef","setCursorPointer","ReactKonva","ref","onTap","stroke","strokeScaleEnabled","strokeWidth","onMouseEnter","onMouseLeave","fontStyle","verticalAlign","ImageElement","imageProps","objectWithoutProperties","_useImage","useImage","accessUrl","imageData","RectElement","EllipseElements","radiusX","radiusY","font","toLowerCase","overflow","buttonRight","buttonGroup","buttonShadow","&:disabled","zIndex","border","hitOnDragEnabled","StyledButton","minWidth","customWidthOffset","readOnly","setWidth","setHeight","setScale","_useState7","_useState8","offsetWidth","setOffsetWidth","availableTables","useMemo","divEl","setPosition","scaleToFit","onTableSelect","useLayoutEffect","_divEl$current$getBou","getBoundingClientRect","resize","_divEl$current$getBou2","offsetLeft","FilterCenterFocus_default","ButtonGroup","orientation","aria-label","Add_default","Remove_default","draggable","isCapable","RestaurantSchema_TableElement","RestaurantSchema_RectElement","EllipseElement","RestaurantSchema_ImageElement","TextElement","contentMap","fieldBlock","fieldWrap","fieldLabelStart","msgWrap","handleSwitchSection","Grid_default","xl","lg","md","FormControlLabel","labelPlacementStart","labelPlacement","control","View_RestaurantSchema","Typography_default","ReservesSystemSchemaCont","handleGetSectionsList","ReservesSystemSchema","selectorId","selectorSettingsSectionSchema","paperStyle","borderRadius","handleDeleteRestaurant","Delete_default","divider","closeButton","DialogTitle_DialogTitle","disableTypography","paddingRight","IconButton_default","Close_default","DialogContent","MuiDialogContent","DialogActions","borderTop","MuiDialogActions","DeleteRestaurantModal","isOpen","handleCloseModal","Dialog","Common_DialogTitle","DeleteRestaurantModal_DialogContent","ErrorOutline_default","DeleteRestaurantModal_DialogActions","DeleteRestaurant","handleSwitchModal","DeleteRestaurant_DeleteRestaurantMessages","DeleteRestaurant_DeleteRestaurantModal","_toolbarWarning","toolbarWarning","toolbarWarningBody","toolbarWarningContent","fontStretch","toolbarWarningTitle","toolbarWarningButton","alignSelf","outline","toolbarWarningDivider","minHeight","actionLabel","CashBoxWarning","Common_PageHeaderWarning","CashBoxWarningComp","link","pL","paddingLeft","bntWrap","trashIcon","deleteBorder","firstCln","secondCln","thirdCln","handleOpenWidgetModal","handleCustomMsg","noWrap","textOverflow","Icons_CopyIcon","navigator","clipboard","writeText","Icons_EditIcon","isValidColor","RegExp","test","isValidName","isValid","every","parseHashSymbolIfNeeded","paper","paperEdit","textFields","textFiledGroup","textFieldsGroup","textFieldsGroupName","paddingTop","textFieldsGroupColors","textField","colorField","colorFieldIcon","dialogActionsWrap","btnWrap","flexBasis","&:not(:first-child)","&:not(:last-child)","refPicker","handleClose","Popover","anchorEl","transformOrigin","CustomField","memo","defaultValue","colorPickerField","onColorPickerToggle","handlePickerOpen","useCallback","handlePickerHide","onColorPickerChange","raw","hex","onInputChange","Widgets_CustomPopover","material_ui_color_esm","inputFormats","disableAlpha","disableFocusRipple","firstRow","secondRow","thirdRow","fieldLabelMap","setFieldState","cloneDeep","set","changeData","_ref2$settings","onChangeBoolean","onChangeColor","renderCustomField","Widgets_CustomField","autoFocus","cl","FormControlLabel_default","Checkbox_Checkbox","handleCreateWidget","dividers","DialogContentText","Widgets_WidgetSettings","widgetInfo","handleUpdateWidget","refererUrl","transformData","handleDeleteWidget","ReservesSystemWidgets","createWidgetModalIsOpen","editWidgetModalIsOpen","deleteWidgetModalIsOpen","newWidgetName","WidgetsTable","Widgets_WidgetCreateModal","Widgets_WidgetEditModal","Widgets_WidgetDeleteModal","_state$widgets","DialogTitle","other","vSpace","hSpace","& > :not(:first-child)","DialogComponent","actions","Dialog_DialogTitle","Dialog_DialogContent","Dialog_DialogActions","ButtonComponent","startIcon","Button_StyledButton","DangerButtonComponent","Danger_StyledButton","DeleteDialog","Employees_Dialog","Common_Button","Danger","mapResponseToEmployee","responseEntity","isAdmin","employee","authorities","employeeCanBeDeleted","hasActiveHostess","getEmployeeResources","employeeResources","authority","Employees","employeeAuthorities","useEmployeesQueryKey","useEmployees","_useQuery","useQuery","staleTime","enabled","queryKey","queryFn","isFetching","useCurrentEmployeeQueryKey","useCurrentEmployee","_useQuery2","useCreateMutation","queryClient","useQueryClient","employeesQueryKey","useMutation","mutationFn","requestData","onSuccess","invalidateQueries","onError","errorMessages","errors","errorMessage","useUpdateMutation","currentEmployeeQueryKey","employeeDataToUpdate","isProfile","useDeleteMutation","useInviteEmployeeMutation","useGetEmployeeByActivationKeyMutation","useActivateEmployeeMutation","useResetPasswordMutation","ADMINISTRATOR","MANAGER","HOSTESS","hasAccess","resourceAction","getName","names","UnableToDeleteAlert","useCashboxQueryKey","& td","textDecoration","inner","& dt","& dd","contacts","listStyleType","& li:last","roles","invite","currentStar","ItemComponent","onEdit","onInvite","isCurrentEmployee","canBeDeleted","isDeleteDialogOpen","setDeleteDialogOpen","isUnableToDeleteAdminAlert","setUnableToDeleteAdminAlert","href","Star","role","Edit","esm_Delete","entities_employees_namespaceObject","contextButton","& .MuiSvgIcon-root","passive","& .MuiButton-label","ContextButtonComponent","isStrong","& thead th","ListComponent","onAdd","currentEmployee","Box","p","Item","esm_Add","EmployeeListContainer","deleteMutation","inviteMutation","useHistory","List","mutate","spacing2","spacing3","passiveList","RoleDescriptionComponent","isDivider","isReadonly","isDisabled","isOn","listClassName","Divider","spacing1","roleText","avatar","contact","status_active","status_disabled","dates","innerSystemTitle","innerSystemValue","EmployeeComponent","onResetPassword","flexShrink","AccountCircle","EditOutlined","LockOpen","RoleDescription","NotFoundComponent","EmployeeContainer","_Employees$useEmploye","useParams","resetPasswordMutation","employeeId","NotFound","Employee","SolidButtonComponent","buttons","columnGap","validationCreateSchema","yup","required","validationEditSchema","EmployeeFormComponent","authorityError","onCancel","onSubmit","canChangeAuthorities","canUnsetAdminAuthority","formik","useFormik","validationSchema","initialValues","validate","authoritiesErrors","submitCount","touched","Boolean","setFieldValue","PNF","E164","formatPhone","Solid","handleSubmit","setFieldTouched","EmployeeFormContainer","createMutation","updateMutation","getEmployeeId","Form","goBack","EmployeesPage","Common_PageContentWrap","react_router","exact","component","ProfilePage","_paper","layout","up","logoText","alt","contentTitle","contentText","contentBtn","contentDesc","logoSubTitle","note","buttonTitle","buttonAction","Auth_AuthWrapComp","CommonAuth_Logo","CommonAuth_UseRules","ActivationSuccess","useTheme","messages","paramName","param","noAuthPage","ActivationError","ActivationPassword","submitPassword","setPassword","NoHostessWarning","_Employees$useCurrent","isCurrentLoading","isEmployeesLoading","location","pathname","Confirmation","confirmation_DialogContent","confirmation_DialogActions","Settings","isConfirmation","showConfirmation","useCashboxSettingsFeature","cashbox","mapResponseToCashbox","useCashbox","StyledTabs","Tabs","StyledTab","Tab","ReservesSystemSettingsPage","cashboxSettings","containers_ReservesSystemInfo","containers_ReservesSystemSettings","containers_ReservesSystemWidgets","containers_ReservesSystemAdditionalNotifications","ReservesSystemAutoBooking","ReservesSystemTables","DeleteRestaurantCont","ReservesSystemSchemePage","containers_ReservesSystemSchema","routeMap","scheme","SettingsPage","view","onTabChange","isRestaurantSettings","isEmployeesPage","Common_PageHeaderWrap","scrollButtons","indicatorColor","textColor","centered","containers_CashBoxWarning","component_NoHostessWarning","ReservesSystemPage_ReservesSystemSettingsPage","ReservesSystemPage_ReservesSystemSchemePage","pages_EmployeesPage","ReservesSystemPage","ReservesSystemPage_SettingsPage","RestaurantSchemePage","ReservesSystemEmployeesPage","ReservesSystemProfilePage","StatisticsDateSelect","handleGetStatistics","onClickCustomDate","statisticDate","autoComplete","FormControl_default","InputLabel_default","Select_default","Input_default","displayEmpty","selectEmpty","MenuItem_default","ListSubheader","customDate","RangeDatePicker","onDatesChange","startDate","endDate","handleDate","focusedInput","react_dates","onFocusChange","noBorder","hideKeyboardShortcutsPanel","numberOfMonths","CustomDateModal","rangeDatePicker","btnStyle","changeDate","aria-labelledby","DatePickers_RangeDatePicker","HomeCont","customDateModalOpen","Common_StatisticsDateSelect","Common_CustomDateModal","onwProps","StatisticDateCont","InitMessages","handleClickOpen","FirstStepConnectSystemMessage","handleOpenConnectModal","pinCodeInfoContainer","pinCodeInfo","pinCodeView","btnMargin","pinCodeItem","seconds","timeCompleted","handleGetPinCode","connectedInfo","parsePinCode","ConnectSystemForm","handleRerunCountdown","showCountdown","renderCountdown","completed","PinCode","zeroPad","handleCloseConnectModal","index_es","now","renderer","onComplete","tagStart","tagEnd","interpolation","escapeValue","dialogWidth","rulesText","ConnectSystemModal_ConnectInstruction","ConnectSystemModal_ConnectSystemForm","numWrap","num","numMetrics","columnHeader","stat","metric","metricsColor","isVisitor","plus","statisticItem","tableHeader","renderStats","Table_default","TableBody_default","TableRow_default","TableCell_default","scope","HomeStatistics_HomeStatisticItem","scales","xAxes","gridLines","drawOnChartArea","lineWidth","ticks","yAxes","beginAtZero","callback","legend","maintainAspectRatio","Chart","datasets","borderColor","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","barThickness","react_chartjs_2_es","HomeStatistics","core_Grid_default","HomeStatisticTable","ReserveStatisticChart","showFirstStep","showSecondStep","isNil","containers_StatisticDateCont","Home_InitMessages","Home_FirstStepConnectSystemMessage","Home_HomeStatistics","Home_ConnectSystemModal","datePickerWrap","bottom","leftIcon","settingsIcon","objectFit","FilterList","filterIsOpen","handleMenuClose","itemList","changeItems","Menu","sortable","EnhancedTableHead","handleFilterBy","onRequestSort","changeFilterState","handleChangeFilters","oldFilters","currentTarget","handleFilterSwitcher","sortDirection","TableSortLabel","FilterList_default","ReserveList_FilterList","ReserveList","handleRequestSort","handleSortBookingList","rowsPerPage","bookingInfoList","handleOpenEditReserveModal","emptyRows","ReserveList_EnhancedTableHead","tableRow","tableTimeWrap","tableTimeBanquetLabel","wordBreak","parseCreateDateFromBookingList","handleChangeDate","parseDateFromBookingDatePicker","DatePicker","autoOk","TextFieldComponent","inputRef","onChangeDate","newDate","ArrowLeft","DatePickers_BookingDatePicker","ArrowRight","Booking","handleSwitchActives","Booking_BookingDate","Booking_ReserveList","Fab","bookingSelector","activeFilter","_state$booking","parseStat","toLocaleString","Table_Table_default","TableBody_TableBody_default","TableRow_TableRow_default","TableCell_TableCell_default","StatisticsTable_StatisticItem","responsive","boxWidth","datalabels","tooltips","StatisticReserveTableHead","cell","reserveData","openedTableDate","checkData","completedDate","paidDate","receiptAmount","renderStatTable","renderOrders","amount","resultSum","renderCommentData","banquetLabel","StatisticsReserveTableItem","handleOpenBookingDetails","changeVisible","StatisticReserveTable_ReserveTime","react_router_dom","stateColor","ExpandLess_default","ExpandMore_default","Collapse","in","unmountOnExit","timeout","StatisticReserveTable_ReserveDetails","handleGetReserves","_React$useState","_React$useState2","setPage","_React$useState3","_React$useState4","setRowsPerPage","_React$useState5","_React$useState6","sortType","changeSortType","StatisticsReserveTable_StatisticReserveTableHead","StatisticsReserveTable_StatisticsReserveTableItem","TablePagination","labelRowsPerPage","rowsPerPageOptions","count","backIconButtonProps","nextIconButtonProps","onChangePage","newPage","onChangeRowsPerPage","StatisticsCont","StatisticsTable","StatisticsDiagram","StatisticsReserveTable","titleWrap","Theme","listWrapper","onChangeAddress","onChangeName","addressSuggestions","setAddressSuggestions","clearTimeout","ymaps","suggest","results","List_List","ListItem","ListItemText","cachedScripts","yandexMap","yandexMapZoomControl","geocoderTimeout","Loading","MapComponent","apiKey","center","zoom","geoObject","geoObjects","removeAll","bounds","getBounds","setBounds","setZoom","ZoomControl","controls","setCenter","_useScript","loaded","script","onScriptLoad","onScriptError","splice","useScript","_useScript2","ready","Map","suppressMapOpenBlock","yandexMapDisablePoiInteractivity","behaviors","Map_Loading","YandexMapComponent","fallback","Map_MapComponent","yandexGeoObject","CreateRestaurantModalComp","setName","setAddress","geocode","objects","properties","precision","handleAddRestaurant","geoData","kind","geoAddress","Address","country_code","Components","c","handleCloseDialog","_this$state2","Yandex_SearchAddress","progress","CircularProgress","_ref$textAlign","whiteSpace","statisticsWrap","statisticRow","UserStatisticTableItem_tsx","roleWrap","roleTitle","activityDateWrap","infoWrap","userInfoWrap","statusWrap","statusWrap__deactivated","userIcon","userStatWrap","AccountCircle_default","UserStatisticsReserveTableItem","handelChangeSort","handleChangeSortType","UserStatisticReserveTableHead","UserReserveTable_UserStatisticsReserveTableItem","GoBackButton","&:active","ButtonText","letterSpacing","BackButton","ArrowBack_default","UserStatisticCont","match","Common_BackButton","UserCard","UserStatisticTable","UserReserveTable","UserStatisticsCont","SourceStatisticReserveTableHead","SourceStatisticsReserveTableItem","SourceReserveTable_SourceStatisticReserveTableHead","SourceReserveTable_SourceStatisticsReserveTableItem","TablePagination_default","nRowsPerPage","SourceCard","SourceStatisticTable","SourceReserveTable","linkColor","handleSendAuthReq","changeCred","DialogActions_default","Button_default","handleSendSelectReq","selectOrg","org","topBorder","DialogContent_default","bottomBorder","ErrorMessageComp","AuthIikoModal_AuthIikoErrorMessages","AuthIikoModal_FirstStep","AuthIikoModal_SecondStep","AuthIikoModalComp","Common_AuthIikoModal","_appBar","_menuButton","appBar","appBarShift","transition","transitions","easing","sharp","enteringScreen","menuButton","hide","drawer","drawerOpen","toolbar","mixins","snackbarContent","_formControl","_input","& li:last-child","& li.Mui-selected","dark","& li:hover","light","RestaurantSelect","onCreateRestaurant","SelectProps","getContentAnchorEl","data-name","ItemWrap","NameStyle","restaurantSelectorIcon","headerIcon","headerUserIcon","headerEditIcon","badge","@keyframes shake","10%, 90%","20%, 80%","30%, 50%, 70%","40%, 60%","shake","animation","withRouter","notificationsOpen","notificationsCount","appReservesOpen","appReservesCount","widgetAppReservesCount","shakeReservesInterval","shakeNotificationsInterval","isRegistrationCompleted","hasNotificationsAccess","setAnchorEl","shakeReserves","setShakeReserves","shakeNotifications","setShakeNotifications","setInterval","clearInterval","isMenuOpen","renderMenu","reservesBadgeColor","notificationBadgeColor","Header_RestaurantSelect","PlaceholdersIcon","Badge","badgeContent","colorError","PushIcon","imageUrl","Avatar","UserIcon","&:click","subMenuItem","subMenuText","wrapList","route","subMenu","showSubMenu","checkIsRestaurantItem","handleSwitchSubMenu","handleSwitchDrawerClose","isRestaurantItem","subMenuList","disablePadding","NavLink","ListItemIcon","fillRule","menuHeader","menuIcon","newReserveWrap","handleOpenReserveCreateModal","_restaurantSubMenuRou","settingItems","SideBar_SideBarItem","HomeIcon","BookingIcon","StatisticIcon","SettingsIcon","reservationsIsOpen","handleSwitchDrawerOpen","matches","useMediaQuery","AppBar","Toolbar","Menu_default","Header_Header","Drawer","components_SideBar_SideBar","Notifier","displayed","storeDisplayed","_ref$notifications","newSnacks","currentSnacks","notExists","_loop","_this$props$notificat","enqueueSnackbar","withSnackbar","CountdownWrapper","onReconnect","setInit","SocketErrorScreen","msg","components_CountdownWrapper","numberWrap","marker","arrowMargins","iconsWrap","alignContent","overflowY","msOverflowStyle","scrollbarWidth","&::-webkit-scrollbar","handleSelectTable","viewId","tableCont","alreadySelectedTables","createRef","initialized","onInit","tablesReady","initMessage","noFreeTables","disabledSchema","emptySchema","tablesSchema","scrollToElement","scrollTop","tablesGrid","RestaurantIcons","ArrowTop","ArrowBottom","TextFieldComp","staticValue","_ref$meta","meta","errorAsHelperText","isError","l","textAreaCont","&& textarea","overflowX","_ref$rows","phoneField","setValue","firstTwo","firstThree","getCodePhoneNumber","codeValue","disableUnderline","formWrap","isClickableLabel","ReserveSectionSelect","allOptionDisabled","ReserveDatePicker","renderDate","isSame","disablePast","invalidLabel","emptyLabel","ReservePersonSelect","capacityList","v","person","ReserveTimeSelect","pastTime","FormHelperText","normalizeDurationHours","ReservesDataFields","onPropertyChange","_e$target","onReservePropertyChange","handleMergeTables","handleErrorMsg","onViewChange","canEdited","disabledEditBanquet","readonly","tabs","ReservesDataFields_StyledTab","wrapContent","TextField_default","Field","_e$target2","fieldStyle","_e$target3","mt","PhoneFieldComp","Common_CircleCheckBox","TextAreaComp","mb","FormLabel","mr","_e$target4","normalize","pt","_wrap","weight","durationFieldStyle","fieldEdit","headerTitleWrap","headerTitle","justHeaderTitle","btnEdit","banquetError","banquetErrorText","actionButton","buttonBorder","borderRight","reserveButton","&:hover .MuiButton-label","activeReserve","reserveWarning","reserveWarningOn","addButton","& svg","NavItem","attention","warning","setParams","prevState","_useStyles","cssNames","_reserve$payload","nav","backButton","reserveButtonLong","reserveWarningLabel","Nav","itemWidth","onBack","onAddReserve","onClickReserve","backButtonWidth","clone","esm_ArrowBack","Nav_Item","reduxForm","handleGetFreeTables","handleViewChange","handleReject","reserveBtnText","rejectBtnText","selectedAppReserve","isEditStyles","Reservations_Nav","Reservations_ReservesDataFields","View","genDurationFromHours","ReserveCreatePage","getTablesTimeout","currentValue","changeCurrentTime","newTime","handleSendReq","activeTablesIds","newTableType","_this$props5","changeSectionToFirstItem","_this$props6","appReserveFormValues","Reservations","enableReinitialize","change","_state$reserveModal","ReserveConfirmPage","handleRejectReserve","updateReserveInfo","selectorGetTimeList","selector","appReserve","RejectBtn","DeleteReserveModal","DeleteReserveModal_DialogContent","DeleteReserveModal_DialogActions","ReserveEditPage","newActiveTable","activeTablesByID","reserveInfoForUpdate","compareTables","handleOpenRejectReserveModal","rejectModalIsOpen","handleCloseRejectReserveModal","_this$props7","_this$props8","Booking_DeleteReserveModal","ReservationPageConfirmCont","ReservationPageEditCont","ReservationPageCreateCont","fakeAvatar","clickableAvatar","clickableName","Header","clickPerson","onToggle","isGuest","nameClassNames","avatarClassNames","esm_ExpandLess","esm_ExpandMore","contentRoot","contentRootActive","contentMessage","SlideTransition","Slide","NotificationSnackbar","footer","Snackbar","transitionDuration","TransitionComponent","SnackbarContent","Snackbar_Header","goToUser","BodyItem","rightIndent","totalVisits","Snackbar_BodyItem","CallBody","Snackbar_BodyVisits","secondaryButtonWrapper","& button","buttonWrapper","CallFooter","onRemove","onCreateReserve","commentIcon","ReserveBody","visitDate","MessageOutlined","& button:hover","ReserveFooter","onConfirm","Notifications","onRemoveCall","onCreateReserveFromCall","onRemoveReserve","onConfirmReserve","onEditReserve","visibleCalls","foldHeight","unfoldHeight","Notifications_Snackbar","Body","Footer","Reserve_Body","Reserve_Footer","CabinetPage","withoutRestaurants","pathName","resetIdleTimer","Common_Preloader","DrawerAndHeader_DrawerAndHeaderComp","CreateRestaurantModal","isCallNotifications","isWidgetNotifications","userNotifications","hasStatsAccess","hasReservesAccess","Snackbar_Notifier","Common_Notifications","notificationKey","itemId","SocketErrorScreenCont","pages_ReservationsPage","render","pages_NotFoundPage","Home","containers_Booking","ReservesSystemPage_ReservesSystemPage","ReservesSystemPage_RestaurantSchemePage","Statistics","SourceStatisticCont","ReservesSystemPage_ReservesSystemEmployeesPage","NotFoundPage","AuthIikoModalCont","ProtectedRoute","renderProtected","routeProps","ProtectedComponent","rest","pure","ConfirmationPage","_this$props$auth","CheckBoxComp","EmailValidator","justify","AuthCont","handleSignIn","Auth_SigInForm","validateName","re","password2","regError","RegisterCont","handleSignUp","acceptRules","SubmissionError","_error","Auth_RegistrationForm","ResetPassword","handleRestorePassword","handleResend","RestorePassword_RestorePasswordForm","success","isSended","setSended","password1","SendNewPassword","handleSendNewPassword","handelRedirectToLogin","History","RestorePassword_NewPasswordForm","ownProps","EmployeeConfirmationPage","getEmployeeMutation","activateEmployeeMutation","setEmployee","_getEmployeeMutation$","useEmployeeActivationFeature","Auth","Registration","ThanksYouPage","RulesPage","Common_ProtectedRoute","notistack_esm","maxSnack","variantInfo","CssBaseline","routers","QueryClient","App","es","QueryClientProvider_esm","connected_react_router_esm","ThemeProvider","useUtils_cfb96ac9","utils","MomentUtils","App_AppComp","_process$env","REACT_APP_SENTRY_DSN","REACT_APP_NAME","REACT_APP_VERSION","sentryConfig","dsn","environment","integrations","Integrations","BrowserTracing","tracesSampleRate","release","ReactDOM","containers_App_App","getElementById","module","__webpack_require__"],"mappings":"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,OACNC,OAAQ,SACRC,QAAS,UACTC,SAAU,WACVC,WAAY,aACZC,KAAM,OACNC,MAAO,QACPC,YAAa,cACbC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,qBAAsB,uBACtBC,0BAA2B,4BAC3BC,yBAA0B,2BAC1BC,+BAAgC,iCAChCC,iBAAkB,mBAClBC,8BAA+B,gCAC/BC,8BAA+B,iCAGpBC,GAAc,CACzBC,IAAK,MACLC,QAAS,WAGEC,GAAiB,CAC5BC,MAAO,QACPC,SAAU,WACVC,MAAO,QACPC,SAAU,WACVC,YAAa,cACbC,MAAO,QACPC,WAAY,aACZC,YAAa,cACbC,aAAc,eACdC,OAAQ,UAgBGC,GAAY,CACvB,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAGWC,GAAe,CAC1BC,SAAU,WACVC,SAAU,WACVC,cAAe,gBACfC,qBAAsB,uBACtBC,gBAAiB,kBACjBC,QAAS,UACTC,KAAM,OACNC,OAAQ,SACRC,YAAa,cACbC,SAAU,WACVC,MAAO,QACPC,mBAAoB,qBACpBC,cAAe,gBACfC,QAAS,UACTC,UAAW,YACXC,SAAU,YAICC,GAAwB,CACnCjB,GAAaC,SACbD,GAAaM,QACbN,GAAaO,KACbP,GAAaS,YACbT,GAAaY,mBACbZ,GAAaa,eAGFK,GAAoB,CAC/BC,oBAAqB,sBACrBC,QAAS,WAGEC,GAC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","file":"static/js/main.6ee32475.chunk.js","sourcesContent":["import { createBrowserHistory, History } from 'history';\n\nconst history: History = createBrowserHistory();\n\nexport default history;\n","export const SIGN_UP_REQUEST = 'SIGN_UP_REQUEST';\nexport const SIGN_UP_SUCCESS = 'SIGN_UP_SUCCESS';\nexport const SIGN_UP_ERROR = 'SIGN_UP_ERROR';\nexport const SIGN_IN_REQUEST = 'SIGN_IN_REQUEST';\nexport const SIGN_IN_ERROR = 'SIGN_IN_ERROR';\nexport const SIGN_IN_SUCCESS = 'SIGN_IN_SUCCESS';\nexport const SIGN_OUT = 'SIGN_OUT';\nexport const GET_SESSION_REQUEST = 'GET_SESSION_REQUEST';\nexport const GET_SESSION_SUCCESS = 'GET_SESSION_SUCCESS';\nexport const GET_SESSION_FAIL = 'GET_SESSION_FAIL';\nexport const CONFIRM_EMAIL_REQUEST = 'CONFIRM_EMAIL_REQUEST';\nexport const CONFIRM_EMAIL_SUCCESS = 'CONFIRM_EMAIL_SUCCESS';\nexport const CONFIRM_EMAIL_ERROR = 'CONFIRM_EMAIL_ERROR';\nexport const CONFIRM_EMAIL_RESEND = 'CONFIRM_EMAIL_RESEND';\n","import * as ActionTypes from '../actions/auth/AuthActionsTypes';\nimport { IAuthStore } from '../types/IAuthStore';\nimport { IAppActions } from '../types/IAppActions';\n\nexport const initState: IAuthStore = {\n user: undefined,\n error: undefined,\n loading: false,\n getSessionProcess: true,\n confirmEmailProcess: true,\n confirmEmailStatus: false,\n authorized: false,\n};\n\nexport default function AuthReducer(state = initState, action: IAppActions): IAuthStore {\n switch (action.type) {\n case ActionTypes.SIGN_UP_REQUEST:\n case ActionTypes.SIGN_IN_REQUEST:\n return {\n ...state,\n loading: true,\n error: undefined,\n };\n\n case ActionTypes.SIGN_IN_SUCCESS:\n return {\n ...state,\n loading: false,\n user: action.payload.user,\n error: undefined,\n getSessionProcess: false,\n authorized: action.payload.user.activated,\n };\n\n case ActionTypes.SIGN_UP_ERROR:\n case ActionTypes.SIGN_IN_ERROR:\n return {\n ...state,\n loading: false,\n error: action.error,\n };\n\n case ActionTypes.SIGN_OUT:\n return {\n ...state,\n user: undefined,\n authorized: false,\n };\n\n case ActionTypes.CONFIRM_EMAIL_SUCCESS:\n return {\n ...state,\n confirmEmailStatus: true,\n confirmEmailProcess: false,\n };\n\n case ActionTypes.SIGN_UP_SUCCESS:\n return {\n ...state,\n error: undefined,\n };\n\n case ActionTypes.CONFIRM_EMAIL_ERROR:\n return {\n ...state,\n confirmEmailStatus: false,\n confirmEmailProcess: false,\n };\n\n case ActionTypes.GET_SESSION_REQUEST:\n return {\n ...state,\n getSessionProcess: true,\n };\n\n case ActionTypes.GET_SESSION_FAIL:\n return {\n ...state,\n getSessionProcess: false,\n authorized: false,\n };\n\n case ActionTypes.GET_SESSION_SUCCESS:\n return {\n ...state,\n getSessionProcess: false,\n };\n\n default:\n return state;\n }\n}\n","export const INIT_BOOKING_PAGE = 'INIT_BOOKING_PAGE';\nexport const INIT_BOOKING_PAGE_SUCCESS = 'INIT_BOOKING_PAGE_SUCCESS';\nexport const INIT_BOOKING_PAGE_ERROR = 'INIT_BOOKING_PAGE_ERROR';\nexport const GET_BOOKING_REQUEST = 'GET_BOOKING_REQUEST';\nexport const GET_BOOKING_SUCCESS = 'GET_BOOKING_SUCCESS';\nexport const GET_BOOKING_ERROR = 'GET_BOOKING_ERROR';\nexport const SWITCH_BOOKING_ACTIVE = 'SWITCH_BOOKING_ACTIVE';\nexport const SORT_BOOKING_LIST = 'SORT_BOOKING_LIST';\nexport const SET_FILTERS = 'SET_FILTERS';\n","export const OPEN_EDIT_RESERVE_MODAL = 'OPEN_EDIT_RESERVE_MODAL';\nexport const CLOSE_EDIT_RESERVE_MODAL = 'CLOSE_EDIT_RESERVE_MODAL';\n\nexport const UPDATE_RESERVE_REQUEST = 'UPDATE_RESERVE_REQUEST';\nexport const UPDATE_RESERVE_SUCCESS = 'UPDATE_RESERVE_SUCCESS';\nexport const UPDATE_RESERVE_ERROR = 'UPDATE_RESERVE_ERROR';\n\nexport const GET_FREE_TABLES_REQUEST = 'GET_FREE_TABLES_REQUEST';\nexport const GET_FREE_TABLES_SUCCESS = 'GET_FREE_TABLES_SUCCESS';\nexport const GET_FREE_TABLES_ERROR = 'GET_FREE_TABLES_ERROR';\n\nexport const OPEN_CREATE_RESERVE_MODAL = 'OPEN_CREATE_RESERVE_MODAL';\nexport const CLOSE_CREATE_RESERVE_MODAL = 'CLOSE_CREATE_RESERVE_MODAL';\n\nexport const OPEN_CONFIRM_RESERVE_MODAL = 'OPEN_CONFIRM_RESERVE_MODAL';\nexport const CLOSE_CONFIRM_RESERVE_MODAL = 'CLOSE_CONFIRM_RESERVE_MODAL';\n\nexport const CREATE_RESERVE_REQUEST = 'CREATE_RESERVE_REQUEST';\nexport const CREATE_RESERVE_ERROR = 'CREATE_RESERVE_ERROR';\nexport const CREATE_RESERVE_SUCCESS = 'CREATE_RESERVE_SUCCESS';\n\nexport const CONFIRM_RESERVE_REQUEST = 'CONFIRM_RESERVE_REQUEST';\nexport const CONFIRM_RESERVE_SUCCESS = 'CONFIRM_RESERVE_SUCCESS';\nexport const CONFIRM_RESERVE_ERROR = 'CONFIRM_RESERVE_ERROR';\n\nexport const GET_RESERVE_INFO_SUCCESS = 'GET_RESERVE_INFO_SUCCESS';\nexport const GET_RESERVE_INFO_ERROR = 'GET_RESERVE_INFO_ERROR';\n\n// export const SET_RESERVE_TO_QUEUE = 'SET_RESERVE_TO_QUEUE';\n// export const UPDATE_RESERVE_QUEUE = 'UPDATE_RESERVE_QUEUE';\n\nexport const REJECT_NEW_RESERVE_REQUEST = 'REJECT_NEW_RESERVE_REQUEST';\nexport const REJECT_NEW_RESERVE_SUCCESS = 'REJECT_NEW_RESERVE_SUCCESS';\nexport const REJECT_NEW_RESERVE_ERROR = 'REJECT_NEW_RESERVE_ERROR';\n\nexport const SET_ACTIVE_TABLE_REQ = 'SET_ACTIVE_TABLE_REQ';\nexport const SET_ACTIVE_TABLE_SUCCESS = 'SET_ACTIVE_TABLE_SUCCESS';\nexport const SET_ACTIVE_TABLE_ERROR = 'SET_ACTIVE_TABLE_ERROR';\nexport const RESET_ACTIVE_TABLE = 'RESET_ACTIVE_TABLE';\n\nexport const SET_MAX_CAPACITY = 'SET_MAX_CAPACITY';\n\nexport const MERGE_TABLES_REQ = 'MERGE_TABLES_REQ';\nexport const MERGE_TABLES_SUCCESS = 'MERGE_TABLES_SUCCESS';\nexport const MERGE_TABLES_ERROR = 'MERGE_TABLES_ERROR';\n\nexport const FETCH_OPEN_RESERVES = 'FETCH_OPEN_RESERVES';\nexport const FETCH_OPEN_RESERVES_SUCCESS = 'FETCH_OPEN_RESERVES_SUCCESS';\nexport const FETCH_OPEN_RESERVES_ERROR = 'FETCH_OPEN_RESERVES_ERROR';\nexport const RESET_OPEN_RESERVES = 'RESET_OPEN_RESERVES';\n\nexport const ADD_OPEN_RESERVE = 'ADD_OPEN_RESERVE';\nexport const REMOVE_OPEN_RESERVE = 'REMOVE_OPEN_RESERVE';\n\nexport const CONFIRM_OPEN_RESERVE = 'CONFIRM_OPEN_RESERVE';\nexport const CONFIRM_OPEN_RESERVE_SUCCESS = 'CONFIRM_OPEN_RESERVE_SUCCESS';\nexport const CONFIRM_OPEN_RESERVE_ERROR = 'CONFIRM_OPEN_RESERVE_ERROR';\n\nexport const REJECT_OPEN_RESERVE = 'REJECT_OPEN_RESERVE';\nexport const REJECT_OPEN_RESERVE_SUCCESS = 'REJECT_OPEN_RESERVE_SUCCESS';\nexport const REJECT_OPEN_RESERVE_ERROR = 'REJECT_OPEN_RESERVE_ERROR';\n","export const Routers = {\n main: '/',\n auth: '/auth',\n login: '/auth',\n resPassword: '/reset-password',\n registration: '/registration',\n cabinet: '/cabinet',\n home: '/home',\n booking: '/booking',\n statistics: '/statistics',\n settings: '/settings',\n servicesInfo: '/services-info',\n reservesSystem: '/reserves-system',\n restaurantScheme: '/restaurant-scheme',\n cardMenu: '/settings/menu',\n cardAction: '/settings/action',\n cardSettings: '/settings/tables-and-reserves',\n userStatistics: '/user-statistics',\n sourceStatistics: '/source-statistics',\n confirmation: '/confirmation',\n thanks: '/thanks',\n rules: 'https://guestme.ru/privacy_policy/',\n newPassword: '/new-password',\n reserve: '/reserve',\n employees: '/employees',\n employeeConfirmation: '/employee/new/confirmation/:key',\n profile: '/profile',\n};\n\n/**\n * Виды кухни\n * @type {string[]}\n */\nexport const KitchenType = [\n 'AUSTRALIAN',\n 'AUSTRIAN',\n 'AZERBAIJAN',\n 'ASIAN',\n 'AMERICAN',\n 'ARABIC',\n 'ARGENTINEAN',\n 'ARMENIAN',\n 'AFGANISTAN',\n 'AFRICAN',\n 'BANGLADESH',\n 'BAR',\n 'BBQ',\n 'BELGIAN',\n 'MIDDLE_EAST',\n 'BRAZILIAN',\n 'BRITISH',\n 'WINE_BAR',\n 'EASTERN_EUROPEAN',\n 'VIETNAMESE',\n 'HAWAIIAN',\n 'GASTRO_PUB',\n 'GREEK',\n 'GRILL',\n 'GEORGIAN',\n 'DANISH',\n 'DELICATESSES',\n 'EUROPEAN',\n 'EGYPTIAN',\n 'SNACK_BAR',\n 'HEALTHY',\n 'ISRAEL',\n 'INDIAN',\n 'INDONESIAN',\n 'IRISH',\n 'SPANISH',\n 'ITALIAN',\n 'CAUCASIAN',\n 'CARIBBEAN',\n 'CAFE',\n 'CHINESE',\n 'KOREAN',\n 'CUBAN',\n 'CUISINE_OF_SMALL_PEOPLES_OF_CHINA',\n 'LATIN_AMERICAN',\n 'LATVIAN',\n 'LEBANESE',\n 'MOROCCAN',\n 'INTERNATIONAL',\n 'MEXICAN',\n 'MONGOLIAN',\n 'SEAFOOD',\n 'GERMAN',\n 'NEPALESE',\n 'NORWEGIAN',\n 'PUB',\n 'BREWERY_PUB',\n 'PAKISTANI',\n 'PERSIAN',\n 'PERUVIAN',\n 'PIZZA',\n 'PORTUGUESE',\n 'ROMANIAN',\n 'RUSSIAN',\n 'SINGAPORE',\n 'SCANDINAVIAN',\n 'MODERN',\n 'MEDITERRANEAN',\n 'STEAKHOUSE',\n 'SOUPS',\n 'SUSHI',\n 'TAIWANESE',\n 'THAI',\n 'TIBETAN',\n 'TUNISIAN',\n 'TURKISH',\n 'UZBEK',\n 'UKRAINIAN',\n 'STREET',\n 'FAST_FOOD',\n 'FRENCH',\n 'FUJIAN',\n 'FUSION',\n 'CROATIAN',\n 'CENTRAL_ASIAN',\n 'CENTRAL_AMERICAN',\n 'CENTRAL_EUROPEAN',\n 'CZECH',\n 'SWEDISH',\n 'SWISS',\n 'SCOTTISH',\n 'ETHIOPIAN',\n 'SOUTHERNEAST',\n 'SOUTH_AMERICAN',\n 'JAPANESE',\n];\n\n/**\n * Дополнительные услуги\n * @type {string[]}\n */\nexport const extras = [\n 'BANQUET',\n 'WIFI',\n 'RESERVATION',\n 'DELIVERY',\n 'WHEELCHAIR_ACCESS',\n 'TAKEAWAY_FOOD',\n 'BUFFET_BREAKFAST',\n 'PARKING',\n 'ALCOHOL',\n 'OUTDOOR_TABLES',\n 'TV',\n 'HOOKAH',\n 'VEGETARIAN',\n 'CHILDREN_MENU',\n 'BUSINESS_LUNCH',\n 'CARD_PAY',\n 'NO_LIVE_MUSIC',\n 'LIVE_MUSIC',\n];\n\nexport const cardFieldType = {\n phone: 'phone',\n site: 'site',\n extras: 'extras',\n kitchen: 'kitchen',\n schedule: 'schedule',\n priceLevel: 'priceLevel',\n name: 'name',\n about: 'about',\n description: 'description',\n bookingProcessor: 'bookingProcessor',\n bookingDuration: 'bookingDuration',\n isAutoBookingEnabled: 'isAutoBookingEnabled',\n autoBookingMinTimeElapsed: 'autoBookingMinTimeElapsed',\n autoBookingMinFreeTables: 'autoBookingMinFreeTables',\n autoBookingMaxNumberEmptySeats: 'autoBookingMaxNumberEmptySeats',\n isSchemasEnabled: 'isSchemasEnabled',\n isTelegramNotificationEnabled: 'isTelegramNotificationEnabled',\n telegramNotificationUsernames: 'telegramNotificationUsernames',\n};\n\nexport const autoBooking = {\n api: 'API',\n cashBox: 'CASHBOX',\n};\n\nexport const dashBoardDates = {\n today: 'today',\n tomorrow: 'tomorrow',\n seven: 'seven',\n fourteen: 'fourteen',\n twentyEight: 'twentyEight',\n sixty: 'sixty',\n firstMonth: 'firstMonth',\n secondMonth: 'secondMonth',\n currentMonth: 'currentMonth',\n custom: 'custom',\n};\n\nexport const priceLvl = [\n 'CHEAP',\n 'AVERAGE',\n 'EXPENSIVE',\n 'VERY_EXPENSIVE',\n];\n\n/**\n * Контрольная точка для планшета в пикселях\n * @type {number}\n */\nexport const tabletWidth = 1025;\n\nexport const workTimes = [\n '00:00',\n '00:15',\n '00:30',\n '00:45',\n '01:00',\n '01:15',\n '01:30',\n '01:45',\n '02:00',\n '02:15',\n '02:30',\n '02:45',\n '03:00',\n '03:15',\n '03:30',\n '03:45',\n '04:00',\n '04:15',\n '04:30',\n '04:45',\n '05:00',\n '05:15',\n '05:30',\n '05:45',\n '06:00',\n '06:15',\n '06:30',\n '06:45',\n '07:00',\n '07:15',\n '07:30',\n '07:45',\n '08:00',\n '08:15',\n '08:30',\n '08:45',\n '09:00',\n '09:15',\n '09:30',\n '09:45',\n '10:00',\n '10:15',\n '10:30',\n '10:45',\n '11:00',\n '11:15',\n '11:30',\n '11:45',\n '12:00',\n '12:15',\n '12:30',\n '12:45',\n '13:00',\n '13:15',\n '13:30',\n '13:45',\n '14:00',\n '14:15',\n '14:30',\n '14:45',\n '15:00',\n '15:15',\n '15:30',\n '15:45',\n '16:00',\n '16:15',\n '16:30',\n '16:45',\n '17:00',\n '17:15',\n '17:30',\n '17:45',\n '18:00',\n '18:15',\n '18:30',\n '18:45',\n '19:00',\n '19:15',\n '19:30',\n '19:45',\n '20:00',\n '20:15',\n '20:30',\n '20:45',\n '21:00',\n '21:15',\n '21:30',\n '21:45',\n '22:00',\n '22:15',\n '22:30',\n '22:45',\n '23:00',\n '23:15',\n '23:30',\n '23:45',\n];\n\nexport const reserveState = {\n ACCEPTED: 'ACCEPTED', // Подтвержден\n DECLINED: 'DECLINED', // Отклонен рестораном\n GUEST_DECLINE: 'GUEST_DECLINE', // Отменен посетителем\n RESTAURATEUR_DECLINE: 'RESTAURATEUR_DECLINE', // Отменен рестораном\n UNKNOWN_DECLINE: 'UNKNOWN_DECLINE', // Отменен\n CREATED: 'CREATED', // Создан\n SENT: 'SENT', // Ожидаем ответ ресторана\",\n CLOSED: 'CLOSED', // Закрыт\n IN_PROGRESS: 'IN_PROGRESS', // Открыт\n PATCHING: 'PATCHING', // Обновление\n ERROR: 'ERROR', // Ошибка\n NEED_PREPARE_TABLE: 'NEED_PREPARE_TABLE', // Пора готовить стол\n GUEST_IS_LATE: 'GUEST_IS_LATE', // Гость паздывает\n UNKNOWN: 'UNKNOWN', // На случай если canceledBy null\n CANCELING: 'CANCELING', // Отменяется\n CANCELED: 'CANCELED', // Отменен\n};\n\n// @todo Уточнить статусы\nexport const editableReserveStates = [\n reserveState.ACCEPTED,\n reserveState.CREATED,\n reserveState.SENT,\n reserveState.IN_PROGRESS,\n reserveState.NEED_PREPARE_TABLE,\n reserveState.GUEST_IS_LATE,\n];\n\nexport const localStorageItems = {\n autoBookingSchedule: 'autoBookingSchedule',\n filters: 'filters',\n};\n\nexport const reserveSource = {\n RESTAURATEUR: 'RESTAURATEUR_API',\n};\n\nexport const reserveModal = {\n EDIT: 'edit',\n CONFIRM: 'confirm',\n NEW: 'new',\n};\n\nexport const emptyTime = '-';\n\nexport const emptyString = '-';\n\nexport const weekDays = {\n MONDAY: 'MONDAY',\n TUESDAY: 'TUESDAY',\n WEDNESDAY: 'WEDNESDAY',\n THURSDAY: 'THURSDAY',\n FRIDAY: 'FRIDAY',\n SATURDAY: 'SATURDAY',\n SUNDAY: 'SUNDAY',\n};\n\ninterface IPhoneCode {\n key: string;\n code: string;\n firstLabel: string;\n secondLabel: string;\n title: string;\n}\n\ninterface IPhoneCodes {\n [key: string]: IPhoneCode;\n}\n\nexport const phoneCode: IPhoneCodes = {\n ru: {\n key: 'ru',\n code: '+7',\n firstLabel: '🇷🇺 (+7)',\n secondLabel: '🇷🇺 Россия (+7)',\n title: 'Россия',\n },\n ukr: {\n key: 'ukr',\n code: '+380',\n firstLabel: '🇺🇦 (+380)',\n secondLabel: '🇺🇦 Украина (+380)',\n title: 'Украина',\n },\n est: {\n key: 'est',\n code: '+372',\n firstLabel: '🇪🇪 (+372)',\n secondLabel: '🇪🇪 Эстония (+372)',\n title: 'Эстония',\n },\n uz: {\n key: 'uz',\n code: '+998',\n firstLabel: '🇺🇿 (+998)',\n secondLabel: '🇺🇿 Узбекистан (+998)',\n title: 'Узбекистан',\n },\n am: {\n key: 'am',\n code: '+374',\n firstLabel: '🇦🇲 (+374)',\n secondLabel: '🇦🇲 Армения (+374)',\n title: 'Армения',\n },\n ge: {\n key: 'ge',\n code: '+995',\n firstLabel: '🇬🇪 (+995)',\n secondLabel: '🇬🇪 Грузия (+995)',\n title: 'Грузия',\n },\n kz: {\n key: 'kz',\n code: '+77',\n firstLabel: '🇰🇿 (+77)',\n secondLabel: '🇰🇿 Казахстан (+77)',\n title: 'Казахстан',\n },\n ae: {\n key: 'ae',\n code: '+971',\n firstLabel: '🇦🇪 (+971)',\n secondLabel: '🇦🇪 ОАЭ (+971)',\n title: 'ОАЭ',\n },\n us: {\n key: 'us',\n code: '+1',\n firstLabel: '🇺🇸 (+1)',\n secondLabel: '🇺🇸 США (+1)',\n title: 'США',\n },\n az: {\n key: 'az',\n code: '+994',\n firstLabel: '🇦🇿 (+994)',\n secondLabel: '🇦🇿 Азербайджан (+994)',\n title: 'Азербайджан',\n },\n by: {\n key: 'by',\n code: '+375',\n firstLabel: '🇧🇾 (+375)',\n secondLabel: '🇧🇾 Белоруссия (+375)',\n title: 'Белоруссия',\n },\n kg: {\n key: 'kg',\n code: '+996',\n firstLabel: '🇰🇬 (+996)',\n secondLabel: '🇰🇬 Кыргызстан (+996)',\n title: 'Кыргызстан',\n },\n tm: {\n key: 'tm',\n code: '+993',\n firstLabel: '🇹🇲 (+993)',\n secondLabel: '🇹🇲 Туркменистан (+993)',\n title: 'Туркменистан',\n },\n};\n\nconst sortPhoneCodeByTitle = (a: IPhoneCode, b: IPhoneCode) => {\n const nameA = a.title.toUpperCase();\n const nameB = b.title.toUpperCase();\n\n if (nameA < nameB) {\n return -1;\n }\n\n if (nameA > nameB) {\n return 1;\n }\n\n return 0;\n};\n\nexport const getPhoneCodes = (firstCountryKey?: string, sortByTitle?: boolean): Array => {\n let codes = Object.values(phoneCode);\n\n if (sortByTitle) {\n codes = codes.sort(sortPhoneCodeByTitle);\n }\n\n if (firstCountryKey) {\n return [\n phoneCode[firstCountryKey],\n ...codes.filter(item => item.key !== firstCountryKey),\n ];\n }\n\n return codes;\n};\n","import moment from 'moment';\n\nimport * as BookingActions from '../actions/booking/BookingActionsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IBookingStore } from '../types/IBookingStore';\nimport { UPDATE_RESERVE_SUCCESS } from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport { localStorageItems } from '../config/constants';\n\nexport const initState: IBookingStore = {\n isInit: false,\n bookingList: [],\n getBookingInfoProcess: false,\n getBookingInfoError: null,\n currentStatisticDate: moment().format(),\n onlyActive: true,\n sort: {\n orderBy: 'date',\n order: 'asc',\n },\n filters: [\n {\n value: 'accepted',\n active: true,\n },\n {\n value: 'declined',\n active: false,\n },\n {\n value: 'rejected',\n active: false,\n },\n {\n value: 'service',\n active: false,\n },\n {\n value: 'open',\n active: false,\n },\n {\n value: 'closed',\n active: false,\n },\n ],\n};\n\nexport default function reducer(state = initState, action: IAppActions): IBookingStore {\n switch (action.type) {\n case BookingActions.INIT_BOOKING_PAGE_SUCCESS:\n return {\n ...state,\n isInit: true,\n bookingList: action.payload.reserves,\n filters: action.payload.filters,\n onlyActive: action.payload.onlyActive,\n };\n\n case BookingActions.INIT_BOOKING_PAGE_ERROR:\n return {\n ...state,\n isInit: true,\n filters: action.payload.filters,\n onlyActive: action.payload.onlyActive,\n };\n\n case BookingActions.GET_BOOKING_REQUEST:\n return {\n ...state,\n getBookingInfoProcess: true,\n };\n\n case BookingActions.GET_BOOKING_SUCCESS: {\n const {\n bookingList, date, active, sort,\n } = action.payload;\n\n return {\n ...state,\n bookingList,\n getBookingInfoProcess: false,\n getBookingInfoError: null,\n currentStatisticDate: date,\n onlyActive: active,\n sort,\n };\n }\n\n case BookingActions.GET_BOOKING_ERROR:\n return {\n ...state,\n getBookingInfoProcess: false,\n getBookingInfoError: action.error,\n currentStatisticDate: action.payload.date,\n };\n\n case UPDATE_RESERVE_SUCCESS: {\n return {\n ...state,\n bookingList: state.bookingList.map((b) => {\n if (b.id === action.payload.updatedReserve.id) {\n return action.payload.updatedReserve;\n }\n\n return b;\n }),\n };\n }\n\n case BookingActions.SET_FILTERS: {\n localStorage.setItem(localStorageItems.filters, JSON.stringify(action.payload.filters));\n\n return {\n ...state,\n filters: action.payload.filters,\n };\n }\n\n case BookingActions.SWITCH_BOOKING_ACTIVE: {\n const { active, resetFilters } = action.payload;\n\n const updateFilters = active\n ? state.filters.map(f => (f.value === 'accepted' ? { ...f, active } : { ...f, active: false }))\n : state.filters.map(f => (resetFilters ? { ...f, active: false } : f));\n\n localStorage.setItem(localStorageItems.filters, JSON.stringify(updateFilters));\n\n return {\n ...state,\n filters: updateFilters,\n };\n }\n\n default:\n return state;\n }\n}\n","export const CONNECT_RESTAURANT_SUCCESS = 'REGISTER_RESTAURANT_SUCCESS';\nexport const RESET_CONNECT_STATUS = 'RESET_CONNECT_STATUS';\n\nexport const AUTH_FORM_IIKO_REQUEST = 'AUTH_FORM_IIKO_REQUEST';\nexport const AUTH_FORM_IIKO_SUCCESS = 'AUTH_FORM_IIKO_SUCCESS';\nexport const AUTH_FORM_IIKO_ERROR = 'AUTH_FORM_IIKO_ERROR';\n\nexport const GET_ORGANIZATION_LIST_FORM_IIKO_ERROR = 'GET_ORGANIZATION_LIST_FORM_IIKO_ERROR';\nexport const SELECT_ORGANIZATION_REQUEST = 'SELECT_ORGANIZATION_REQUEST';\nexport const SELECT_ORGANIZATION_SUCCESS = 'SELECT_ORGANIZATION_SUCCESS';\nexport const SELECT_ORGANIZATION_ERROR = 'SELECT_ORGANIZATION_ERROR';\n\nexport const SWITCH_PIN_CODE_MODAL = 'SWITCH_PIN_CODE_MODAL';\nexport const CLOSE_PIN_CODE_MODAL_STATE = 'CLOSE_PIN_CODE_MODAL_STATE';\nexport const OPEN_PIN_CODE_MODAL_STATE = 'OPEN_PIN_CODE_MODAL_STATE';\n\nexport const SWITCH_RESERVE_PROCESSOR_REQUEST = 'SWITCH_RESERVE_PROCESSOR_REQUEST';\nexport const SWITCH_RESERVE_PROCESSOR_SUCCESS = 'SWITCH_RESERVE_PROCESSOR_SUCCESS';\nexport const SWITCH_RESERVE_PROCESSOR_ERROR = 'SWITCH_RESERVE_PROCESSOR_ERROR';\n\nexport const GET_STATISTIC_REQUEST = 'GET_STATISTIC_REQUEST';\nexport const GET_STATISTIC_SUCCESS = 'GET_STATISTIC_SUCCESS';\nexport const GET_STATISTIC_ERROR = 'GET_STATISTIC_ERROR';\n\nexport const GET_ATTENDANCE_REQUEST = 'GET_ATTENDANCE_REQUEST';\nexport const GET_ATTENDANCE_SUCCESS = 'GET_ATTENDANCE_SUCCESS';\nexport const GET_ATTENDANCE_ERROR = 'GET_ATTENDANCE_ERROR';\n\nexport const GET_RESTAURANT_PIN_CODE_REQUEST = 'GET_RESTAURANT_PIN_CODE_REQUEST';\nexport const GET_RESTAURANT_PIN_CODE_SUCCESS = 'GET_RESTAURANT_PIN_CODE_SUCCESS';\nexport const GET_RESTAURANT_PIN_CODE_ERROR = 'GET_RESTAURANT_PIN_CODE_ERROR';\n","export const DELETE_RESTAURANT_REQUEST = 'DELETE_RESTAURANT_REQUEST';\nexport const DELETE_RESTAURANT_SUCCESS = 'DELETE_RESTAURANT_SUCCESS';\nexport const DELETE_RESTAURANT_ERROR = 'DELETE_RESTAURANT_ERROR';\n\nexport const GET_SECTION_REQUEST = 'GET_SECTION_REQUEST';\nexport const GET_SECTION_REQUEST_SUCCESS = 'GET_SECTION_REQUEST_SUCCESS';\nexport const GET_SECTION_REQUEST_ERROR = 'GET_SECTION_REQUEST_ERROR';\n","export const INIT_START = 'INIT_START';\nexport const INIT_END = 'INIT_END';\n\nexport const GET_RESTAURANT_LIST_REQUEST = 'GET_RESTAURANT_LIST_REQUEST';\nexport const GET_RESTAURANT_LIST_SUCCESS = 'GET_RESTAURANT_LIST_SUCCESS';\nexport const GET_RESTAURANT_LIST_ERROR = 'GET_RESTAURANT_LIST_ERROR';\n\nexport const CREATE_RESTAURANT_REQUEST = 'CREATE_RESTAURANT_REQUEST';\nexport const CREATE_RESTAURANT_SUCCESS = 'CREATE_RESTAURANT_SUCCESS';\nexport const CREATE_RESTAURANT_ERROR = 'CREATE_RESTAURANT_ERROR';\nexport const CREATE_RESTAURANT_RESET_SUCCESS_STATUS = 'CREATE_RESTAURANT_RESET_SUCCESS_STATUS';\n\nexport const SET_CURRENT_RESTAURANT = 'SET_CURRENT_RESTAURANT';\n\nexport const OPEN_MODAL = 'OPEN_MODAL';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\n\nexport const SHOW_WARNING = 'SHOW_WARNING';\nexport const HIDE_WARNING = 'HIDE_WARNING';\n\nexport const UPDATE_RESTAURANT_LIST = 'UPDATE_RESTAURANT_LIST';\n\nexport const OPEN_CONFIRM_RESERVE_MODAL = 'OPEN_CONFIRM_RESERVE_MODAL';\nexport const CLOSE_CONFIRM_RESERVE_MODAL = 'CLOSE_CONFIRM_RESERVE_MODAL';\n\nexport const SWITCH_IIKO_MODAL = 'SWITCH_IIKO_MODAL';\nexport const CHECK_RESTAURANT_FROM_IIKO_REQUEST = 'CHECK_RESTAURANT_FROM_IIKO_REQUEST';\nexport const CHECK_RESTAURANT_FROM_IIKO_ERROR = 'CHECK_RESTAURANT_FROM_IIKO_ERROR';\nexport const NEED_AUTH_FROM_IIKO = 'NEED_AUTH_FROM_IIKO';\n\nexport const CASHBOX_CONNECT_STATUS_REQUEST = 'CASHBOX_CONNECT_STATUS_REQUEST';\nexport const CASHBOX_CONNECT_STATUS_SUCCESS = 'CASHBOX_CONNECT_STATUS_SUCCESS';\nexport const CASHBOX_CONNECT_STATUS_ERROR = 'CASHBOX_CONNECT_STATUS_ERROR';\n\nexport const CASHBOX_PLUGIN_STATUS_REQUEST = 'CASHBOX_PLUGIN_STATUS_REQUEST';\nexport const CASHBOX_PLUGIN_STATUS_SUCCESS = 'CASHBOX_PLUGIN_STATUS_SUCCESS';\nexport const CASHBOX_PLUGIN_STATUS_ERROR = 'CASHBOX_PLUGIN_STATUS_ERROR';\n\nexport const SWITCH_CUSTOM_DATE_MODAL = 'SWITCH_CUSTOM_DATE_MODAL';\nexport const CHANGE_CUSTOM_DATE = 'CHANGE_CUSTOM_DATE';\n\nexport const SWITCH_AUDIO_NOTIFICATION = 'SWITCH_AUDIO_NOTIFICATION';\n","import { PhoneNumberUtil, PhoneNumberFormat as PNF, PhoneNumber } from 'google-libphonenumber';\nimport { getPhoneCodes } from '../config/constants';\n\nconst phoneUtil = PhoneNumberUtil.getInstance();\n\n/**\n * Возвращает разницу в процентах\n * @param {number} previous\n * @param {number} current\n * @returns {number}\n */\nconst getPercentDiff = (previous: number, current: number): number => {\n const previousResult = previous || 1;\n const currentResult = current || 1;\n\n return Math.round(100 * (currentResult - previousResult) / previousResult);\n};\n\n\n/**\n * Группировка массива по переданным параметрам\n * @param array - группируемый массив\n * @param props - groupByProperties = ['firstParam', 'secondSecond, ...']\n */\nfunction groupBy({ Group: array, By: props }: { Group: Array; By: Array; }): Array> {\n const getGroupedItems = (item: any) => {\n const returnArray = [];\n let i;\n for (i = 0; i < props.length; i += 1) {\n returnArray.push(item[props[i]]);\n }\n return returnArray;\n };\n\n const groups: any = {};\n\n let i;\n\n for (i = 0; i < array.length; i += 1) {\n const arrayRecord = array[i];\n const group: string = JSON.stringify(getGroupedItems(arrayRecord));\n groups[group] = groups[group] || [];\n groups[group].push(arrayRecord);\n }\n\n return Object.keys(groups).map(group => groups[group]);\n}\n\n/** @description Функция для валютного символа */\nfunction getMoneySymbol(countryCode: string): '₽' | '₴' {\n switch (countryCode) {\n case 'RU':\n return '₽';\n case 'UA':\n return '₴';\n default: return '₽';\n }\n}\n\nconst saveCurrentRestaurantIdToLocalStorage = (id: number | null | undefined) => {\n const name = 'currentRestaurant';\n\n if (id) {\n localStorage.setItem(name, JSON.stringify(id));\n } else {\n localStorage.removeItem(name);\n }\n};\n\nconst getCurrentRestaurantIdFromLocalStorage = (): number | null => {\n const name = 'currentRestaurant';\n const storage = localStorage.getItem(name);\n\n if (storage) {\n const id = JSON.parse(storage);\n if (!isNaN(id) && id) {\n return id;\n }\n }\n\n return null;\n};\n\nconst parsePhone = (input: string, region?: string) => {\n const regions = region ? [region] : getPhoneCodes().map(phoneCode => phoneCode.key.toUpperCase());\n\n for (let i = 0; i < regions.length; i += 1) {\n let phoneNumber: PhoneNumber | false;\n\n try {\n phoneNumber = phoneUtil.parseAndKeepRawInput(input, regions[i]);\n } catch (error) {\n phoneNumber = false;\n }\n\n if (phoneNumber && phoneUtil.isValidNumberForRegion(phoneNumber, regions[i])) {\n return phoneNumber;\n }\n }\n\n return false;\n};\n\n// const formatPhone = (phoneNumber: PhoneNumber) => phoneUtil.format(phoneNumber, PNF.INTERNATIONAL);\nconst formatPhone = (phoneNumber: PhoneNumber) => phoneUtil.format(phoneNumber, PNF.E164);\n\nexport {\n getPercentDiff,\n groupBy,\n getMoneySymbol,\n saveCurrentRestaurantIdToLocalStorage,\n getCurrentRestaurantIdFromLocalStorage,\n parsePhone,\n formatPhone,\n};\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport { groupBy } from './helpers';\nimport {\n TWeekDay,\n IScheduleGroup,\n IScheduleRow,\n IRestaurantWorkTimes,\n} from '../types/IScheduleStore';\nimport { emptyString, weekDays } from '../config/constants';\nimport { parseTimeByString } from './dateHelpers';\n\n/**\n * Сортировка расписания по дням недели.\n * @param scheduleList\n * @returns {this | void}\n */\nfunction sortWeekdays(scheduleList: Array) {\n const sorter: {[days: string]: number} = {\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n SUNDAY: 7,\n };\n\n return scheduleList.sort((a, b) => sorter[a] - sorter[b]);\n}\n\n/**\n * @description Парсим дату из строки в инт\n * @param {string} time\n * @return {number}\n */\nfunction parseTimeToInt(time: string): number {\n const parseTime = time\n .split(':')\n .slice(0, 2)\n .join('');\n\n return parseInt(parseTime);\n}\n\n/** @description Функция для получения следующего дня недели */\nfunction getNextWeekDay(day: string): string {\n switch (day) {\n case weekDays.MONDAY:\n return weekDays.TUESDAY;\n case weekDays.TUESDAY:\n return weekDays.WEDNESDAY;\n case weekDays.WEDNESDAY:\n return weekDays.THURSDAY;\n case weekDays.THURSDAY:\n return weekDays.FRIDAY;\n case weekDays.FRIDAY:\n return weekDays.SATURDAY;\n case weekDays.SATURDAY:\n return weekDays.SUNDAY;\n case weekDays.SUNDAY:\n return weekDays.MONDAY;\n default: return emptyString;\n }\n}\n\n/** @description Мержим расписание для формирования списка времени работы ресторана */\nfunction getMergedSchedule(scheduleList: Array): IRestaurantWorkTimes {\n return scheduleList.reduce((schedule: any, group) => {\n if (group.records.length > 1) {\n const nextDay = getNextWeekDay(group.day);\n const time = {\n start: '',\n end: '',\n };\n\n group.records.forEach(i => i.day === group.day\n ? time.start = i.start\n : time.end = i.end);\n\n return {\n ...schedule,\n [group.day]: {\n ...schedule[group.day],\n start: time.start.slice(0, 5),\n end: time.end.slice(0, 5),\n },\n [nextDay]: {\n ...schedule[nextDay],\n previous: time.end.slice(0, 5),\n },\n };\n }\n\n return {\n ...schedule,\n [group.day]: {\n ...schedule[group.day],\n start: group.records[0].start.slice(0, 5),\n end: group.records[0].end.slice(0, 5),\n },\n };\n }, {});\n}\n\n/** @description Получаем группы букинга для редактирования */\nfunction getBookingGroupsForForceUpdate(\n days: Array,\n groups: Array,\n newTimes: {\n start: string;\n end: string;\n },\n) {\n const mergedGroups = getMergedSchedule(groups);\n\n return groups.reduce((list: Array, group) => {\n if (days.indexOf(group.day) > -1) {\n const schedule = mergedGroups[group.day];\n\n const parseScheduleStart = parseTimeToInt(schedule.start);\n const parseNewStart = parseTimeToInt(newTimes.start);\n const parseScheduleEnd = parseTimeToInt(schedule.end);\n const parseNewEnd = parseTimeToInt(newTimes.end);\n\n if (parseScheduleStart < parseNewStart || parseScheduleEnd > parseNewEnd) {\n const overMidnight = group.records.length > 1;\n const newEndOverMidnight = parseNewStart > parseNewEnd;\n\n // Если время работы до полуночи и открытие позже чем было\n if (!overMidnight && parseScheduleStart < parseNewStart) {\n return [\n ...list, {\n ...group,\n records: [{\n ...group.records[0],\n start: newTimes.start,\n }],\n },\n ];\n }\n\n // Если время работы после полуночи и открытие позже чем было\n if (overMidnight && parseScheduleStart < parseNewStart) {\n return [\n ...list, {\n ...group,\n records: group.records.map((r) => {\n if (r.day === group.day) {\n return {\n ...r,\n start: newTimes.start,\n };\n }\n\n return r;\n }),\n },\n ];\n }\n\n // Если время работы до полуночи и закрытие раньше чем было\n if (!overMidnight && parseScheduleEnd > parseNewEnd) {\n return [\n ...list, {\n ...group,\n records: [{\n ...group.records[0],\n end: !newEndOverMidnight ? newTimes.end : group.records[0].end,\n }],\n },\n ];\n }\n\n // Если время работы после полуночи и закрытие раньше чем было\n if (overMidnight && parseScheduleEnd > parseNewEnd) {\n // Если в новом расписание время работы до полуночи\n if (parseScheduleStart < parseNewEnd) {\n return [\n ...list, {\n ...group,\n records: [{\n ...group.records[0],\n end: !newEndOverMidnight ? newTimes.end : group.records[0].end,\n }],\n },\n ];\n }\n\n return [\n ...list, {\n ...group,\n records: group.records.map((r) => {\n if (r.day !== group.day) {\n return {\n ...r,\n end: newTimes.end,\n };\n }\n\n return r;\n }),\n },\n ];\n }\n\n return list;\n }\n\n return list;\n }\n\n return list;\n }, []);\n}\n\n/** @description Получение списка групп для апдейта */\nfunction getGroupsForUpdate(\n row: IScheduleRow,\n groups: Array,\n initRow: IScheduleRow,\n): Array {\n if (row.start === initRow.start && row.end === initRow.end) {\n return [];\n }\n\n return row.days.reduce((g: Array, d: string) => {\n const group = _.find(groups, { day: d });\n\n if (group) {\n const start = parseTimeToInt(row.start);\n const end = parseTimeToInt(row.end);\n const overMidnight = group.records.length > 1;\n\n // Если в новом и старом расписание время работы после полуночи\n if (overMidnight && (start > end)) {\n return [...g, {\n ...group,\n records: group.records.map(i => i.day === group.day\n ? { ...i, start: row.start, id: undefined }\n : { ...i, end: row.end, id: undefined }),\n }];\n }\n\n // Если только в новом расписание время работы после полуночи\n if (!overMidnight && (start > end)) {\n const records = group.records.map(i => ({\n ...i,\n start: row.start,\n end: '23:59:59',\n id: undefined,\n }));\n\n return [...g, {\n ...group,\n records: [...records, {\n start: '00:00:00',\n end: row.end,\n isWorkingTime: true,\n day: getNextWeekDay(group.day),\n type: group.type,\n }],\n }];\n }\n\n // Если только в старом расписание время работы после полуночи\n if (overMidnight && (start < end)) {\n const schedule = _.find(group.records, { day: group.day });\n return [...g, {\n ...group,\n records: schedule ? [{\n ...schedule,\n start: row.start,\n end: row.end,\n id: undefined,\n }] : [{\n start: row.start,\n end: row.end,\n isWorkingTime: true,\n day: group.day,\n type: group.type,\n }],\n }];\n }\n\n // По дефолту считаем что оба расписания до полуночи\n return [...g, {\n ...group,\n records: [{\n ...group.records[0],\n start: row.start,\n end: row.end,\n id: undefined,\n }],\n }];\n }\n\n return g;\n }, []);\n}\n\n/** @description Список новых дней которые нужно создать */\nfunction getNewGroupForCreate(\n newRow: IScheduleRow,\n initRows: Array,\n restaurantId: number,\n type: 'BOOKING' | 'RESTAURANT',\n): Array {\n return _\n .difference(newRow.days, initRows)\n .map(day => ({\n day,\n restaurantId,\n type,\n records: parseTimeToInt(newRow.start) < parseTimeToInt(newRow.end)\n ? [{\n start: newRow.start,\n end: newRow.end,\n isWorkingTime: true,\n day,\n type,\n }]\n : [\n {\n start: newRow.start,\n end: '23:59:59',\n isWorkingTime: true,\n day,\n type,\n },\n {\n start: '00:00:00',\n end: newRow.end,\n isWorkingTime: true,\n day: getNextWeekDay(day),\n type,\n },\n ],\n }));\n}\n\n/** @description Список ID дней которые нужно удалить */\nfunction getScheduleForDelete(\n days: Array,\n initDays: Array,\n groups: Array,\n): Array {\n return _\n .difference(initDays, days)\n .reduce((ids: Array, day: string) => {\n const group = _.find(groups, { day });\n\n if (group && group.id) {\n return [...ids, group.id];\n }\n\n return ids;\n }, []);\n}\n\nfunction getWorkTimeForAutoBooking(workDays: Array, restaurantWorkTimes: IRestaurantWorkTimes): Array {\n if (!workDays || !restaurantWorkTimes || _.isEmpty(restaurantWorkTimes)) {\n return [];\n }\n\n const workPeriod = workDays.reduce((period: any, day, i) => {\n // @ts-ignore\n const d = restaurantWorkTimes[day];\n\n if (!d || !d.start || !d.end) {\n return period;\n }\n\n if (i === 0) {\n return {\n start: d.start,\n end: d.end,\n parseStart: parseInt(d.start.replace(/[^0-9]/g)),\n parseEnd: parseInt(d.end.replace(/[^0-9]/g)),\n };\n }\n\n if (period.start !== d.start || period.end !== d.end) {\n const parseNewStart = parseInt(d.start.replace(/[^0-9]/g));\n const parseNewEnd = parseInt(d.end.replace(/[^0-9]/g));\n\n return {\n start: period.parseStart > parseNewStart ? period.start : d.start,\n end: period.parseEnd <= parseNewEnd ? period.end : d.end,\n parseStart: parseNewStart,\n parseEnd: parseNewEnd,\n };\n }\n\n return period;\n }, {\n start: '',\n end: '',\n parseStart: 0,\n parseEnd: 0,\n });\n\n if (workPeriod.start === '' || workPeriod.end === '' || !workPeriod.start || !workPeriod.end) {\n return [];\n }\n\n const timeList = [];\n const start = parseTimeByString(moment(), workPeriod.start);\n const end = parseTimeByString(moment(), workPeriod.end);\n\n const stop = end > start\n ? end\n .diff(start, 'minutes') / 15\n : end\n .add(1, 'day')\n .diff(start, 'minutes') / 15;\n\n for (let i = 0; i <= stop; i += 1) {\n start.add(i === 0 ? 0 : 15, 'minutes');\n timeList.push(start.format('HH:mm'));\n }\n\n return timeList;\n}\n\n/** @description Формирование строк расписания */\nfunction getSchedulesRows(groups: Array): Array {\n const parseGroup = groups.map((g) => {\n const { records } = g;\n\n if (records.length > 1) {\n const [thisDay] = records.filter(s => s.day === g.day);\n const [nextDay] = records.filter(s => s.day !== g.day);\n return {\n ...g,\n start: thisDay ? thisDay.start : '00:00:00',\n end: nextDay ? nextDay.end : thisDay.end,\n };\n }\n\n return {\n ...g,\n start: records[0].start,\n end: records[0].end,\n };\n });\n\n return groupBy({ Group: parseGroup, By: ['start', 'end'] })\n .map(r => ({\n id: Math.floor(Math.random() * 10000000),\n start: r[0].start.slice(0, 5),\n end: r[0].end.slice(0, 5),\n days: r.map(d => d.day),\n }));\n}\n\nexport {\n getBookingGroupsForForceUpdate,\n getSchedulesRows,\n getMergedSchedule,\n getNewGroupForCreate,\n getScheduleForDelete,\n getGroupsForUpdate,\n getWorkTimeForAutoBooking,\n parseTimeToInt,\n sortWeekdays,\n};\n","import moment, { Moment } from 'moment';\nimport _ from 'lodash';\n\nimport { dashBoardDates, emptyString, emptyTime } from '../config/constants';\nimport { TReserve } from '../types/IBookingStore';\nimport { IRestaurantWorkTimes, IWorkTime } from '../types/IScheduleStore';\nimport { parseTimeToInt } from './scheduleHelpers';\n\n/** @description Парсинг даты для запроса статистики */\nconst parseDateForStatisticReq = (period: any): any => {\n const today = moment().endOf('day');\n let date = null;\n\n switch (period.type || period) {\n case dashBoardDates.today: {\n date = {\n from: moment()\n .startOf('day'),\n to: today,\n };\n break;\n }\n case dashBoardDates.tomorrow: {\n date = {\n from: moment()\n .subtract(1, 'day')\n .startOf('day'),\n to: moment()\n .subtract(1, 'day')\n .endOf('day'),\n };\n break;\n }\n case dashBoardDates.seven: {\n date = {\n from: moment()\n .subtract(7, 'day')\n .startOf('day'),\n to: today,\n };\n break;\n }\n case dashBoardDates.fourteen: {\n date = {\n from: moment()\n .subtract(14, 'day')\n .startOf('day'),\n to: today,\n };\n break;\n }\n case dashBoardDates.twentyEight: {\n date = {\n from: moment()\n .subtract(28, 'day')\n .startOf('day'),\n to: today,\n };\n break;\n }\n case dashBoardDates.sixty: {\n date = {\n from: moment()\n .subtract(60, 'day')\n .startOf('day'),\n to: today,\n };\n break;\n }\n case dashBoardDates.firstMonth: {\n date = {\n from: moment()\n .subtract(2, 'month')\n .startOf('month'),\n to: moment()\n .subtract(2, 'month')\n .endOf('month'),\n };\n break;\n }\n case dashBoardDates.secondMonth: {\n date = {\n from: moment()\n .subtract(1, 'month')\n .startOf('month'),\n to: moment()\n .subtract(1, 'month')\n .endOf('month'),\n };\n break;\n }\n case dashBoardDates.currentMonth: {\n date = {\n from: moment().startOf('month'),\n to: today,\n };\n break;\n }\n\n case dashBoardDates.custom: {\n return period.value;\n }\n\n default:\n date = {\n from: moment().startOf('day'),\n to: today,\n };\n }\n\n return {\n from: date.from.format('YYYY-MM-DDTHH:mm:00'),\n to: date.to.format('YYYY-MM-DDTHH:mm:00'),\n };\n};\n\n/** @description Возвращаем месяц для дейт пикера */\nconst monthForPeriodPicker = (period: any): any => {\n switch (period) {\n case dashBoardDates.firstMonth: {\n const month = moment().subtract(2, 'month').format('MMMM YYYY');\n return month[0].toUpperCase() + month.slice(1);\n }\n case dashBoardDates.secondMonth: {\n const month = moment().subtract(1, 'month').format('MMMM YYYY');\n return month[0].toUpperCase() + month.slice(1);\n }\n case dashBoardDates.currentMonth: {\n const month = moment().format('MMMM YYYY');\n return month[0].toUpperCase() + month.slice(1);\n }\n\n default: return '';\n }\n};\n\n/**\n * Возвращает дату для таблицы резервов в формате HH:mm\n * @param date\n * @returns {string}\n */\nconst parseDateFromBookingList = (date: any): any => moment(date).format('HH:mm');\n\n/**\n * Возвращает дату для таблицы резервов в формате \"21 апр. 21:30\"\n * @param date\n * @returns {string}\n */\nconst parseCreateDateFromBookingList = (date: any): any => moment(date)\n .locale('ru')\n .format('DD MMM HH:mm');\n\n/**\n * Возвращает дату для пикера в разделе резервы DD:MMMM\n * @param date\n */\n// TODO надо продумать обработку кейсов когда прилетает невалидная date\nconst parseDateFromBookingDatePicker = (date: any): any => {\n if (!_.isUndefined(date)) {\n if (moment(date).format('YYYY:MM:DD') === moment().format('YYYY:MM:DD')) {\n return {\n date: `Сегодня, ${moment(date).format('D MMM')}`,\n day: moment(date).locale('ru').format('dddd'),\n };\n }\n\n return {\n date: moment(date).format('D MMM'),\n day: moment(date).locale('ru').format('dddd'),\n };\n }\n return {\n date: 'Дата не валидна, обновите страницу.',\n };\n};\n\n/** @description Возращает период */\nconst getPeriod = (date: {\n from: string;\n to: string;\n}): string => {\n const from = moment(date.from);\n const to = moment(date.to);\n\n const diffDays: any = to.diff(from, 'days');\n\n switch (diffDays) {\n case diffDays < 7 || (diffDays > 7 && diffDays < 31):\n return 'DAY';\n case diffDays > 31:\n return 'MONTH';\n default:\n return 'DAY';\n }\n};\n\n/** @description Возвращает формат даты */\nconst getDateFormat = (date: {\n from: string;\n to: string;\n}): string => {\n const from = moment(date.from);\n const to = moment(date.to);\n\n const diffDays: any = to.diff(from, 'days');\n\n switch (diffDays) {\n case diffDays < 7:\n return 'ddd';\n case diffDays > 7 && diffDays < 31:\n return 'DD.MM';\n case diffDays > 31:\n return 'MM.YYYY';\n default:\n return 'ddd';\n }\n};\n\n/**\n * @description Округление текущей даты\n * @param roundBy - дефолтное значение 15\n * @returns {Object}\n */\nconst roundCurrentTimeBy = (roundBy: number = 15): Moment => {\n const interval = roundBy * 60 * 1000;\n // @ts-ignore\n return moment(Math.ceil(moment() / interval) * interval);\n};\n\n/**\n * @description Ближайшая дата для резерва: следующая 15-минутная отсечка;\n * если до ближайшей меньше 10 минут, то через одну\n */\nconst getNextTime = (): Date => {\n const interval = 15;\n const gap = 10;\n const ms = 60 * 1000;\n const intervalMs = interval * ms;\n\n const now = Date.now();\n let next = Math.ceil(now / intervalMs) * intervalMs;\n\n if (now + gap * ms > next) {\n next += intervalMs;\n }\n\n return new Date(next);\n};\n\n/**\n * @description Слияние даты и времени для запроса на бронирование\n * @param {date} date\n * @param {string} time\n */\nconst mergeDateAndTime = (date: any, time: any): any => {\n const parseTime = time.split(':');\n return moment(date).set(({\n hour: parseTime[0], minute: parseTime[1], second: 0, millisecond: 0,\n }));\n};\n\n/**\n * @description Ищем новую дату\n * @param oldTimeList\n * @param newTimeList\n * @param time\n */\nconst getSelectedTimeFromByNewDate = (\n oldTimeList: Array, newTimeList: Array, time: string,\n) => {\n const oldTime = _.find(oldTimeList, t => t.value === time);\n\n if (oldTime) {\n const time = _.find(newTimeList, { label: oldTime.label, type: oldTime.type });\n return time ? time.value : emptyTime;\n }\n\n return newTimeList.length > 0 ? newTimeList[0].value : emptyTime;\n};\n\n/**\n * @description Парсинг времени для getTimeList\n * @param date\n * @param time - Время в виде строки в формате HH:MM\n */\nconst parseTimeByString = (date: Moment, time: string): Moment => {\n const parse = time\n .split(':')\n .map(i => parseInt(i));\n\n return moment(date).hours(parse[0]).minutes(parse[1]);\n};\n\n/**\n * @description Генерация времени для getTimeList\n * @param start - Время начала работы ресторана\n * @param end - Время завершения работы ресторана\n * @param type - Тип времени current либо previous\n */\nconst generateTimeList = (start: Moment, end: Moment, type: string): Array => {\n const timeList = [];\n const stop = end > start\n ? end\n .diff(start, 'minutes') / 15\n : end\n .add(1, 'day')\n .diff(start, 'minutes') / 15;\n\n for (let i = 0; i <= stop; i += 1) {\n start.add(i === 0 ? 0 : 15, 'minutes');\n timeList.push({\n label: start.format('HH:mm'),\n value: start.format('YYYY-MM-DDTHH:mm:00'),\n type,\n });\n }\n\n return timeList;\n};\n\n/** @description Проверяем кейс когда текущее время не попадает в рамки рабочего времени в текущий день */\nfunction isPastTime(workTime: { start: string, end: string }, selectedDate: Moment) {\n const parseStart = parseTimeToInt(workTime.start);\n const parseEnd = parseTimeToInt(workTime.end);\n const isToday = moment(0, 'HH')\n .diff(selectedDate, 'day') === 0;\n const currentTime = roundCurrentTimeBy();\n const notWorkingTime = currentTime.diff(parseTimeByString(moment(), workTime.end)) > 0;\n\n return parseStart < parseEnd && isToday && notWorkingTime;\n}\n\n/**\n * @description Формирование списка для бронирования\n * @param date - Дата дня для которого нужно получить расписание\n * @param scheduleList - Расписание работы ресторана\n * @param isEdit - Флаг для определения для какой формы генерим расписание\n */\nconst getTimeList = (\n date: Moment | string, scheduleList?: IRestaurantWorkTimes, isEdit?: boolean,\n): Array => {\n const selectedDate = moment(date);\n const weekDay = moment(date)\n .locale('en')\n .format('dddd')\n .toUpperCase();\n\n const currentWorkTime = scheduleList ? scheduleList[weekDay] : null;\n let timeLabels;\n\n if (\n !currentWorkTime\n || !(currentWorkTime.start && currentWorkTime.end)\n || isPastTime(currentWorkTime, selectedDate)\n ) {\n return [];\n }\n\n const isToday = moment(0, 'HH')\n .diff(date, 'day') === 0;\n\n if (currentWorkTime.start && currentWorkTime.end) {\n const currentTime = roundCurrentTimeBy();\n const notWorkingTime = parseTimeByString(moment(), currentWorkTime.start).diff(currentTime) > 0;\n\n const startTime = (!isToday || notWorkingTime) ? parseTimeByString(selectedDate, currentWorkTime.start) : currentTime;\n const endTime = parseTimeByString(selectedDate, currentWorkTime.end);\n\n timeLabels = generateTimeList(startTime, endTime, 'current');\n\n // Для кейса когда открываем форму редактирования и время брони уже прошло\n if (isEdit && (\n _.findIndex(timeLabels, { value: selectedDate.format('YYYY-MM-DDTHH:mm:00') }) === -1\n )) {\n timeLabels.unshift({\n value: moment(selectedDate).format('YYYY-MM-DDTHH:mm:00'),\n type: '',\n label: moment(selectedDate).format('HH:mm'),\n });\n }\n }\n\n if (currentWorkTime.previous && !isToday) {\n const previousDay = moment(selectedDate);\n const previousDayStart = moment(previousDay).hours(0).minutes(0);\n const previousDayEnd = parseTimeByString(previousDay, currentWorkTime.previous);\n\n const previousDayEndTimeLabels = generateTimeList(previousDayStart, previousDayEnd, 'previous');\n\n return previousDayEndTimeLabels.concat([{\n label: emptyString, value: emptyString, type: 'previous',\n }], timeLabels || []);\n }\n\n return timeLabels || [];\n};\n\n/** @description Парсинг статуса брони */\nconst getBookingStatus = (booking: TReserve): string => {\n const currentDate = moment();\n const bookingDate = moment(booking.date);\n const dateDiff = bookingDate.diff(currentDate, 'minutes');\n\n if (bookingDate < currentDate) {\n return 'GUEST_IS_LATE';\n } if (dateDiff <= 60) {\n return 'NEED_PREPARE_TABLE';\n } return booking.state;\n};\n\n/** @description Парсинг даты для отправки на бэк */\nconst parseDateForReq = (date: string | Moment): string => moment(date).format('YYYY-MM-DDTHH:mm:00');\n\n/** @description Разбираем минуты на часы и минуты */\nfunction getHoursAndMinutes(ms: number): { h: number, m: number } {\n const h = Math.floor(ms / 60);\n const m = ms - (h * 60);\n\n return { h, m };\n}\n\nexport {\n parseDateForStatisticReq,\n parseDateFromBookingList,\n parseCreateDateFromBookingList,\n getPeriod,\n getDateFormat,\n getHoursAndMinutes,\n getSelectedTimeFromByNewDate,\n parseDateFromBookingDatePicker,\n getTimeList,\n generateTimeList,\n parseTimeByString,\n roundCurrentTimeBy,\n mergeDateAndTime,\n getBookingStatus,\n parseDateForReq,\n monthForPeriodPicker,\n getNextTime,\n};\n","import _ from 'lodash';\nimport moment from 'moment';\n\nimport {\n AUTH_FORM_IIKO_SUCCESS,\n SELECT_ORGANIZATION_SUCCESS,\n} from '../actions/home/HomeActionTypes';\nimport { DELETE_RESTAURANT_SUCCESS } from '../actions/restaurant/RestaurantsActionTypes';\nimport {\n CASHBOX_CONNECT_STATUS_SUCCESS,\n CASHBOX_PLUGIN_STATUS_SUCCESS,\n CHANGE_CUSTOM_DATE,\n CLOSE_MODAL,\n CREATE_RESTAURANT_ERROR,\n CREATE_RESTAURANT_RESET_SUCCESS_STATUS,\n CREATE_RESTAURANT_SUCCESS,\n GET_RESTAURANT_LIST_ERROR,\n GET_RESTAURANT_LIST_SUCCESS,\n HIDE_WARNING,\n INIT_END,\n NEED_AUTH_FROM_IIKO,\n OPEN_MODAL,\n SET_CURRENT_RESTAURANT,\n SHOW_WARNING,\n SWITCH_CUSTOM_DATE_MODAL,\n SWITCH_IIKO_MODAL,\n UPDATE_RESTAURANT_LIST,\n} from '../actions/cabinet/CabinetActionsTypes';\nimport { ICabinetStore } from '../types/ICabinetStore';\nimport { IAppActions } from '../types/IAppActions';\nimport { dashBoardDates } from '../config/constants';\nimport { parseDateForStatisticReq } from '../helpers/dateHelpers';\nimport {\n getCurrentRestaurantIdFromLocalStorage,\n getMoneySymbol,\n saveCurrentRestaurantIdToLocalStorage,\n} from '../helpers/helpers';\n\nexport const initState: ICabinetStore = {\n restaurantList: [],\n audioNotification: true,\n error: undefined,\n createRestaurantError: false,\n createRestaurantSuccess: false,\n currentRestaurant: undefined,\n moneySymbol: '₽',\n isInit: false,\n modalOpen: false,\n modalAuthIikoOpen: false,\n warningOpen: false,\n iikoAuth: {\n needAuthFromIiko: false,\n organizationList: [],\n step: 1,\n },\n cashBoxStatus: undefined,\n cashBoxPlugins: undefined,\n bookingQueue: [],\n StatisticCustomDateModalOpen: false,\n StatisticDate: {\n type: dashBoardDates.today,\n value: parseDateForStatisticReq(moment()),\n },\n};\n\n// TODO Нужно перенести логику лоадера в отдельный редюсер\nexport default function reducer(state: ICabinetStore = initState, action: IAppActions): ICabinetStore {\n switch (action.type) {\n case INIT_END: {\n return {\n ...state,\n isInit: true,\n };\n }\n\n case GET_RESTAURANT_LIST_SUCCESS: {\n const restaurants = action.payload;\n const savedRestaurantId = getCurrentRestaurantIdFromLocalStorage();\n let currentRestaurant = undefined;\n\n if (restaurants.length > 0) {\n if (savedRestaurantId) {\n currentRestaurant = restaurants.find(x => x.id === savedRestaurantId);\n }\n\n if (!currentRestaurant) {\n currentRestaurant = restaurants[0];\n }\n }\n\n saveCurrentRestaurantIdToLocalStorage(currentRestaurant && currentRestaurant.id);\n\n return {\n ...state,\n restaurantList: restaurants,\n currentRestaurant,\n moneySymbol: getMoneySymbol(currentRestaurant ? currentRestaurant.address.countryCode : 'RU'),\n error: undefined,\n };\n }\n\n case GET_RESTAURANT_LIST_ERROR: {\n return {\n ...state,\n error: action.error,\n };\n }\n\n case CREATE_RESTAURANT_ERROR: {\n return {\n ...state,\n createRestaurantError: true,\n };\n }\n\n case CREATE_RESTAURANT_SUCCESS:\n return {\n ...state,\n createRestaurantSuccess: true,\n }\n\n case CREATE_RESTAURANT_RESET_SUCCESS_STATUS:\n return {\n ...state,\n createRestaurantSuccess: false,\n }\n\n case SET_CURRENT_RESTAURANT: {\n const restaurant = _.find(state.restaurantList, { id: action.payload.restaurantId });\n saveCurrentRestaurantIdToLocalStorage(action.payload.restaurantId);\n\n return {\n ...state,\n iikoAuth: {\n needAuthFromIiko: restaurant ? !restaurant.settings.iikoOrganizationId : true,\n organizationList: [],\n step: 1,\n },\n currentRestaurant: restaurant,\n moneySymbol: getMoneySymbol(restaurant ? restaurant.address.countryCode : 'RU'),\n };\n }\n\n case OPEN_MODAL:\n return {\n ...state,\n modalOpen: true,\n };\n\n case UPDATE_RESTAURANT_LIST:\n return {\n ...state,\n restaurantList: state.restaurantList.concat(action.payload),\n };\n\n case CLOSE_MODAL:\n return {\n ...state,\n modalOpen: false,\n };\n\n case SELECT_ORGANIZATION_SUCCESS: {\n return {\n ...state,\n modalAuthIikoOpen: !state.modalAuthIikoOpen,\n iikoAuth: {\n ...state.iikoAuth,\n needAuthFromIiko: false,\n },\n };\n }\n\n case SWITCH_IIKO_MODAL: {\n return {\n ...state,\n modalAuthIikoOpen: !state.modalAuthIikoOpen,\n };\n }\n\n case NEED_AUTH_FROM_IIKO: {\n return {\n ...state,\n iikoAuth: {\n ...state.iikoAuth,\n needAuthFromIiko: true,\n },\n };\n }\n\n case AUTH_FORM_IIKO_SUCCESS: {\n return {\n ...state,\n iikoAuth: {\n needAuthFromIiko: true,\n organizationList: action.payload,\n step: 2,\n },\n };\n }\n\n case CASHBOX_CONNECT_STATUS_SUCCESS: {\n return {\n ...state,\n cashBoxStatus: action.payload.active,\n };\n }\n\n case CASHBOX_PLUGIN_STATUS_SUCCESS: {\n return {\n ...state,\n cashBoxPlugins: action.payload,\n };\n }\n\n case SHOW_WARNING:\n return {\n ...state,\n warningOpen: true,\n };\n\n case HIDE_WARNING: {\n return {\n ...state,\n warningOpen: false,\n };\n }\n\n case DELETE_RESTAURANT_SUCCESS: {\n saveCurrentRestaurantIdToLocalStorage(null);\n\n return {\n ...state,\n currentRestaurant: undefined,\n cashBoxStatus: undefined,\n cashBoxPlugins: undefined,\n };\n }\n\n case SWITCH_CUSTOM_DATE_MODAL: {\n return {\n ...state,\n StatisticCustomDateModalOpen: !state.StatisticCustomDateModalOpen,\n };\n }\n\n case CHANGE_CUSTOM_DATE: {\n return {\n ...state,\n StatisticDate: action.payload,\n };\n }\n\n default:\n return state;\n }\n}\n","import 'moment/locale/ru';\n\nimport { DELETE_RESTAURANT_REQUEST } from '../actions/restaurant/RestaurantsActionTypes';\nimport { IHomeStore } from '../types/IHomeStore';\nimport { IAppActions } from '../types/IAppActions';\nimport * as HomeActionTypes from '../actions/home/HomeActionTypes';\n\nexport const initState: IHomeStore = {\n connectError: null,\n connectStatus: false,\n organizationList: [],\n pinCodeModal: false,\n getStatisticError: false,\n getAttendanceProcess: false,\n getAttendanceError: false,\n currentRestaurantStatistic: undefined,\n currentRestaurantAttendance: undefined,\n pinCode: undefined,\n timeLeft: null,\n connectProcess: false,\n};\n\nexport default function reducer(state = initState, action: IAppActions): IHomeStore {\n switch (action.type) {\n case HomeActionTypes.CONNECT_RESTAURANT_SUCCESS:\n return {\n ...state,\n connectStatus: true,\n connectProcess: false,\n connectError: null,\n };\n\n case HomeActionTypes.RESET_CONNECT_STATUS:\n return {\n ...state,\n connectStatus: false,\n };\n\n case HomeActionTypes.AUTH_FORM_IIKO_SUCCESS:\n return {\n ...state,\n organizationList: action.payload,\n };\n\n case HomeActionTypes.OPEN_PIN_CODE_MODAL_STATE: {\n return {\n ...state,\n pinCodeModal: true,\n };\n }\n\n case HomeActionTypes.CLOSE_PIN_CODE_MODAL_STATE: {\n return {\n ...state,\n pinCodeModal: false,\n };\n }\n\n case DELETE_RESTAURANT_REQUEST: {\n return {\n ...state,\n timeLeft: null,\n pinCode: undefined,\n };\n }\n\n case HomeActionTypes.GET_RESTAURANT_PIN_CODE_SUCCESS: {\n return {\n ...state,\n pinCode: action.payload.pinCode,\n timeLeft: action.payload.timeLeft,\n };\n }\n\n case HomeActionTypes.GET_STATISTIC_REQUEST: {\n return {\n ...state,\n };\n }\n\n case HomeActionTypes.GET_STATISTIC_SUCCESS: {\n return {\n ...state,\n currentRestaurantStatistic: action.payload,\n getStatisticError: true,\n };\n }\n\n case HomeActionTypes.GET_STATISTIC_ERROR: {\n return {\n ...state,\n getStatisticError: true,\n };\n }\n\n case HomeActionTypes.GET_ATTENDANCE_REQUEST: {\n return {\n ...state,\n getAttendanceProcess: true,\n };\n }\n\n case HomeActionTypes.GET_ATTENDANCE_SUCCESS: {\n return {\n ...state,\n currentRestaurantAttendance: action.payload,\n getAttendanceProcess: true,\n getAttendanceError: false,\n };\n }\n\n case HomeActionTypes.GET_ATTENDANCE_ERROR: {\n return {\n ...state,\n getAttendanceProcess: false,\n getAttendanceError: true,\n };\n }\n\n default:\n return state;\n }\n}\n","export const GET_MENU_REQUEST = 'GET_MENU_REQUEST';\nexport const GET_MENU_SUCCESS = 'GET_MENU_SUCCESS';\nexport const GET_MENU_ERROR = 'GET_MENU_ERROR';\nexport const GET_MENU_FROM_IIKO_REQUEST = 'GET_MENU_FROM_IIKO_REQUEST';\nexport const GET_MENU_FROM_IIKO_SUCCESS = 'GET_MENU_FROM_IIKO_SUCCESS';\nexport const GET_MENU_FROM_IIKO_ERROR = 'GET_MENU_FROM_IIKO_ERROR';\nexport const CHANGE_VISIBLE_MENU_LIST_ITEM = 'CHANGE_VISIBLE_MENU_LIST_ITEM';\nexport const OPEN_ALL_MENU = 'OPEN_ALL_MENU';\nexport const CLOSE_ALL_MENU = 'CLOSE_ALL_MENU';\n","import _ from 'lodash';\nimport { TMenuCategory } from '../types/IMenuStore';\n\n/** @description Парсим вес позиций из меню w - вес, t - тип */\nexport function weightParsing(w: number, t: string): string {\n switch (t) {\n case 'KILOGRAM': {\n return `${w * 1000} г`;\n }\n\n case 'PORTION': {\n return `${w * 1000} г`;\n }\n\n case 'LITER': {\n return `${w * 1000} мл`;\n }\n\n default: {\n if (!w) {\n return '-';\n }\n return `${w * 1000} г`;\n }\n }\n}\n\n/** @description Парсим меню */\n// TODO Отрефакторить\nexport function mergeMenu(menuT: any): Array {\n const menu = menuT;\n\n menu.categories = Object.assign(\n {}, ..._.map(menu.categories, category => (\n { [category.id]: { ...category, open: false, items: [] } }\n )),\n );\n\n _.map(menu.items, (item) => {\n menu.categories[item.categoryId].items = [...menu.categories[item.categoryId].items, item];\n });\n\n return Object.keys(menu.categories).map((key) => {\n if (menu.categories[key].parentCategoryId && menu.categories[menu.categories[key].parentCategoryId]) {\n menu.categories[menu.categories[key].parentCategoryId].items = [\n ...menu.categories[menu.categories[key].parentCategoryId].items,\n menu.categories[key],\n ];\n }\n\n if (!menu.categories[key].parentCategoryId) {\n return menu.categories[key];\n }\n\n return null;\n }).filter(i => i);\n}\n\n/** @description Рекурсивная функция для изменения видимости категории */\nexport function changeVisibleById(menuList: TMenuCategory, id: number): TMenuCategory {\n if (menuList.id === id) {\n return {\n ...menuList,\n open: !menuList.open,\n };\n }\n\n if (menuList.items) {\n return {\n ...menuList,\n items: menuList.items.map((i: any) => changeVisibleById(i, id)),\n };\n }\n\n return menuList;\n}\n\n/** @description Рекурсивная функция для изменения видимости всех категорий */\nexport function changeVisibleForAll(menuList: TMenuCategory, open: boolean): TMenuCategory {\n if (menuList.items) {\n return {\n ...menuList,\n open,\n items: menuList.items.map((i: any) => changeVisibleForAll(i, open)),\n };\n }\n\n return {\n ...menuList,\n open,\n };\n}\n","import { IAppActions } from '../types/IAppActions';\nimport { IMenuStore } from '../types/IMenuStore';\nimport {\n CHANGE_VISIBLE_MENU_LIST_ITEM,\n GET_MENU_FROM_IIKO_SUCCESS,\n GET_MENU_SUCCESS,\n OPEN_ALL_MENU,\n CLOSE_ALL_MENU,\n} from '../actions/menu/MenuActionsTypes';\nimport { changeVisibleById, changeVisibleForAll } from '../helpers/menuHelpers';\n\n\nexport const initState: IMenuStore = {\n id: 0,\n description: '',\n name: '',\n menuList: [],\n};\n\nexport default function reducer(state = initState, action: IAppActions): IMenuStore {\n switch (action.type) {\n case GET_MENU_FROM_IIKO_SUCCESS:\n case GET_MENU_SUCCESS: {\n return {\n ...state,\n ...action.payload,\n };\n }\n\n case CHANGE_VISIBLE_MENU_LIST_ITEM: {\n const id = action.payload;\n\n return {\n ...state,\n menuList: state.menuList.map(i => changeVisibleById(i, id)),\n };\n }\n\n case OPEN_ALL_MENU: {\n return {\n ...state,\n menuList: state.menuList.map(i => changeVisibleForAll(i, true)),\n };\n }\n\n case CLOSE_ALL_MENU: {\n return {\n ...state,\n menuList: state.menuList.map(i => changeVisibleForAll(i, false)),\n };\n }\n\n default:\n return state;\n }\n}\n","export const GET_PROGRAMS_REQUEST = 'GET_PROGRAMS_REQUEST';\nexport const GET_PROGRAMS_SUCCESS = 'GET_PROGRAMS_SUCCESS';\nexport const GET_PROGRAMS_ERROR = 'GET_PROGRAMS_ERROR';\nexport const LOAD_PROGRAMS_REQUEST = 'LOAD_PROGRAMS_REQUEST';\nexport const LOAD_PROGRAMS_SUCCESS = 'LOAD_PROGRAMS_SUCCESS';\nexport const LOAD_PROGRAMS_ERROR = 'LOAD_PROGRAMS_ERROR';\n","import {\n GET_PROGRAMS_SUCCESS,\n LOAD_PROGRAMS_SUCCESS,\n} from '../actions/promo/PromoActionsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IPromoStore } from '../types/IPromoStore';\n\nexport const initState: IPromoStore = {\n programList: [],\n};\n\nexport default function reducer(state = initState, action: IAppActions): IPromoStore {\n switch (action.type) {\n case LOAD_PROGRAMS_SUCCESS:\n case GET_PROGRAMS_SUCCESS: {\n return {\n ...state,\n programList: action.payload.programList,\n };\n }\n\n default:\n return state;\n }\n}\n","export const GET_IMAGES_REQUEST = 'GET_IMAGES_REQUEST';\nexport const GET_IMAGES_SUCCESS = 'GET_IMAGES_SUCCESS';\nexport const GET_IMAGES_ERROR = 'GET_IMAGES_ERROR';\nexport const UPLOAD_IMAGE_REQUEST = 'UPLOAD_IMAGE_REQUEST';\nexport const UPLOAD_IMAGE_SUCCESS = 'UPLOAD_IMAGE_SUCCESS';\nexport const UPLOAD_IMAGE_ERROR = 'UPLOAD_IMAGE_ERROR';\nexport const HIDE_IMAGE_REQUEST = 'HIDE_IMAGE_REQUEST';\nexport const HIDE_IMAGE_SUCCESS = 'HIDE_IMAGE_SUCCESS';\nexport const HIDE_IMAGE_ERROR = 'HIDE_IMAGE_ERROR';\nexport const SHOW_IMAGE_REQUEST = 'SHOW_IMAGE_REQUEST';\nexport const SHOW_IMAGE_SUCCESS = 'SHOW_IMAGE_SUCCESS';\nexport const SHOW_IMAGE_ERROR = 'SHOW_IMAGE_ERROR';\nexport const SET_COVER_REQUEST = 'SET_COVER_REQUEST';\nexport const SET_COVER_SUCCESS = 'SET_COVER_SUCCESS';\nexport const SET_COVER_ERROR = 'SET_COVER_ERROR';\nexport const HIDE_MAIN_IMAGE_REQUEST = 'HIDE_MAIN_IMAGE_REQUEST';\nexport const HIDE_MAIN_IMAGE_SUCCESS = 'HIDE_MAIN_IMAGE_SUCCESS';\nexport const HIDE_MAIN_IMAGE_ERROR = 'HIDE_MAIN_IMAGE_ERROR';\n","import * as ActionTypes from '../actions/photo/PhotoActionsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IPhotoStore } from '../types/IPhotoStore';\n\nexport const initState: IPhotoStore = {\n images: [],\n};\n\nexport default function reducer(state: IPhotoStore = initState, action: IAppActions): IPhotoStore {\n switch (action.type) {\n case ActionTypes.GET_IMAGES_SUCCESS:\n return {\n ...state,\n images: action.payload.imagesList,\n };\n\n case ActionTypes.SHOW_IMAGE_SUCCESS:\n return {\n ...state,\n images: state.images.map((img) => {\n if (img.id === action.payload.imageId) {\n return {\n ...img,\n isHidden: false,\n };\n }\n\n return img;\n }),\n };\n\n case ActionTypes.HIDE_IMAGE_SUCCESS:\n return {\n ...state,\n images: state.images.map((img) => {\n if (img.id === action.payload.imageId) {\n return {\n ...img,\n isHidden: true,\n };\n }\n\n return img;\n }),\n };\n\n case ActionTypes.SET_COVER_SUCCESS: {\n return {\n ...state,\n images: state.images.map((img) => {\n if (img.id === action.payload.newMainId) {\n return {\n ...img,\n isMain: true,\n isHidden: false,\n };\n }\n return {\n ...img,\n isMain: false,\n };\n }),\n };\n }\n\n case ActionTypes.HIDE_MAIN_IMAGE_SUCCESS: {\n return {\n ...state,\n images: state.images.map((img) => {\n if (img.id === action.payload.newMainId) {\n return {\n ...img,\n isMain: true,\n isHidden: false,\n };\n }\n return {\n ...img,\n isMain: false,\n isHidden: img.id === action.payload.hideImgId ? true : img.isHidden,\n };\n }),\n };\n }\n\n default:\n return state;\n }\n}\n","export const UPDATE_RESTAURANT_TABLE_REQUEST = 'UPDATE_RESTAURANT_TABLE_REQUEST';\nexport const UPDATE_RESTAURANT_TABLE_SUCCESS = 'UPDATE_RESTAURANT_TABLE_SUCCESS';\nexport const UPDATE_RESTAURANT_TABLE_ERROR = 'UPDATE_RESTAURANT_TABLE_ERROR';\nexport const GET_ALL_TABLE_REQUEST = 'GET_ALL_TABLE_REQUEST';\nexport const GET_ALL_TABLE_SUCCESS = 'GET_ALL_TABLE_SUCCESS';\nexport const GET_ALL_TABLE_ERROR = 'GET_ALL_TABLE_ERROR';\nexport const CREATE_TABLE_REQUEST = 'CREATE_TABLE_REQUEST';\nexport const CREATE_TABLE_SUCCESS = 'CREATE_TABLE_REQUEST';\nexport const CREATE_TABLE_ERROR = 'CREATE_TABLE_REQUEST';\n","export const GET_SUMMARY_STATISTICS_REQUEST = 'GET_SUMMARY_STATISTICS_REQUEST';\nexport const GET_SUMMARY_STATISTICS_SUCCESS = 'GET_SUMMARY_STATISTICS_SUCCESS';\nexport const GET_SUMMARY_STATISTICS_ERROR = 'GET_SUMMARY_STATISTICS_ERROR';\n\nexport const GET_GUEST_STATISTIC_REQUEST = 'GET_GUEST_STATISTIC ';\nexport const GET_GUEST_STATISTIC_SUCCESS = 'GET_GUEST_STATISTIC_SUCCESS';\nexport const GET_GUEST_STATISTIC_ERROR = 'GET_GUEST_STATISTIC_ERROR';\n\nexport const OPEN_BOOKING_DETAILS = 'OPEN_BOOKING_DETAILS';\nexport const OPEN_BOOKING_DETAILS_SUCCESS = 'OPEN_BOOKING_DETAILS_SUCCESS';\nexport const OPEN_BOOKING_DETAILS_ERROR = 'OPEN_BOOKING_DETAILS_ERROR';\n\nexport const CLOSE_BOOKING_DETAILS = 'CLOSE_BOOKING_DETAILS';\n","export const GET_SOURCE_STATISTIC_REQUEST = 'GET_SOURCE_STATISTIC_REQUEST';\nexport const GET_SOURCE_STATISTIC_SUCCESS = 'GET_SOURCE_STATISTIC_SUCCESS';\nexport const GET_SOURCE_STATISTIC_ERROR = 'GET_SOURCE_STATISTIC_ERROR';\nexport const GET_RESERVES_BY_SOURCE_REQUEST = 'GET_RESERVES_BY_SOURCE_REQUEST';\nexport const GET_RESERVES_BY_SOURCE_SUCCESS = 'GET_RESERVES_BY_SOURCE_SUCCESS';\nexport const GET_RESERVES_BY_SOURCE_ERROR = 'GET_RESERVES_BY_SOURCE_ERROR';\nexport const GET_SOURCE_INFO_REQUEST = 'GET_SOURCE_INFO_REQUEST';\nexport const GET_SOURCE_INFO_SUCCESS = 'GET_SOURCE_INFO_SUCCESS';\nexport const GET_SOURCE_INFO_ERROR = 'GET_SOURCE_INFO_ERROR';\n","export const GET_SCHEDULE_LIST_REQUEST = 'GET_SCHEDULE_LIST_REQUEST';\nexport const GET_SCHEDULE_LIST_SUCCESS = 'GET_SCHEDULE_LIST_SUCCESS';\nexport const GET_SCHEDULE_LIST_ERROR = 'GET_SCHEDULE_LIST_ERROR';\n\nexport const UPDATE_SCHEDULE_REQUEST = 'UPDATE_SCHEDULE_REQUEST';\nexport const UPDATE_SCHEDULE_SUCCESS = 'UPDATE_SCHEDULE_SUCCESS';\nexport const UPDATE_SCHEDULE_ERROR = 'UPDATE_SCHEDULE_ERROR';\n\nexport const FORCE_UPDATE_BOOKING_SCHEDULE = 'FORCE_UPDATE_BOOKING_SCHEDULE';\nexport const FORCE_DELETE_BOOKING_SCHEDULE = 'FORCE_DELETE_BOOKING_SCHEDULE';\n\nexport const DELETE_SCHEDULE_ROW_REQUEST = 'DELETE_SCHEDULE_ROW_REQUEST';\nexport const DELETE_SCHEDULE_ROW_SUCCESS = 'DELETE_SCHEDULE_ROW_SUCCESS';\nexport const DELETE_SCHEDULE_ROW_ERROR = 'DELETE_SCHEDULE_ROW_ERROR';\n\nexport const ADD_SCHEDULE_ROW = 'ADD_SCHEDULE_ROW';\nexport const UPDATE_FREE_DAYS = 'UPDATE_FREE_DAYS';\n","export const GET_USER_STATISTIC_REQUEST = 'GET_USER_STATISTIC_REQUEST';\nexport const GET_USER_STATISTIC_SUCCESS = 'GET_USER_STATISTIC_SUCCESS';\nexport const GET_USER_STATISTIC_ERROR = 'GET_USER_STATISTIC_ERROR';\n","import { ILoadingStore } from '../types/ILoadingStore';\nimport { IAppActions } from '../types/IAppActions';\nimport * as BookingActionsTypes from '../actions/booking/BookingActionsTypes';\nimport * as CabinetActionsTypes from '../actions/cabinet/CabinetActionsTypes';\nimport * as ReserveModalActionsTypes from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport * as ReservesSystemActionsTypes from '../actions/restaurantsInfo/RestaurantsInfoActionsTypes';\nimport * as PhotoActionsTypes from '../actions/photo/PhotoActionsTypes';\nimport * as HomeActionTypes from '../actions/home/HomeActionTypes';\nimport * as SettingsActionTypes from '../actions/restaurantsTables/RestaurantsTablesTypes';\nimport * as StatisticsActionsTypes from '../actions/statistics/StatisticsActionsTypes';\nimport * as SourceStatisticActionsTypes from '../actions/sourceStatistic/SourceStatisticActionsTypes';\nimport * as SchedulesActionTypes from '../actions/schedules/SchedulesActionTypes';\nimport * as UserStatisticActionsTypes from '../actions/userStatistic/UserStatisticActionsTypes';\n\n\nconst initState: ILoadingStore = {\n isLoading: false,\n loadingRequests: [],\n};\n\nexport default function reducer(state = initState, action: IAppActions): ILoadingStore {\n switch (action.type) {\n case SettingsActionTypes.GET_ALL_TABLE_REQUEST:\n case SettingsActionTypes.UPDATE_RESTAURANT_TABLE_REQUEST:\n case CabinetActionsTypes.GET_RESTAURANT_LIST_REQUEST:\n case CabinetActionsTypes.CREATE_RESTAURANT_REQUEST:\n case CabinetActionsTypes.CASHBOX_CONNECT_STATUS_REQUEST:\n case ReserveModalActionsTypes.CREATE_RESERVE_REQUEST:\n case ReserveModalActionsTypes.UPDATE_RESERVE_REQUEST:\n case HomeActionTypes.GET_STATISTIC_REQUEST:\n case HomeActionTypes.SELECT_ORGANIZATION_REQUEST:\n case HomeActionTypes.AUTH_FORM_IIKO_REQUEST:\n case PhotoActionsTypes.GET_IMAGES_REQUEST:\n case PhotoActionsTypes.UPLOAD_IMAGE_REQUEST:\n case PhotoActionsTypes.SHOW_IMAGE_REQUEST:\n case PhotoActionsTypes.HIDE_IMAGE_REQUEST:\n case PhotoActionsTypes.HIDE_MAIN_IMAGE_REQUEST:\n case PhotoActionsTypes.SET_COVER_REQUEST:\n case BookingActionsTypes.GET_BOOKING_REQUEST:\n case StatisticsActionsTypes.GET_SUMMARY_STATISTICS_REQUEST:\n case UserStatisticActionsTypes.GET_USER_STATISTIC_REQUEST:\n case SchedulesActionTypes.GET_SCHEDULE_LIST_REQUEST:\n case SchedulesActionTypes.UPDATE_SCHEDULE_REQUEST:\n case SchedulesActionTypes.DELETE_SCHEDULE_ROW_REQUEST:\n case SourceStatisticActionsTypes.GET_SOURCE_STATISTIC_REQUEST:\n case SourceStatisticActionsTypes.GET_RESERVES_BY_SOURCE_REQUEST: {\n return {\n ...state,\n isLoading: true,\n loadingRequests: state.loadingRequests.concat(\n action.type.split('_').slice(0, -1).join('_'),\n ),\n };\n }\n\n case SettingsActionTypes.GET_ALL_TABLE_SUCCESS:\n case SettingsActionTypes.GET_ALL_TABLE_ERROR:\n case SettingsActionTypes.UPDATE_RESTAURANT_TABLE_SUCCESS:\n case SettingsActionTypes.UPDATE_RESTAURANT_TABLE_ERROR:\n case CabinetActionsTypes.CASHBOX_CONNECT_STATUS_SUCCESS:\n case CabinetActionsTypes.SWITCH_IIKO_MODAL:\n case CabinetActionsTypes.CREATE_RESTAURANT_ERROR:\n case CabinetActionsTypes.GET_RESTAURANT_LIST_SUCCESS:\n case CabinetActionsTypes.GET_RESTAURANT_LIST_ERROR:\n case CabinetActionsTypes.CASHBOX_CONNECT_STATUS_ERROR:\n case CabinetActionsTypes.CREATE_RESTAURANT_SUCCESS:\n case ReserveModalActionsTypes.CREATE_RESERVE_SUCCESS:\n case ReserveModalActionsTypes.CREATE_RESERVE_ERROR:\n case ReserveModalActionsTypes.CONFIRM_RESERVE_ERROR:\n case ReserveModalActionsTypes.CONFIRM_RESERVE_SUCCESS:\n case ReserveModalActionsTypes.UPDATE_RESERVE_SUCCESS:\n case ReserveModalActionsTypes.UPDATE_RESERVE_ERROR:\n case HomeActionTypes.AUTH_FORM_IIKO_SUCCESS:\n case HomeActionTypes.SELECT_ORGANIZATION_SUCCESS:\n case HomeActionTypes.GET_STATISTIC_SUCCESS:\n case HomeActionTypes.GET_STATISTIC_ERROR:\n case HomeActionTypes.AUTH_FORM_IIKO_ERROR:\n case HomeActionTypes.SELECT_ORGANIZATION_ERROR:\n case BookingActionsTypes.GET_BOOKING_SUCCESS:\n case BookingActionsTypes.GET_BOOKING_ERROR:\n case PhotoActionsTypes.GET_IMAGES_SUCCESS:\n case PhotoActionsTypes.GET_IMAGES_ERROR:\n case PhotoActionsTypes.UPLOAD_IMAGE_SUCCESS:\n case PhotoActionsTypes.UPLOAD_IMAGE_ERROR:\n case PhotoActionsTypes.SHOW_IMAGE_SUCCESS:\n case PhotoActionsTypes.SHOW_IMAGE_ERROR:\n case PhotoActionsTypes.HIDE_IMAGE_SUCCESS:\n case PhotoActionsTypes.HIDE_IMAGE_ERROR:\n case PhotoActionsTypes.HIDE_MAIN_IMAGE_SUCCESS:\n case PhotoActionsTypes.HIDE_MAIN_IMAGE_ERROR:\n case PhotoActionsTypes.SET_COVER_SUCCESS:\n case PhotoActionsTypes.SET_COVER_ERROR:\n case StatisticsActionsTypes.GET_SUMMARY_STATISTICS_SUCCESS:\n case StatisticsActionsTypes.GET_SUMMARY_STATISTICS_ERROR:\n case UserStatisticActionsTypes.GET_USER_STATISTIC_SUCCESS:\n case UserStatisticActionsTypes.GET_USER_STATISTIC_ERROR:\n case SchedulesActionTypes.GET_SCHEDULE_LIST_SUCCESS:\n case SchedulesActionTypes.GET_SCHEDULE_LIST_ERROR:\n case SchedulesActionTypes.UPDATE_SCHEDULE_SUCCESS:\n case SchedulesActionTypes.UPDATE_SCHEDULE_ERROR:\n case SchedulesActionTypes.DELETE_SCHEDULE_ROW_SUCCESS:\n case SchedulesActionTypes.DELETE_SCHEDULE_ROW_ERROR:\n case SourceStatisticActionsTypes.GET_SOURCE_STATISTIC_SUCCESS:\n case SourceStatisticActionsTypes.GET_SOURCE_STATISTIC_ERROR:\n case SourceStatisticActionsTypes.GET_RESERVES_BY_SOURCE_ERROR:\n case SourceStatisticActionsTypes.GET_RESERVES_BY_SOURCE_SUCCESS: {\n const newLoadingRequests = state.loadingRequests\n .filter(i => i !== action.type.split('_')\n .slice(0, -1)\n .join('_'));\n\n return {\n ...state,\n isLoading: newLoadingRequests.length > 0,\n loadingRequests: newLoadingRequests,\n };\n }\n\n default:\n return state;\n }\n}\n","export const RESTORE_PASSWORD_REQUEST = 'RESTORE_PASSWORD_REQUEST';\nexport const RESTORE_PASSWORD_SUCCESS = 'RESTORE_PASSWORD_SUCCESS';\nexport const RESTORE_PASSWORD_ERROR = 'RESTORE_PASSWORD_ERROR';\nexport const SEND_NEW_PASSWORD_REQUEST = 'SEND_NEW_PASSWORD_ERROR';\nexport const SEND_NEW_PASSWORD_SUCCESS = 'SEND_NEW_PASSWORD_REQUEST';\nexport const SEND_NEW_PASSWORD_ERROR = 'SEND_NEW_PASSWORD_SUCCESS';\n","import * as ActionTypes from '../actions/restorePassword/RestorePasswordActionsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IRestorePasswordStore } from '../types/IRestorePasswordStore';\n\nexport const initState: IRestorePasswordStore = {\n userEmail: null,\n restorePasswordError: null,\n sendNewPasswordError: null,\n restorePasswordSuccess: false,\n sendNewPasswordSuccess: false,\n};\n\nexport default function RestorePasswordReducer(state = initState, action: IAppActions): IRestorePasswordStore {\n switch (action.type) {\n case ActionTypes.RESTORE_PASSWORD_REQUEST:\n return {\n ...state,\n restorePasswordError: null,\n userEmail: action.payload.email,\n };\n case ActionTypes.RESTORE_PASSWORD_SUCCESS:\n return {\n ...state,\n restorePasswordError: null,\n restorePasswordSuccess: true,\n };\n case ActionTypes.RESTORE_PASSWORD_ERROR:\n return {\n ...state,\n restorePasswordError: action.error,\n };\n case ActionTypes.SEND_NEW_PASSWORD_REQUEST:\n return {\n ...state,\n sendNewPasswordError: null,\n };\n case ActionTypes.SEND_NEW_PASSWORD_SUCCESS:\n return {\n ...state,\n sendNewPasswordError: null,\n sendNewPasswordSuccess: true,\n };\n case ActionTypes.SEND_NEW_PASSWORD_ERROR:\n return {\n ...state,\n sendNewPasswordError: action.error,\n };\n default:\n return state;\n }\n}\n","export const REJECT_RESERVE_REQUEST = 'REJECT_RESERVE_REQUEST';\nexport const REJECT_RESERVE_SUCCESS = 'REJECT_RESERVE_SUCCESS';\nexport const REJECT_RESERVE_ERROR = 'REJECT_RESERVE_ERROR';\n","import * as ReserveActionsTypes\n from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport * as ReserveRejectActions\n from '../actions/reserveReject/RejectReserveActionsTypes';\nimport * as RestaurantActions from '../actions/restaurant/RestaurantsActionTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IReserveModalStore, TActiveTables } from '../types/IReserveModalStore';\n\nexport const initState: IReserveModalStore = {\n activeTables: {},\n previousActiveTables: {},\n editReserveModalIsOpen: false,\n createReserveModalIsOpen: false,\n createReserveModalInitialData: undefined,\n confirmReserveModalIsOpen: false,\n currentReserve: undefined,\n editReserveInfo: undefined,\n freeTables: undefined,\n sections: undefined,\n bookingQueue: [],\n maxCapacity: 0,\n isMergeTables: false,\n};\n\nexport default function reducer(state = initState, action: IAppActions): IReserveModalStore {\n switch (action.type) {\n case ReserveActionsTypes.SET_ACTIVE_TABLE_SUCCESS:\n return {\n ...state,\n activeTables: action.payload.activeTable,\n };\n\n case ReserveActionsTypes.OPEN_EDIT_RESERVE_MODAL: {\n const { reserve } = action.payload;\n const tables = reserve.tables || [];\n\n return {\n ...state,\n editReserveInfo: reserve,\n editReserveModalIsOpen: true,\n activeTables: tables.reduce((at: TActiveTables, t) => ({ ...at, [t.id]: t }), {}),\n\n // isMergeTables: tables.length > 1,\n // Если локально (без сохранения на сервере) было изменение поля, то берем его,\n // иначе вычисляем на основания кол-ва столов в резерве\n isMergeTables: reserve.isMergeTables !== undefined ? reserve.isMergeTables : tables.length > 1,\n };\n }\n\n case ReserveActionsTypes.CLOSE_EDIT_RESERVE_MODAL:\n case ReserveActionsTypes.UPDATE_RESERVE_SUCCESS:\n case ReserveRejectActions.REJECT_RESERVE_SUCCESS:\n return {\n ...state,\n editReserveInfo: undefined,\n editReserveModalIsOpen: false,\n freeTables: undefined,\n activeTables: {},\n previousActiveTables: {},\n isMergeTables: false,\n };\n\n case RestaurantActions.GET_SECTION_REQUEST_SUCCESS: return {\n ...state,\n sections: action.payload.sections,\n };\n\n case ReserveActionsTypes.GET_FREE_TABLES_SUCCESS: return {\n ...state,\n freeTables: action.payload.freeTables,\n };\n\n case ReserveActionsTypes.OPEN_CREATE_RESERVE_MODAL:\n const { payload } = action;\n const initialData = (payload && payload.initialData) || undefined;\n const tables = (initialData && initialData.tables) || [];\n\n return {\n ...state,\n createReserveModalIsOpen: true,\n createReserveModalInitialData: initialData,\n\n activeTables: tables.reduce((at: TActiveTables, t) => ({ ...at, [t.id]: t }), {}),\n\n // isMergeTables: tables.length > 1,\n // Если локально (без сохранения на сервере) было изменение поля, то берем его,\n // иначе вычисляем на основания кол-ва столов в резерве\n isMergeTables: initialData && initialData.isMergeTables !== undefined\n ? initialData.isMergeTables\n : tables.length > 1,\n };\n\n case ReserveActionsTypes.CREATE_RESERVE_SUCCESS:\n case ReserveActionsTypes.CLOSE_CREATE_RESERVE_MODAL:\n return {\n ...state,\n createReserveModalIsOpen: false,\n createReserveModalInitialData: undefined,\n freeTables: undefined,\n activeTables: {},\n previousActiveTables: {},\n isMergeTables: false,\n };\n\n case ReserveActionsTypes.GET_RESERVE_INFO_SUCCESS:\n return {\n ...state,\n currentReserve: action.payload.reserveInfo,\n activeTables: action.payload.activeTables,\n freeTables: action.payload.freeTables,\n confirmReserveModalIsOpen: true,\n };\n\n case ReserveActionsTypes.REJECT_NEW_RESERVE_SUCCESS:\n case ReserveActionsTypes.CLOSE_CONFIRM_RESERVE_MODAL:\n case ReserveActionsTypes.CONFIRM_RESERVE_SUCCESS:\n return {\n ...state,\n currentReserve: undefined,\n confirmReserveModalIsOpen: false,\n activeTables: {},\n previousActiveTables: {},\n isMergeTables: false,\n };\n\n // case ReserveActionsTypes.SET_RESERVE_TO_QUEUE:\n // return {\n // ...state,\n // bookingQueue: state.bookingQueue.concat([action.payload.reserveId]),\n // };\n //\n // case ReserveActionsTypes.UPDATE_RESERVE_QUEUE:\n // return {\n // ...state,\n // bookingQueue: action.payload.newQueue,\n // };\n\n case ReserveActionsTypes.SET_MAX_CAPACITY: {\n return {\n ...state,\n maxCapacity: action.payload.capacity,\n };\n }\n\n case ReserveActionsTypes.MERGE_TABLES_SUCCESS: {\n const { mergeTables, tables } = action.payload;\n\n return {\n ...state,\n isMergeTables: mergeTables,\n freeTables: tables,\n activeTables: state.previousActiveTables,\n previousActiveTables: state.activeTables,\n };\n }\n\n case ReserveActionsTypes.RESET_ACTIVE_TABLE:\n return {\n ...state,\n activeTables: {},\n };\n\n default:\n return state;\n }\n}\n","export const UPDATE_RESTAURANT_INFO_REQUEST = 'UPDATE_RESTAURANT_INFO_REQUEST';\nexport const UPDATE_RESTAURANT_INFO_SUCCESS = 'UPDATE_RESTAURANT_INFO_SUCCESS';\nexport const UPDATE_RESTAURANT_INFO_ERROR = 'UPDATE_RESTAURANT_INFO_ERROR';\n","import * as ActionTypes from '../actions/restaurantsInfo/RestaurantsInfoActionsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IRestaurantInfoStore } from '../types/IRestaurantInfoStore';\n\nexport const initState: IRestaurantInfoStore = {\n updateError: null,\n updateProcess: false,\n updateStatus: false,\n connectProcess: false,\n connectStatus: false,\n error: undefined,\n connectError: undefined,\n};\n\nexport default function reducer(state: IRestaurantInfoStore = initState, action: IAppActions): IRestaurantInfoStore {\n switch (action.type) {\n case ActionTypes.UPDATE_RESTAURANT_INFO_REQUEST:\n return {\n ...state,\n connectProcess: true,\n };\n\n case ActionTypes.UPDATE_RESTAURANT_INFO_SUCCESS:\n return {\n ...state,\n connectStatus: true,\n connectProcess: false,\n error: undefined,\n };\n\n case ActionTypes.UPDATE_RESTAURANT_INFO_ERROR:\n return {\n ...state,\n connectProcess: false,\n connectError: action.error,\n };\n\n default:\n return state;\n }\n}\n","export const SWITCH_RESERVE_SCHEDULE_TYPE_REQUEST = 'SWITCH_RESERVE_SCHEDULE_TYPE_REQUEST';\nexport const SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS = 'SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS';\nexport const SWITCH_RESERVE_SCHEDULE_TYPE_ERROR = 'SWITCH_RESERVE_SCHEDULE_TYPE_ERROR';\n\nexport const SET_SECTION_ID = 'SET_SECTION_ID';\n","import {\n SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS,\n SET_SECTION_ID,\n} from '../actions/restaurantsSettings/RestaurantsSettingsActionsTypes';\nimport { GET_SCHEDULE_LIST_SUCCESS } from '../actions/schedules/SchedulesActionTypes';\nimport { GET_SECTION_REQUEST_SUCCESS } from '../actions/restaurant/RestaurantsActionTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IRestaurantSettingsStore } from '../types/IRestaurantSettingsStore';\n\nconst initState: IRestaurantSettingsStore = {\n isActiveRestaurantSchedule: undefined,\n sectionId: undefined,\n};\n\nexport default function reducer(\n state: IRestaurantSettingsStore = initState, action: IAppActions,\n): IRestaurantSettingsStore {\n switch (action.type) {\n case SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS: {\n return {\n ...state,\n isActiveRestaurantSchedule: action.payload.isActiveRestaurantSchedule,\n };\n }\n\n case GET_SCHEDULE_LIST_SUCCESS: {\n return {\n ...state,\n isActiveRestaurantSchedule: action.payload.bookingSchedules.length === 0,\n };\n }\n\n case SET_SECTION_ID: {\n return {\n ...state,\n sectionId: action.payload.sectionId,\n };\n }\n\n case GET_SECTION_REQUEST_SUCCESS: {\n const { sections } = action.payload;\n return {\n ...state,\n sectionId: sections.length ? sections[0].id : undefined,\n };\n }\n\n default:\n return state;\n }\n}\n","export const CREATE_WIDGET_REQUEST = 'CREATE_WIDGET_REQUEST';\nexport const CREATE_WIDGET_SUCCESS = 'CREATE_WIDGET_SUCCESS';\nexport const CREATE_WIDGET_ERROR = 'CREATE_WIDGET_ERROR';\n\nexport const UPDATE_WIDGET_REQUEST = 'UPDATE_WIDGET_REQUEST';\nexport const UPDATE_WIDGET_SUCCESS = 'UPDATE_WIDGET_SUCCESS';\nexport const UPDATE_WIDGET_ERROR = 'UPDATE_WIDGET_ERROR';\n\nexport const DELETE_WIDGET_REQUEST = 'DELETE_WIDGET_REQUEST';\nexport const DELETE_WIDGET_SUCCESS = 'DELETE_WIDGET_SUCCESS';\nexport const DELETE_WIDGET_ERROR = 'DELETE_WIDGET_ERROR';\n\nexport const GET_ALL_WIDGETS_REQUEST = 'GET_ALL_WIDGETS_REQUEST';\nexport const GET_ALL_WIDGETS_SUCCESS = 'GET_ALL_WIDGETS_SUCCESS';\nexport const GET_ALL_WIDGETS_ERROR = 'GET_ALL_WIDGETS_ERROR';\n","import * as ActionTypes from '../actions/restaurantsWidgets/RestaurantsWidgetsTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IRestaurantWidgetsStore } from '../types/IRestaurantWidgetsStore';\n\nexport const initState: IRestaurantWidgetsStore = {\n isLoading: false,\n widgets: [],\n};\n\nexport default function RestaurantWidgetsReducer(state = initState, action: IAppActions): IRestaurantWidgetsStore {\n switch (action.type) {\n case ActionTypes.CREATE_WIDGET_REQUEST:\n case ActionTypes.GET_ALL_WIDGETS_REQUEST: {\n return {\n ...state,\n isLoading: true,\n };\n }\n\n case ActionTypes.GET_ALL_WIDGETS_SUCCESS:\n return {\n ...state,\n isLoading: false,\n widgets: action.payload.widgets,\n };\n\n case ActionTypes.CREATE_WIDGET_SUCCESS: {\n const widgets = [...state.widgets, action.payload.newWidget];\n\n return {\n ...state,\n widgets,\n isLoading: false,\n };\n }\n\n case ActionTypes.DELETE_WIDGET_SUCCESS: {\n const widgets = state.widgets.filter(w => w.id !== action.payload.widgetId);\n\n return {\n ...state,\n widgets,\n isLoading: false,\n };\n }\n\n case ActionTypes.UPDATE_WIDGET_SUCCESS: {\n const widgets = state.widgets.map((w) => {\n if (w.id === action.payload.widget.id) {\n return action.payload.widget;\n }\n\n return w;\n });\n\n return {\n ...state,\n widgets,\n isLoading: false,\n };\n }\n\n case ActionTypes.CREATE_WIDGET_ERROR:\n case ActionTypes.GET_ALL_WIDGETS_ERROR: {\n return {\n ...state,\n isLoading: false,\n };\n }\n\n default:\n return state;\n }\n}\n","import * as ActionTypes from '../actions/schedules/SchedulesActionTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport {\n IScheduleGroup,\n IScheduleStore,\n TScheduleFieldType,\n TWeekDay,\n} from '../types/IScheduleStore';\nimport { getMergedSchedule } from '../helpers/scheduleHelpers';\n\nconst defaultFreeDays: { [day: string]: boolean } = {\n MONDAY: true,\n TUESDAY: true,\n WEDNESDAY: true,\n THURSDAY: true,\n FRIDAY: true,\n SATURDAY: true,\n SUNDAY: true,\n};\n\nexport const initState: IScheduleStore = {\n bookingRows: [],\n bookingSchedules: [],\n bookingFreeDays: defaultFreeDays,\n restaurantRows: [],\n restaurantSchedules: [],\n restaurantFreeDays: defaultFreeDays,\n restaurantWorkTimes: {},\n};\n\n/** @description Получая название поля */\nconst getFieldName = (field: TScheduleFieldType): {\n rows: 'bookingRows' | 'restaurantRows';\n schedules: 'restaurantSchedules' | 'bookingSchedules';\n freeDays: 'restaurantFreeDays' | 'bookingFreeDays'\n} => ({\n // @ts-ignore\n rows: `${field}Rows`,\n // @ts-ignore\n schedules: `${field}Schedules`,\n // @ts-ignore\n freeDays: `${field}FreeDays`,\n});\n\n/** @description Редактирование списка свободных дней */\nconst changeFreeDays = (\n initDays: { [day: string]: boolean },\n activate: Array,\n) => {\n const days = { ...initDays };\n\n activate.forEach(d => days[d.day] = false);\n\n return days;\n};\n\n/** @description Редактирование списка свободных дней */\nconst changeFreeDaysForUpdatesDays = (\n initDays: { [day: string]: boolean },\n activate: Array,\n deactivate?: Array,\n) => {\n const days = { ...initDays };\n\n activate.forEach(d => days[d] = false);\n\n if (deactivate) {\n deactivate.forEach(d => days[d] = true);\n }\n\n return days;\n};\n\nexport default function reducer(state = initState, action: IAppActions): IScheduleStore {\n switch (action.type) {\n case ActionTypes.GET_SCHEDULE_LIST_SUCCESS: {\n const { bookingSchedules, restaurantSchedules } = action.payload;\n\n return {\n ...state,\n ...action.payload,\n restaurantFreeDays: changeFreeDays(defaultFreeDays, restaurantSchedules),\n bookingFreeDays: changeFreeDays(defaultFreeDays, bookingSchedules),\n restaurantWorkTimes: getMergedSchedule(restaurantSchedules),\n };\n }\n\n case ActionTypes.UPDATE_SCHEDULE_SUCCESS: {\n const { row, field, schedules } = action.payload;\n const fields = getFieldName(field);\n\n if (field === 'restaurant') {\n return {\n ...state,\n [fields.rows]: state[fields.rows].map(r => r.id === row.id ? row : r),\n [fields.schedules]: schedules,\n [fields.freeDays]: changeFreeDays(defaultFreeDays, schedules),\n restaurantWorkTimes: getMergedSchedule(schedules),\n };\n }\n\n return {\n ...state,\n [fields.rows]: state[fields.rows].map(r => r.id === row.id ? row : r),\n [fields.schedules]: schedules,\n [fields.freeDays]: changeFreeDays(defaultFreeDays, schedules),\n };\n }\n\n case ActionTypes.ADD_SCHEDULE_ROW: {\n const { rows } = getFieldName(action.payload.field);\n const newValue = state[rows].concat([{\n id: Math.floor(Math.random() * 10000000),\n start: '',\n end: '',\n days: [],\n }]);\n\n return {\n ...state,\n [rows]: newValue,\n };\n }\n\n case ActionTypes.DELETE_SCHEDULE_ROW_SUCCESS: {\n const { field, row } = action.payload;\n const { rows, schedules, freeDays } = getFieldName(field);\n\n const newRows = state[rows].filter(r => r.id !== row.id);\n const newSchedules = state[schedules]\n .filter(s => row.days.indexOf(s.day) === -1);\n\n return {\n ...state,\n [rows]: newRows,\n [schedules]: newSchedules,\n [freeDays]: changeFreeDays(state[freeDays], newSchedules),\n };\n }\n\n case ActionTypes.UPDATE_FREE_DAYS: {\n const { days, field } = action.payload;\n const { freeDays } = getFieldName(field);\n\n const newDays = {\n ...state[freeDays],\n };\n\n return {\n ...state,\n [freeDays]: changeFreeDaysForUpdatesDays(newDays, days.activate, days.deactivate),\n };\n }\n\n case ActionTypes.UPDATE_SCHEDULE_ERROR: {\n const { rowId, field } = action.payload;\n\n if (rowId && field) {\n const { rows } = getFieldName(field);\n\n return {\n ...state,\n [rows]: state[rows].map(r => r.id === rowId ? { ...r, error: true } : r),\n };\n }\n\n return state;\n }\n\n default:\n return state;\n }\n}\n","import { IAppActions } from '../types/IAppActions';\nimport { IStatisticStore } from '../types/IStatisticStore';\nimport {\n GET_SUMMARY_STATISTICS_SUCCESS, OPEN_BOOKING_DETAILS_SUCCESS,\n} from '../actions/statistics/StatisticsActionsTypes';\n\nconst initState: IStatisticStore = {\n summary: {\n averageReceiptAmount: 0,\n total: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalClosed: 0,\n totalDeclined: 0,\n totalGuests: 0,\n totalNewGuests: 0,\n totalReceiptAmount: 0,\n },\n pie: [],\n reserves: [],\n pages: {\n current: 0,\n size: 0,\n first: true,\n last: true,\n totalPages: 0,\n totalElements: 0,\n },\n bookingsOrders: {},\n};\n\nexport default function StatisticReducer(state = initState, action: IAppActions): IStatisticStore {\n switch (action.type) {\n case GET_SUMMARY_STATISTICS_SUCCESS: {\n return {\n ...state,\n // Если на бэке в поле нет данных, то прилетает null.\n summary: {\n averageReceiptAmount: action.payload.summary.averageReceiptAmount || 0,\n total: action.payload.summary.total || 0,\n totalCancelledByGuest: action.payload.summary.totalCancelledByGuest || 0,\n totalCancelledByRestaurant: action.payload.summary.totalCancelledByRestaurant || 0,\n totalClosed: action.payload.summary.totalClosed || 0,\n totalDeclined: action.payload.summary.totalDeclined || 0,\n totalGuests: action.payload.summary.totalGuests || 0,\n totalNewGuests: action.payload.summary.totalNewGuests || 0,\n totalReceiptAmount: action.payload.summary.totalReceiptAmount || 0,\n },\n pie: action.payload.pie,\n reserves: action.payload.reserves,\n pages: action.payload.pages,\n };\n }\n\n case OPEN_BOOKING_DETAILS_SUCCESS: {\n return {\n ...state,\n bookingsOrders: {\n ...state.bookingsOrders,\n [action.payload.bookingId]: action.payload.order,\n },\n };\n }\n\n default: return state;\n }\n}\n","import { IAppActions } from '../types/IAppActions';\nimport { ISourceStatistic } from '../types/ISourceStatistic';\nimport {\n GET_SOURCE_STATISTIC_SUCCESS,\n GET_RESERVES_BY_SOURCE_SUCCESS,\n GET_SOURCE_INFO_SUCCESS,\n} from '../actions/sourceStatistic/SourceStatisticActionsTypes';\n\nconst initState: ISourceStatistic = {\n isInit: false,\n sourceInfo: {\n createdDate: '',\n lastReserve: '',\n isActive: false,\n name: '',\n description: '',\n },\n statistic: {\n total: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalDeclined: 0,\n totalClosed: 0,\n totalReceiptAmount: 0,\n averageReceiptAmount: 0,\n commissionAmount: 0,\n },\n reserves: [],\n pages: {\n current: 0,\n size: 10,\n first: true,\n last: true,\n totalPages: 0,\n totalElements: 0,\n },\n};\n\nexport default function UStatisticReducer(state = initState, action: IAppActions): ISourceStatistic {\n switch (action.type) {\n case GET_SOURCE_STATISTIC_SUCCESS: {\n return {\n ...state,\n statistic: action.payload.sourceStats,\n isInit: true,\n };\n }\n case GET_RESERVES_BY_SOURCE_SUCCESS: {\n return {\n ...state,\n reserves: action.payload.reserveList,\n pages: action.payload.pages,\n };\n }\n case GET_SOURCE_INFO_SUCCESS: {\n return {\n ...state,\n sourceInfo: action.payload.source,\n };\n }\n default: return state;\n }\n}\n","export const ENQUEUE_SNACKBAR = 'ENQUEUE_SNACKBAR';\nexport const REMOVE_SNACKBAR = 'REMOVE_SNACKBAR';\nexport const CUSTOM_ERROR = 'CUSTOM_ERROR';\nexport const CUSTOM_MESSAGE = 'CUSTOM_MESSAGE';\nexport const CUSTOM_SNACKBAR = 'CUSTOM_SNACKBAR';\n","import { IAppActions } from '../types/IAppActions';\nimport { ENQUEUE_SNACKBAR, REMOVE_SNACKBAR } from '../actions/snackbars/SnackBarsActionsTypes';\n\nconst defaultState = {\n notifications: [],\n};\n\nfunction SnackbarsReducer(state = defaultState, action: IAppActions): any {\n switch (action.type) {\n case ENQUEUE_SNACKBAR:\n return {\n ...state,\n notifications: [\n ...state.notifications,\n {\n ...action.notification,\n },\n ],\n };\n\n case REMOVE_SNACKBAR:\n return {\n ...state,\n notifications: state.notifications.filter(\n // @ts-ignore\n notification => notification.key !== action.key,\n ),\n };\n\n default:\n return state;\n }\n}\n\nexport default SnackbarsReducer;\n","import * as ActionTypes from '../actions/restaurantsTables/RestaurantsTablesTypes';\nimport { IAppActions } from '../types/IAppActions';\nimport { IRestaurantTablesStore } from '../types/IRestaurantTablesStore';\n\nexport const initState: IRestaurantTablesStore = {\n updateError: null,\n tableList: [],\n getTableError: null,\n};\n\nexport default function reducer(state: IRestaurantTablesStore = initState, action: IAppActions): any {\n switch (action.type) {\n case ActionTypes.UPDATE_RESTAURANT_TABLE_SUCCESS: {\n return {\n ...state,\n getTableError: null,\n };\n }\n\n case ActionTypes.UPDATE_RESTAURANT_TABLE_ERROR:\n return {\n ...state,\n updateError: action.error,\n };\n\n case ActionTypes.GET_ALL_TABLE_SUCCESS:\n return {\n ...state,\n tableList: action.payload.tableList,\n getTableError: null,\n };\n\n case ActionTypes.GET_ALL_TABLE_ERROR:\n return {\n ...state,\n getTableError: action.error,\n };\n\n default:\n return state;\n }\n}\n","import { IAppActions } from '../types/IAppActions';\nimport { IUserStatisticStore } from '../types/IUserStatisticStore';\nimport {\n GET_USER_STATISTIC_SUCCESS,\n GET_USER_STATISTIC_REQUEST,\n} from '../actions/userStatistic/UserStatisticActionsTypes';\n\nconst initState: IUserStatisticStore = {\n userInfo: {\n firstVisit: '',\n lastVisit: '',\n isActive: false,\n name: '',\n phone: '',\n },\n statistics: {\n averageReceiptAmount: 0,\n total: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalClosed: 0,\n totalDeclined: 0,\n totalReceiptAmount: 0,\n },\n reserves: [],\n};\n\nexport default function UStatisticReducer(state = initState, action: IAppActions): IUserStatisticStore {\n switch (action.type) {\n case GET_USER_STATISTIC_REQUEST: {\n return {\n ...state,\n userInfo: {\n firstVisit: '',\n lastVisit: '',\n isActive: false,\n name: '',\n phone: '',\n },\n };\n }\n case GET_USER_STATISTIC_SUCCESS: {\n return {\n ...state,\n statistics: action.payload.userStats,\n userInfo: action.payload.userInfo,\n reserves: action.payload.userReserves,\n };\n }\n default: return state;\n }\n}\n","export const SOCKET_RESERVE_CREATED = 'SOCKET_RESERVE_CREATED';\nexport const SOCKET_RESERVE_CONFIRMATION = 'SOCKET_RESERVE_CONFIRMATION';\nexport const SOCKET_RECONNECT = 'SOCKET_RECONNECT';\nexport const SET_SOCKET_CONNECT_STATUS = 'SET_SOCKET_CONNECT_STATUS';\n","import { IAppActions } from '../types/IAppActions';\nimport { SOCKET_RECONNECT, SET_SOCKET_CONNECT_STATUS } from '../actions/webSocketService/WebSocketActionsTypes';\nimport { IWebsocketStore } from '../types/IWebsocketStore';\n\nexport const initState: IWebsocketStore = {\n socketIsConnect: undefined,\n socketIsReconnect: false,\n};\n\nexport default function reducer(state: IWebsocketStore = initState, action: IAppActions): IWebsocketStore {\n switch (action.type) {\n case SET_SOCKET_CONNECT_STATUS: {\n return {\n ...state,\n socketIsConnect: action.payload.isConnect,\n socketIsReconnect: false,\n };\n }\n\n case SOCKET_RECONNECT: {\n return {\n ...state,\n socketIsReconnect: true,\n };\n }\n\n default:\n return state;\n }\n}\n","export const FETCH_RESTAURANT_CALLS = 'FETCH_RESTAURANT_CALLS';\nexport const FETCH_RESTAURANT_CALLS_SUCCESS = 'FETCH_RESTAURANT_CALLS_SUCCESS';\nexport const FETCH_RESTAURANT_CALLS_ERROR = 'FETCH_RESTAURANT_CALLS_ERROR';\n\nexport const RESET_RESTAURANT_CALLS = 'RESET_RESTAURANT_CALLS';\n\nexport const ADD_RESTAURANT_CALL = 'ADD_RESTAURANT_CALL';\nexport const REMOVE_RESTAURANT_CALL = 'REMOVE_RESTAURANT_CALL';\n","import { IRestaurantCall, IRestaurantCallsStore } from '../types/IRestaurantCallsStore';\nimport { IAppActions } from '../types/IAppActions';\n\nimport * as ActionTypes from '../actions/restaurantsCalls/RestaurantsCallsActionsTypes';\n\nexport const initState: IRestaurantCallsStore = {\n items: undefined,\n isLoading: false,\n error: undefined,\n};\n\nexport default function reducer(state: IRestaurantCallsStore = initState, action: IAppActions): IRestaurantCallsStore {\n switch (action.type) {\n case ActionTypes.FETCH_RESTAURANT_CALLS:\n return {\n ...state,\n isLoading: true,\n error: initState.error,\n };\n\n case ActionTypes.FETCH_RESTAURANT_CALLS_SUCCESS:\n return {\n ...state,\n isLoading: false,\n items: action.calls,\n };\n\n case ActionTypes.FETCH_RESTAURANT_CALLS_ERROR:\n return {\n ...state,\n isLoading: false,\n error: action.error,\n };\n\n case ActionTypes.RESET_RESTAURANT_CALLS:\n return {\n ...state,\n items: initState.items,\n };\n\n case ActionTypes.ADD_RESTAURANT_CALL:\n if (state.items && state.items.find(call => call.id === action.call.id)) {\n return {\n ...state,\n items: state.items.map(\n (call: IRestaurantCall) => (call.id === action.call.id ? action.call : call),\n ),\n };\n }\n\n return {\n ...state,\n items: [\n ...(state.items || []),\n action.call,\n ],\n };\n\n case ActionTypes.REMOVE_RESTAURANT_CALL:\n return {\n ...state,\n items: (state.items || []).filter(item => item.id !== action.id),\n };\n\n // case ActionTypes.NOTIFY_RESTAURANT_CALL:\n // return {\n // ...state,\n // notificationSeconds: 0,\n // };\n //\n // case ActionTypes.INCREASE_NOTIFICATION_INTERVAL_RESTAURANT_CALL:\n // return {\n // ...state,\n // notificationSeconds: state.notificationSeconds + 1,\n // };\n\n default:\n return state;\n }\n}\n","import { TOpenReserve, IOpenReservesStore } from '../types/IBookingStore';\nimport { IAppActions } from '../types/IAppActions';\n\nimport * as ActionTypes from '../actions/reservationsPage/ReservationsPageActionsTypes';\n\nexport const initState: IOpenReservesStore = {\n items: undefined,\n isLoading: false,\n error: undefined,\n};\n\nexport default function reducer(state: IOpenReservesStore = initState, action: IAppActions): IOpenReservesStore {\n switch (action.type) {\n case ActionTypes.FETCH_OPEN_RESERVES:\n return {\n ...state,\n isLoading: true,\n error: initState.error,\n };\n\n case ActionTypes.FETCH_OPEN_RESERVES_SUCCESS:\n return {\n ...state,\n isLoading: false,\n items: action.reserves,\n };\n\n case ActionTypes.FETCH_OPEN_RESERVES_ERROR:\n return {\n ...state,\n isLoading: false,\n error: action.error,\n };\n\n case ActionTypes.RESET_OPEN_RESERVES:\n return {\n ...state,\n items: initState.items,\n };\n\n case ActionTypes.ADD_OPEN_RESERVE:\n if (state.items && state.items.find(reserve => reserve.id === action.reserve.id)) {\n return {\n ...state,\n items: state.items.map(\n (reserve: TOpenReserve) => (reserve.id === action.reserve.id ? action.reserve : reserve),\n ),\n };\n }\n\n return {\n ...state,\n items: [\n ...(state.items || []),\n action.reserve,\n ],\n };\n\n case ActionTypes.REMOVE_OPEN_RESERVE:\n return {\n ...state,\n items: (state.items || []).filter(item => item.id !== action.id),\n };\n\n default:\n return state;\n }\n}\n","export const SET_NOTIFICATIONS = 'SET_NOTIFICATIONS';\nexport const RESET_NOTIFICATIONS = 'RESET_NOTIFICATIONS';\nexport const TOGGLE_NOTIFICATIONS = 'TOGGLE_NOTIFICATIONS';\nexport const CLOSE_NOTIFICATIONS = 'CLOSE_NOTIFICATIONS';\nexport const OPEN_NOTIFICATIONS = 'OPEN_NOTIFICATIONS';\n\nexport const ADD_NOTIFICATION = 'ADD_NOTIFICATION';\nexport const REMOVE_NOTIFICATION = 'REMOVE_NOTIFICATION';\nexport const TOGGLE_NOTIFICATION = 'TOGGLE_NOTIFICATION';\n\nexport const IDLE = 'IDLE';\n","import { IAppActions } from '../types/IAppActions';\nimport { TNotification, INotificationsStore } from '../types/INotificationsStore';\nimport * as ActionTypes from '../actions/notifications/NotificationsActionsTypes';\n\nexport const initState: INotificationsStore = {\n items: [],\n open: false,\n};\n\nexport default function reducer(state: INotificationsStore = initState, action: IAppActions): INotificationsStore {\n switch (action.type) {\n case ActionTypes.SET_NOTIFICATIONS:\n return {\n ...state,\n items: action.items,\n };\n\n case ActionTypes.RESET_NOTIFICATIONS:\n return {\n ...state,\n items: initState.items,\n };\n\n case ActionTypes.TOGGLE_NOTIFICATIONS:\n return {\n ...state,\n open: !state.open,\n };\n\n case ActionTypes.OPEN_NOTIFICATIONS:\n return {\n ...state,\n open: true,\n };\n\n case ActionTypes.CLOSE_NOTIFICATIONS:\n return {\n ...state,\n open: false,\n };\n\n case ActionTypes.ADD_NOTIFICATION:\n if (state.items.find(item => item.getKey() === action.notification.getKey())) {\n return {\n ...state,\n items: state.items.map((item: TNotification) => {\n if (item.getKey() === action.notification.getKey()) {\n return {\n ...item,\n payload: action.notification.payload,\n };\n }\n\n return item;\n }),\n };\n }\n\n return {\n ...state,\n items: [\n ...state.items,\n action.notification,\n ],\n };\n\n case ActionTypes.REMOVE_NOTIFICATION:\n return {\n ...state,\n items: state.items.filter(item => item.getKey() !== action.key),\n };\n\n case ActionTypes.TOGGLE_NOTIFICATION:\n return {\n ...state,\n items: state.items.map((item: TNotification) => {\n if (item.getKey() === action.key) {\n return {\n ...item,\n open: !item.open,\n };\n }\n\n return item;\n }),\n };\n\n default:\n return state;\n }\n}\n","export const SET_APP_RESERVES = 'SET_APP_RESERVES';\n\nexport const ADD_APP_RESERVE = 'ADD_APP_RESERVE';\nexport const REMOVE_APP_RESERVE = 'REMOVE_APP_RESERVE';\n\nexport const OPEN_APP_RESERVE = 'OPEN_APP_RESERVE';\nexport const CLOSE_APP_RESERVE = 'CLOSE_APP_RESERVE';\nexport const TOGGLE_APP_RESERVES = 'TOGGLE_APP_RESERVES';\n\nexport const CHANGE_APP_RESERVE = 'CHANGE_APP_RESERVE';\nexport const OUTER_CHANGE_APP_RESERVE = 'OUTER_CHANGE_APP_RESERVE';\n","import Reserve, { IAppReservesStore } from '../types/IAppReservesStore';\nimport { IAppActions } from '../types/IAppActions';\nimport * as ActionTypes from '../actions/appReserves/AppReservesActionsTypes';\n\nconst initState: IAppReservesStore = {\n items: [],\n};\n\nexport default function reducer(state: IAppReservesStore = initState, action: IAppActions): IAppReservesStore {\n switch (action.type) {\n case ActionTypes.SET_APP_RESERVES:\n return {\n ...state,\n items: action.reserves,\n };\n\n case ActionTypes.ADD_APP_RESERVE:\n if (state.items && state.items.find(reserve => reserve.key === action.reserve.key)) {\n return state;\n // return {\n // ...state,\n // items: state.items.map(\n // (reserve: Reserve) => (reserve.key === action.reserve.key ? action.reserve : reserve),\n // ),\n // };\n }\n\n return {\n ...state,\n items: [\n ...(state.items || []),\n action.reserve,\n ],\n };\n\n case ActionTypes.REMOVE_APP_RESERVE:\n return {\n ...state,\n items: (state.items || []).filter(item => item.key !== action.key),\n };\n\n case ActionTypes.OPEN_APP_RESERVE:\n let openKey = action.key || state.lastKey;\n\n if (state.items && (!openKey || !state.items.find(i => i.key === openKey))) {\n openKey = state.items[0].key;\n }\n\n return {\n ...state,\n items: state.items.map((item: Reserve) => ({\n ...item,\n open: item.key === openKey,\n })),\n };\n\n case ActionTypes.CLOSE_APP_RESERVE:\n const selectedReserve = state.items.find((i: Reserve) => i.open);\n const closeKey = action.key || (selectedReserve && selectedReserve.key);\n\n if (!closeKey) {\n throw new Error('No reserve to close');\n }\n\n return {\n ...state,\n\n // Последний ключ сохраняем только, если отключается видимость\n // всех форм (через кнопку back или иконку в шапке)\n // lastKey: (!action.key && selectedReserve && selectedReserve.key) || state.lastKey,\n lastKey: (!action.key && selectedReserve && selectedReserve.key) || undefined,\n\n items: state.items.map((item: Reserve) => {\n if (item.key === closeKey) {\n return {\n ...item,\n open: false,\n // @todo Убрать везде payload, если не будет использоваться\n // payload: (action.options && action.options.payload) || item.payload,\n };\n }\n\n return item;\n }),\n };\n\n case ActionTypes.CHANGE_APP_RESERVE:\n return {\n ...state,\n items: state.items.map((item: Reserve) => {\n if (item.open) {\n return {\n ...item,\n payload: {\n ...(item.payload || {}),\n [action.name]: action.value,\n },\n changed: true,\n };\n }\n\n return item;\n }),\n };\n\n case ActionTypes.OUTER_CHANGE_APP_RESERVE:\n return {\n ...state,\n items: state.items.map((r: Reserve) => {\n if (r.payload && r.payload.id === action.reserveId) {\n return {\n ...r,\n outerChangeType: action.outerChangeType,\n };\n }\n\n return r;\n }),\n };\n\n default:\n return state;\n }\n}\n","import { combineReducers } from 'redux';\nimport { connectRouter as router } from 'connected-react-router';\nimport { reducer as form } from 'redux-form';\n\nimport { IAppStore } from '../types/IAppStore';\nimport { IAppActions } from '../types/IAppActions';\nimport auth from './AuthReducer';\nimport booking from './BookingReducer';\nimport cabinet from './CabinetReducer';\nimport home from './HomeReducer';\nimport menu from './MenuReducer';\nimport promo from './PromoReducer';\nimport photo from './PhotoReducer';\nimport loading from './LoadingReducer';\nimport restorePassword from './RestorePasswordReducer';\nimport reserveModal from './ReservationPageReducer';\nimport reservesSystemInfo from './RestaurantInfoReducer';\nimport reservesSystemSettings from './RestaurantSettingsReducer';\nimport widgets from './RestaurantWidgetsReducer';\nimport schedule from './ScheduleReducer';\nimport statistic from './StatisticsReducer';\nimport sourceStatistic from './SourceStatisticReducer';\nimport snackbars from './SnackbarsReducer';\nimport tables from './RestaurantsTablesReducer';\nimport userStatistics from './UserStatisticsReducer';\nimport websocket from './WebsocketReducer';\nimport calls from './RestaurantCallsReducer';\nimport openReserves from './OpenReservesReducer';\nimport notifications from './NotificationsReducer';\nimport appReserves from './AppReservesReducer';\n\nexport default (history: any) => combineReducers({\n auth,\n booking,\n cabinet,\n home,\n loading,\n reserveModal,\n reservesSystemInfo,\n reservesSystemSettings,\n restorePassword,\n // @ts-ignore\n router: router(history),\n tables,\n statistic,\n snackbars,\n schedule,\n sourceStatistic,\n promo,\n photo,\n menu,\n form,\n userStatistics,\n websocket,\n widgets,\n calls,\n openReserves,\n notifications,\n appReserves,\n});\n","const systems: { [details: string]: string; } = {\n clientId: 'guestme-client',\n secretKey: '9ACepV68zJ2x3AtN',\n yandexMapAPIKey: '8771c9d7-aa10-4f5d-afa5-e7c18bc1c474',\n};\n\nexport default systems;\n","const host = process.env.REACT_APP_BACKEND_URL_VAR;\nconst api = `${host}/api`;\nconst account = `${api}/account/current`;\nconst token = `${host}/oauth/token`;\nconst confirmEmail = `${api}/account/confirmation/email`;\nconst confirmEmailResend = `${api}/account/confirmation/email/request`;\nconst registerRestaurateur = `${api}/user/restaurateur`;\nconst restaurant = `${api}/restaurant`;\nconst logout = `${api}/logout`;\nconst restaurantTable = `${api}/restaurant-table/restaurant`;\nconst restaurateur = `${api}/restaurateur`;\nconst restaurateurBooking = `${restaurateur}/booking`;\nconst restaurantWidget = `${api}/restaurant-widget`;\nconst bookingJournal = `${restaurateur}/restaurant`;\nconst statistic = `${restaurateur}/restaurant`;\nconst statisticSummary = `${statistic}`;\nconst statisticPie = `${statistic}`;\nconst statisticGuest = `${statistic}`;\nconst userInfo = `${api}/user/phone`;\nconst websocket = `${host}/websocket`;\nconst programs = `${api}/program`;\nconst loadsPrograms = `${programs}/restaurant`;\nconst menuRestaurant = `${api}/menu/restaurant`;\nconst restaurantSchedule = `${api}/restaurant-schedule`;\nconst restaurantScheduleGroup = `${restaurantSchedule}/group`;\nconst restaurantScheduleGroups = `${restaurantSchedule}/groups`;\nconst restaurantScheduleExclusions = `${restaurantSchedule}/group/common-with-exclusion`;\nconst restorePasswordInit = `${api}/account/reset-password/init`;\nconst restorePasswordFinish = `${api}/account/reset-password/finish`;\nconst sendConfirmCode = `${api}/account/confirmation/code/request`;\nconst widgetBooking = `${api}/widget/booking`;\nconst restaurantCalls = `${api}/restaurant`;\n\nexport {\n account,\n bookingJournal,\n confirmEmail,\n confirmEmailResend,\n logout,\n loadsPrograms,\n menuRestaurant,\n programs,\n restaurant,\n restaurateur,\n restaurateurBooking,\n restaurantTable,\n restaurantSchedule,\n restaurantScheduleGroup,\n restaurantScheduleGroups,\n restaurantScheduleExclusions,\n restaurantWidget,\n registerRestaurateur,\n restorePasswordInit,\n restorePasswordFinish,\n statistic,\n statisticSummary,\n statisticPie,\n statisticGuest,\n sendConfirmCode,\n token,\n userInfo,\n websocket,\n widgetBooking,\n restaurantCalls,\n};\n","const REMEMBER_ME_KEY = 'REMEMBER_ME';\nconst ACCESS_TOKEN_KEY = 'ACCESS_TOKEN_KEY';\nconst REFRESH_TOKEN_KEY = 'REFRESH_TOKEN_KEY';\n\n/**\n * Получить токен по ключу\n * @param tokenName\n */\nfunction getToken(tokenName: string) {\n const isRememberedMe = localStorage.getItem(REMEMBER_ME_KEY) === 'true';\n return isRememberedMe ? localStorage.getItem(tokenName) : sessionStorage.getItem(tokenName);\n}\n\n/**\n * Установить признак \"Запомнить меня\"\n * @param remember\n */\nconst setRememberMe = (remember: boolean): void => {\n window.localStorage.setItem(REMEMBER_ME_KEY, remember ? 'true' : 'false');\n};\n\n/**\n * Сохранить токены авторизации\n * @param accessToken\n * @param refreshToken\n */\nconst setTokens = (accessToken: string, refreshToken: string): void => {\n const isRememberedMe = window.localStorage.getItem(REMEMBER_ME_KEY) === 'true';\n\n if (isRememberedMe) {\n window.localStorage.setItem(ACCESS_TOKEN_KEY, accessToken);\n window.localStorage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n } else {\n window.sessionStorage.setItem(ACCESS_TOKEN_KEY, accessToken);\n window.sessionStorage.setItem(REFRESH_TOKEN_KEY, refreshToken);\n }\n};\n\n/**\n * Получить access токен авторизации\n */\nconst getAccessToken = () => getToken(ACCESS_TOKEN_KEY);\n\n/**\n * Получить refresh токен авторизации\n */\nconst getRefreshToken = () => getToken(REFRESH_TOKEN_KEY);\n\nconst deleteTokens = (): void => {\n window.sessionStorage.removeItem(ACCESS_TOKEN_KEY);\n window.sessionStorage.removeItem(REFRESH_TOKEN_KEY);\n window.localStorage.removeItem(ACCESS_TOKEN_KEY);\n window.localStorage.removeItem(REFRESH_TOKEN_KEY);\n window.localStorage.removeItem(REMEMBER_ME_KEY);\n};\n\nexport {\n setTokens,\n setRememberMe,\n deleteTokens,\n getAccessToken,\n getRefreshToken,\n};\n","import {\n TColor,\n TSectionSchema,\n TSectionAdaptSchema,\n TElementAdaptScheme,\n TSectionMarkScheme,\n TSectionImageScheme,\n TSectionTableScheme,\n TSectionElementScheme,\n} from '../../types/IRestaurantTablesSchemaStore';\n\n/**\n * @description Преобразование объекта IColor строку css rgba(255, 255, 255, 1);\n * @param color\n * @returns {string}\n */\nfunction getColor(color: TColor): string {\n return `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a})`;\n}\n\n/**\n * @description Объединяет все сущности в единую коллекцию и сортирует по z;\n */\nfunction getSchema(data: TSectionSchema): TSectionAdaptSchema {\n const {\n id, uuid, createdDate, lastModifiedDate, width, height,\n } = data || {};\n return {\n id,\n createdDate,\n lastModifiedDate,\n width,\n height,\n uuid,\n elements: [\n ...(data.marks || []).map((d: TSectionMarkScheme): TElementAdaptScheme => ({\n type: 'text',\n element: d,\n })),\n ...(data.images || []).map((d: TSectionImageScheme): TElementAdaptScheme => ({\n type: 'image',\n element: d,\n })),\n ...(data.tables || []).map((d: TSectionTableScheme): TElementAdaptScheme => ({\n type: 'table',\n element: d,\n })),\n ...(data.rectangles || []).map((d: TSectionElementScheme): TElementAdaptScheme => ({\n type: 'rect',\n element: d,\n })),\n ...(data.ellipses || []).map((d: TSectionElementScheme): TElementAdaptScheme => ({\n type: 'ellipse',\n element: d,\n })),\n ].sort((a: TElementAdaptScheme, b: TElementAdaptScheme) => a.element.z - b.element.z),\n };\n}\n\nexport { getColor, getSchema };\n","import {\n IWidgetDataAdapt,\n} from '../../types/IRestaurantWidgetsStore';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const fallbackValue: IWidgetDataAdapt = {\n name: '',\n settings: {\n isShowHeader: true,\n isEmailRequired: false,\n isLastNameRequired: false,\n colors: {\n mainColor: '#6ae9c5',\n formBackground: '#ffffff',\n pageBackground: '#737577',\n formHeaderColor: '#323232',\n formBaseColor: '#323232',\n formFieldColor: '#aaaaaa',\n },\n },\n};\n","import { reduce } from 'lodash';\nimport {\n IWidgetColor,\n IWidgetColorsAdapt,\n IWidget,\n IWidgetAdapt, IWidgetDataAdapt, IWidgetData,\n} from '../../types/IRestaurantWidgetsStore';\nimport { fallbackValue } from './constants';\n\n\nexport function adapt(data: IWidget): IWidgetAdapt {\n const { colors } = data.settings || {\n colors: [],\n };\n return {\n ...data,\n settings: {\n ...Object.assign({}, fallbackValue.settings, data.settings),\n colors: reduce(colors,\n (result: IWidgetColorsAdapt, value: IWidgetColor): IWidgetColorsAdapt => ({\n ...result,\n [value.variable]: value.color,\n }),\n fallbackValue.settings ? fallbackValue.settings.colors : {}),\n },\n };\n}\n\nexport function transform(data: IWidgetDataAdapt): IWidgetData {\n return {\n ...data,\n settings: {\n ...Object.assign({}, {\n isShowHeader: true,\n isEmailRequired: false,\n isLastNameRequired: false,\n }, data.settings),\n colors: reduce(\n (data.settings || {}).colors || {},\n (result: IWidgetColor[], value, key): IWidgetColor[] => {\n if (value) {\n result.push({\n variable: key,\n color: value,\n });\n }\n return result;\n }, [],\n ),\n },\n };\n}\n","import { AxiosResponse } from 'axios';\nimport { delay } from 'redux-saga/effects';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function dataProp(res: AxiosResponse) {\n return res.data;\n}\n\ntype RequestCall = (args: TP) => Promise;\n\nconst interval5minInMs = 300 * 1000;\n\nexport function* queryWithRetry(\n requestFunction: RequestCall,\n params: P,\n retries = 5,\n interval = 3000,\n maxInterval = interval5minInMs,\n) {\n let lastError = null;\n let intervalMs = interval;\n for (let i = 1; i <= retries; i += 1) {\n try {\n return yield requestFunction(params);\n } catch (err) {\n lastError = err;\n\n if (err && err.response) {\n if (String(err.response.status) === '404') throw err;\n }\n\n const delayMs = Math.round(intervalMs * 1.2);\n intervalMs = delayMs > maxInterval ? maxInterval : delayMs;\n yield delay(intervalMs);\n }\n }\n\n // Stop failed several attempts\n throw lastError || new Error('request_failed');\n}\n","import axios, { AxiosRequestConfig } from 'axios';\nimport mapFp from 'lodash/fp/map';\nimport { Moment } from 'moment';\nimport { useDispatch } from 'react-redux';\n\nimport systems from '../config/systems';\nimport * as ConfigAPI from '../config/api';\nimport * as ActionTypes from '../actions/auth/AuthActionsTypes';\nimport { parseDateForReq } from '../helpers/dateHelpers';\nimport {\n getAccessToken,\n getRefreshToken,\n setTokens,\n} from '../helpers/tokensHelpers';\nimport { getSchema } from '../helpers/scheme/schemeHelpers';\nimport {\n adapt as widgetAdapt,\n transform as widgetTransform,\n} from '../helpers/widget/widgetHelpers';\nimport { dataProp } from './utils';\n\nimport { ITable } from '../types/IRestaurantTablesStore';\nimport { IScheduleGroup } from '../types/IScheduleStore';\nimport { TDate } from '../types/IDate';\nimport { TRestaurantCallState } from '../types/IRestaurantCallsStore';\nimport {\n TRestaurantSection,\n TRestaurantSectionAdapt,\n} from '../types/IRestaurantTablesSchemaStore';\nimport {\n IWidgetAdapt,\n IWidgetDataAdapt,\n} from '../types/IRestaurantWidgetsStore';\nimport { IRestaurantAddress, TRestaurantPlugin } from '../types/ICabinetStore';\n\n// import employeesResponse from './mocks/employees';\n\nconst api = axios.create({ withCredentials: true });\n\n/** @description Проставляем токен для каждого запроса */\napi.interceptors.request.use((config: AxiosRequestConfig) => {\n const accessToken = getAccessToken();\n const configResult = { ...config };\n\n if (accessToken && accessToken !== 'undefined' && config.url !== ConfigAPI.token) {\n if (!configResult.headers) {\n configResult.headers = {};\n }\n\n configResult.headers.Authorization = `Bearer ${accessToken}`;\n }\n return configResult;\n});\n\n/**\n * Запрос на получение обновление токена\n * @param refreshToken\n * @returns {Promise>}\n */\nexport const refreshTokenReq = (refreshToken: string) => {\n const userData = `refresh_token=${refreshToken}&grant_type=refresh_token`;\n const base64BasicKey = btoa(`${systems.clientId}:${systems.secretKey}`);\n\n return api.post(\n ConfigAPI.token, userData, { headers: { Authorization: `Basic ${base64BasicKey}` } },\n );\n};\n\n/** @description В случае 401 ошибки обновляем токен */\napi.interceptors.response.use(response => response, (error) => {\n const originalRequest = error.config;\n\n if (error.response && error.response.status === 401 && originalRequest.url === ConfigAPI.token) {\n const dispatch = useDispatch();\n\n dispatch(ActionTypes.GET_SESSION_FAIL);\n return Promise.reject(error);\n }\n\n if (error.response && error.response.status === 401 && !originalRequest._retry) { // eslint-disable-line no-underscore-dangle\n originalRequest._retry = true; // eslint-disable-line no-underscore-dangle\n const refreshToken = getRefreshToken();\n\n if (refreshToken) {\n return refreshTokenReq(refreshToken).then((res: {\n status: number;\n data: {\n access_token: string;\n refresh_token: string;\n }\n }) => {\n if (res.status === 200) {\n setTokens(res.data.access_token, res.data.refresh_token);\n originalRequest.headers.Authorization = `Bearer ${res.data.access_token}`;\n\n return axios(originalRequest);\n }\n return null;\n });\n }\n return null;\n }\n return Promise.reject(error);\n});\n\n\n/**\n * Запрос на получение токена\n * @param email\n * @param password\n */\nexport const tokenReq = (email: string, password: string) => {\n const userData = `username=${email}&password=${password}&grant_type=password`;\n const base64BasicKey = btoa(`${systems.clientId}:${systems.secretKey}`);\n\n return api.post(\n ConfigAPI.token, userData, { headers: { Authorization: `Basic ${base64BasicKey}` } },\n );\n};\n\n/**\n * Запрос на регистрацию нового пользователя ресторатора\n * @param data - данные нового пользователя\n * @returns {Promise>}\n */\nexport const registerRestaurateurReq = (data: any) => {\n const postData = {\n firstName: data.firstName,\n lastName: data.lastName,\n email: data.email,\n password: data.password,\n };\n\n return api.post(ConfigAPI.registerRestaurateur, postData);\n};\n\n/**\n * Подтверждения регистрации по почте\n * @param key\n * @returns {Promise>}\n */\nexport const confirmEmailReq = (key: any) => api.get(ConfigAPI.confirmEmail, {\n params: {\n 'activation-key': key,\n 'remember-me': true,\n },\n});\n\n\n/**\n * Запрос на получение нового приглаcительного письма на почту\n * @returns {Promise>}\n */\nexport const confirmEmailResendReq = () => api.get(ConfigAPI.confirmEmailResend);\n\n\n/**\n * Запрос на получение сессии для авторизированного юзера\n * @returns {Promise>}\n */\nexport const getAccountReq = () => api.get(ConfigAPI.account);\n\n/**\n * Запрос на логаут\n * @returns {Promise>}\n */\nexport const logoutReq = () => api.get(ConfigAPI.logout);\n\n/**\n * Запрос на регистрацию нового ресторана\n * @param payload\n * @returns {Promise>}\n */\nexport const createRestaurantReq = (payload: {\n address: IRestaurantAddress;\n name: string;\n}) => {\n const { name, address } = payload;\n\n const restaurantReqData = {\n name,\n settings: {\n isAutoBookingEnabled: true,\n isSchemasEnabled: false,\n telegramNotificationSettings: {\n isEnabled: false,\n },\n },\n info: {\n site: null,\n phone: null,\n },\n address: {\n country: (address && address.country) || '-',\n countryCode: (address && address.countryCode) || '-',\n city: (address && address.city) || '-',\n street: (address && address.street) || '-',\n home: (address && address.home) || '-',\n point: {\n x: address.coordinates.lat,\n y: address.coordinates.lon,\n },\n\n // Не используется в реализации с Яндексом, но решили сохранить такую строку.\n // Без передачи параметра бэк падает с ошибкой 500\n placeId: 'Google place id',\n },\n };\n\n return api.post(\n ConfigAPI.restaurant, restaurantReqData,\n );\n};\n\n/**\n * Запрос на редактирование данных ресторана\n * @param restaurantInfo\n * @returns {Promise>}\n */\nexport const updateRestaurantReq = (restaurantInfo: any) => api.put(\n ConfigAPI.restaurant, restaurantInfo,\n);\n\n/**\n * Запрос на получение версий плагинов ресторана\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const getRestaurantPluginsInfoReq = (restaurantId: number): Promise => api.get(`${ConfigAPI.restaurant}/${restaurantId}/plugin`).then(dataProp);\n\n/**\n * Запрос на получение списка столов выбранного ресторана\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const getAllTableForRestaurantReq = (restaurantId: any) => {\n const url = `${ConfigAPI.restaurantTable}/${restaurantId}`;\n return api.get(url);\n};\n\n/**\n * Запрос на удаление выбранного ресторана\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const deleteRestaurantReq = (restaurantId: any) => api.delete(`${ConfigAPI.restaurant}/${restaurantId}`);\n\n/**\n * Запрос на создание стола для выбранного ресторана\n * @param hwid\n * @param restaurantData\n * @returns {Promise>}\n */\nexport const createTableReq = ({ hwid, restaurantData }: any) => api.post(\n ConfigAPI.restaurantTable,\n restaurantData,\n { headers: { 'K-hwid': hwid } },\n);\n\n/**\n * Запрос на редактирования количества мест для выбранного стола\n * @param restaurantId\n * @param tables\n * @returns {Promise>}\n */\nexport const updateTableReq = (restaurantId: any, tables: Array) => api.put(\n `${ConfigAPI.restaurantTable}/${restaurantId}`, tables,\n);\n\n/**\n * Запрос на получение всех ресторанов для авторизированного юзера\n * @returns {Promise | never>}\n */\nexport const getAllRestaurantReq = () => api.get(ConfigAPI.restaurant).then(res => res.data);\n\n/** @description Запрос на получение информации по всем резервам для выбранного ресторана */\nexport const getAllBookingsByRestaurantId = (\n id: number,\n dateFrom: Moment,\n dateTo: Moment,\n sort: { orderBy: string, order: string },\n active: boolean,\n) => {\n const from = parseDateForReq(dateFrom);\n const to = parseDateForReq(dateTo);\n\n /** @description Если сортируем по полю status добавляем доп. параметр 'sort=canceled-by,asc' */\n if (sort.orderBy === 'status') {\n return api.get(\n `${ConfigAPI.bookingJournal}/${id}/booking/filter/?from=${from}&to=${to}&active=${active}&sort=date,${sort.order}&sort=canceled-by,asc&scheduled=true`,\n );\n }\n\n return api\n .get(`${ConfigAPI.bookingJournal}/${id}/booking/filter`, {\n params: {\n from,\n to,\n active,\n sort: `${sort.orderBy},${sort.order}`,\n scheduled: true,\n },\n });\n};\n\n/** @description Запрос на получение информации по всем резервам для выбранного ресторана */\nexport const getUnconfirmedReserves = (restaurantId: number) => api\n .get(`${ConfigAPI.bookingJournal}/${restaurantId}/booking/filter`, {\n params: {\n status: 'CREATED',\n },\n }).then(r => r.data);\n\n/**\n * Список резервов, требующих подтверждения (резервы, которые поступили из виджета)\n * @return TOpenReserves\n */\nexport const getOpenReserves = (restaurantId: number) => api\n .get(`${ConfigAPI.bookingJournal}/${restaurantId}/booking/confirmation`)\n .then(r => r.data);\n\n/** @description Запрос на получение информации по всем резервам для выбранного ресторана */\nexport const getAllBookingsByRestaurantIdWithPageable = (\n id: number,\n date: {\n from: Moment,\n to: Moment,\n },\n sort: { orderBy: string, order: string },\n page: number,\n size: number,\n) => {\n const from = parseDateForReq(date.from);\n const to = parseDateForReq(date.to);\n\n return api\n .get(`${ConfigAPI.bookingJournal}/${id}/booking/filter/pageable`, {\n params: {\n page,\n size,\n from,\n to,\n sort: `${sort.orderBy},${sort.order}`,\n scheduled: true,\n final: true,\n },\n }).then(res => res.data);\n};\n\n/** @description Запрос на получение списка резервов по номеру телефона юзера */\nexport const getAllBookingsByUserPhone = (\n id: number,\n phone: number,\n sort: { orderBy: string, order: string },\n) => api\n .get(`${ConfigAPI.bookingJournal}/${id}/booking/filter`, {\n params: {\n sort: `${sort.orderBy},${sort.order}`,\n scheduled: true,\n final: true,\n 'guest-phone': phone,\n },\n }).then(res => res.data);\n\n/** @description Запрос на получение списка резервов по выбранному источнику */\nexport const getAllBookingBySource = (\n id: number,\n source: string,\n period: { from: string, to: string },\n sort: { orderBy: string, order: string },\n size: number,\n page: number,\n) => api\n .get(`${ConfigAPI.bookingJournal}/${id}/booking/filter/pageable`, {\n params: {\n from: parseDateForReq(period.from),\n to: parseDateForReq(period.to),\n sort: `${sort.orderBy},${sort.order}`,\n scheduled: true,\n final: true,\n page,\n size,\n 'source-id': source,\n },\n }).then(res => res.data);\n\n/**\n * Запрос на получение статистики для выбранного ресторана по параметрам\n * @param id - айди ресторана\n * @param date\n * @returns {Promise>}\n */\nexport const getRestaurantStatistic = (id: any, date: TDate) => api\n .get(`${ConfigAPI.statistic}/${id}/booking/statistic`, {\n params: {\n from: parseDateForReq(date.from),\n to: parseDateForReq(date.to),\n },\n });\n\n\n/**\n * Запрос на получение сводной статистики\n * @param restaurantId\n * @param period\n */\nexport const getSummaryStatistic = (restaurantId: number, period: { from: string, to: string }) => api\n .get(`${ConfigAPI.statisticSummary}/${restaurantId}/booking/statistic/summary`, {\n params: {\n from: period.from,\n to: period.to,\n },\n }).then(res => res.data);\n\n/**\n * Запрос на получение статистики по источникам\n * @param restaurantId\n * @param period\n */\nexport const getStatisticPie = (restaurantId: number, period: { from: string, to: string }) => api\n .get(`${ConfigAPI.statisticPie}/${restaurantId}/booking/statistic/source/count`, {\n params: {\n from: period.from,\n to: period.to,\n },\n }).then(res => res.data);\n\n/**\n * @description Запрос на получение статистики гостя\n * @param restaurantId\n * @param userPhone\n */\nexport const getGuestStatistic = (\n restaurantId: number, userPhone: number,\n) => api\n .get(`${ConfigAPI.statisticGuest}/${restaurantId}/booking/statistic/guest`, {\n params: {\n 'guest-phone': userPhone,\n },\n })\n .then(res => res.data);\n\n/**\n * @description Запрос на получение информации пользователя по номеру телефона\n * @param userPhone\n */\nexport const getUserInfo = (userPhone: number) => api\n .get(`${ConfigAPI.userInfo}/${userPhone}`)\n .then(res => res.data);\n\n/**\n * @description Запрос на получение информации о пользователе\n * @param userPhone\n * @param restaurantId\n */\nexport const getUserVisitInfo = (userPhone: string, restaurantId: number) => api\n .get(`${ConfigAPI.statistic}/${restaurantId}/booking/statistic/guest/info`, {\n params: {\n 'guest-phone': userPhone,\n },\n })\n .then(res => res.data);\n\n/**\n * @description Запрос на получение статистики по источнику\n * @param restaurantId\n * @param period\n * @param source\n */\nexport const getSourceStatisticReq = (restaurantId: number, period: { from: string; to: string }, source: string) => api\n .get(`${ConfigAPI.statistic}/${restaurantId}/booking/statistic/source`, {\n params: {\n from: period.from,\n to: period.to,\n 'source-id': source,\n },\n }).then(res => res.data);\n\n/**\n * Запрос на получение загруженности ресторатора\n * @param id - id ресторана\n * @param from - дата с\n * @param to - дата по\n * @param period - период\n * @return {Promise>}\n */\nexport const getRestaurantAttendance = (id: any, from: any, to: any, period: any) => api\n .get(`${ConfigAPI.statistic}/${id}/booking/statistic/attendance`, {\n params: {\n from: parseDateForReq(from),\n to: parseDateForReq(to),\n period,\n },\n });\n\n/**\n * Запрос на создание нового резерва для выбранного ресторана\n * @param date - дата резерва\n * @param duration - предположительное время резерва - по дефолту 2 часа\n * @param firstName - имя гостя\n * @param lastName - фамилия гостя - не обязательное поле\n * @param persons - количество персон\n * @param phone - номер телефона\n * @param tables - массив айдишников столов\n * @param comment\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const createReserveReq = ({\n date,\n duration,\n firstName,\n persons,\n phone,\n tables,\n comment,\n isBanquet,\n}: any, restaurantId: any) => {\n const reqData = {\n date: parseDateForReq(date),\n duration: parseInt(duration) || 2,\n firstName,\n persons,\n phone,\n comment,\n tables,\n isBanquet: !!isBanquet,\n };\n\n return api.post(`${ConfigAPI.restaurateur}/restaurant/${restaurantId}/booking`, reqData);\n};\n\n/**\n * @description Запрос на получение доступных столов для резерва по выбранным параметрам\n * @param restaurantId\n * @param date - дата\n * @param persons - количество персон\n * @param duration - предположительное время резерва - по дефолту 2 часа\n * @param booking - id резерва параметр нужен для запроса столов при редактировании резерва\n * @returns {Promise>}\n */\nexport const getFreeTablesReq = (\n restaurantId: number, date: string, persons: number, duration: number = 2, booking?: number,\n) => api.get(`${ConfigAPI.restaurantTable}/${restaurantId}/free`, {\n params: {\n time: parseDateForReq(date),\n persons,\n duration,\n booking,\n },\n});\n\nconst adaptSection = (data: TRestaurantSection): TRestaurantSectionAdapt => ({\n ...data,\n schema: data.schema ? getSchema(data.schema) : undefined,\n});\n/**\n * @description Запрос на получение списка залов\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const getSectionTablesReq = (\n restaurantId: number,\n) => api.get(`${ConfigAPI.restaurant}/${restaurantId}/section`)\n .then(res => res.data).then(mapFp(adaptSection));\n\n/**\n * Запрос на получение информации бронирования\n * @param id\n * @returns {Promise>}\n */\nexport const getReserveInfo = (id: number) => api.get(`${ConfigAPI.restaurateurBooking}/${id}`)\n .then(res => res.data);\n\n/**\n * Запрос на отмену резерва\n */\nexport const sendRejectReserveRequest = (id: number) => api\n .delete(`${ConfigAPI.restaurateurBooking}/${id}`)\n .then(r => r.data);\n\n/**\n * Редактирование резерва\n * @param {number} id - ID Резерва\n * @param {Object} info - Новая информация\n */\nexport const patchReserveReq = (id: number, info: any) => api\n .patch(`${ConfigAPI.restaurateurBooking}/${id}`, { ...info })\n .then(r => r.data);\n\n/**\n * Подтверждение нового резерва\n */\nexport const confirmReserveReq = (id: number) => api\n .put(`${ConfigAPI.restaurateurBooking}/${id}/confirm`)\n .then(r => r.data);\n\n/**\n * Авторизация ресторана в iiko\n * @param {number} restaurantId\n * @param {{login: string, password: string}} authData\n * @returns {Promise>}\n */\nexport const authIikoReq = (restaurantId: number, authData: any) => api\n .patch(`${ConfigAPI.restaurant}/${restaurantId}/iiko/credentials`, authData);\n\n/**\n * Получения списка организаций из iiko\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const getOrganizationFromIiko = (restaurantId: number) => api\n .get(`${ConfigAPI.restaurant}/${restaurantId}/iiko/organizations`)\n .then(res => res.data);\n\n/**\n * Выбор организации для выбранного ресторана\n * @param {number} restaurantId\n * @param {string} organizationId\n * @returns {Promise>}\n */\nexport const selectOrganizationReq = (restaurantId: number, organizationId: string) => api\n .patch(`${ConfigAPI.restaurant}/${restaurantId}/iiko/organizations`, {\n id: organizationId,\n });\n\n/**\n * Проверка привязки ресторана к иико\n * @param restaurantId\n * @returns {Promise>}\n */\nexport const checkRestaurantFromIikoReq = (restaurantId: number) => api\n .get(`${ConfigAPI.restaurant}/${restaurantId}/iiko/credentials`);\n\n/**\n * Загрузка акций с нашего бекенда\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const getProgramsReq = (restaurantId: number) => api\n .get(`${ConfigAPI.programs}/restaurant/${restaurantId}`)\n .then(res => res.data);\n\n/**\n * Загрузка акций с бекенда iiko\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const loadProgramsReq = (restaurantId: number) => api\n .post(`${ConfigAPI.loadsPrograms}/${restaurantId}/iiko/load`)\n .then(res => res.data);\n\n/**\n * Запрос на получение списка расписания по группам.\n * @param restaurantId\n */\nexport const getScheduleGroupReq = (restaurantId: number) => api\n .get(ConfigAPI.restaurantScheduleGroup, {\n params: {\n restaurantId,\n },\n })\n .then(r => r.data);\n\n/**\n * Запрос на создания новой группы расписания.\n * @param groups\n */\nexport const createScheduleGroupReq = (groups: Array) => api\n .post(ConfigAPI.restaurantScheduleGroups, groups)\n .then(r => r.data);\n\n/**\n * Запрос на редактирование группы расписания.\n * @param groups\n */\nexport const updateScheduleGroupReq = (groups: Array) => api\n .put(ConfigAPI.restaurantScheduleGroups, groups)\n .then(r => r.data);\n\n/**\n * Запрос на удаление группы расписания.\n * @param ids\n */\nexport const deleteScheduleGroupReq = (ids: Array) => api\n .delete(ConfigAPI.restaurantScheduleGroups, { data: { ids } });\n\n/**\n * Загрузка меню\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const getRestaurantMenuReq = (restaurantId: number) => api\n .get(`${ConfigAPI.menuRestaurant}/${restaurantId}`)\n .then(res => res.data);\n\n/**\n * Запрос на загрузку меню из iiko\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const getRestaurantMenuFromIikoReq = ({ restaurantId }: any) => api\n .post(`${ConfigAPI.menuRestaurant}/${restaurantId}/iiko/load`)\n .then(res => res.data);\n\n/**\n * Переключение режима приёма броней\n * @param restaurantId\n * @param processorType\n * @returns {Promise | never>}\n */\nexport const switchBookingProcessorReq = ({\n restaurantId,\n processorType,\n}: any) => api\n .patch(`${ConfigAPI.restaurant}/${restaurantId}/reservation/processor`, { reserveProcessor: processorType })\n .then(res => res.data);\n\n/**\n * Проверка статуса \"Подключение к системе автоматизации\"\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const cashBoxConnectStatusReq = (\n restaurantId: number,\n) => api.get(`${ConfigAPI.restaurant}/${restaurantId}/plugin/status`)\n .then(res => res.data);\n\n\n/**\n * Получение пинкода ресторана\n * @param restaurantId\n * @returns {Promise | never>}\n */\nexport const getRestaurantPinCodeReg = (\n restaurantId: number,\n) => api.get(`${ConfigAPI.restaurant}/${restaurantId}/pinCode`);\n\n/**\n * @description Отправка запроса на восстановление пароля\n * @param {string} email\n * @return {Promise>}\n */\nexport const restorePasswordReq = (email: string) => api.post(ConfigAPI.restorePasswordInit, email, {\n headers: {\n 'Content-Type': 'text/plain',\n },\n});\n\n/**\n * @description Отправка нового пароля\n * @param key\n * @param newPassword\n * @return {Promise>}\n */\nexport const sendNewPasswordReq = (key: string, newPassword: string) => api\n .post(ConfigAPI.restorePasswordFinish, {\n key,\n newPassword,\n });\n\n/** @description Получение изборажений ресторана */\nexport const getImageReq = (restaurantId: number) => api\n .get(`${ConfigAPI.restaurant}/${restaurantId}/image`)\n .then((res: any) => res.data);\n\n/** @description Загрузка нового изображения */\nexport const uploadImageReq = (restaurantId: number, image: any) => {\n const formData = new FormData();\n formData.append('image', image);\n\n // До лучших времен\n // for (const image of images) {\n // formData.append('image', image);\n // }\n\n return api\n .put(\n `${ConfigAPI.restaurant}/${restaurantId}/image/upload`,\n formData,\n {\n headers: {\n 'Content-Type': image.type,\n },\n },\n );\n};\n\n/** @description Скрыть изображение */\nexport const hideImageReq = (\n restaurantId: number,\n imageId: number,\n) => api\n .put(`${ConfigAPI.restaurant}/${restaurantId}/image/${imageId}/hide`);\n\n/** @description Показать изображение */\nexport const showImageReq = (\n restaurantId: number,\n imageId: number,\n) => api\n .put(`${ConfigAPI.restaurant}/${restaurantId}/image/${imageId}/show`);\n\n/** @description Реквест на установку фото в качестве обложки */\nexport const setImageAsCoverReq = (\n restaurantId: number,\n imageId: number,\n) => api\n .put(`${ConfigAPI.restaurant}/${restaurantId}/image/${imageId}/main`);\n\n/** @description Создание виджета */\nexport const createWidgetReq = (restaurantId: number, data: IWidgetDataAdapt): Promise => api\n .post(`${ConfigAPI.restaurantWidget}/restaurant/${restaurantId}`, widgetTransform(data))\n .then(dataProp)\n .then(widgetAdapt);\n\n/** @description Получение списка всех виджетов ресторана по id */\nexport const getAllWidgetsReq = (restaurantId: number): Promise => api\n .get(`${ConfigAPI.restaurantWidget}/restaurant/${restaurantId}`)\n .then(dataProp)\n .then(mapFp(widgetAdapt));\n\n/** @description Удаление виджета по id */\nexport const deleteWidgetReq = (widgetId: number) => api\n .delete(`${ConfigAPI.restaurantWidget}/${widgetId}`);\n\n/** @description Редактирование поля description виджета по id */\nexport const updateWidgetReq = (widgetId: number, data: IWidgetDataAdapt): Promise => api\n .put(`${ConfigAPI.restaurantWidget}/${widgetId}`, widgetTransform(data))\n .then(dataProp)\n .then(widgetAdapt);\n\n/** @description Реквест для получения списка блюд для резерва */\nexport const getOrderByBookingIdReq = (bookingId: number) => api\n .get(`${ConfigAPI.restaurateurBooking}/${bookingId}/order/item`)\n .then(r => r.data);\n\n// Получение текущих звонков ресторана\n// @todo Работа с постраничной навигацией не реализована в данной итерации.\n// Считаем, что для вывода текущих вызовов достаточно одного запроса\nexport const getRestaurantCallsReq = (\n restaurantId: number,\n states: Array,\n page: number = 0,\n size: number = 20,\n) => {\n const queryStates = states.map(state => `&state=${state}`).join('');\n\n return api.get(\n `${ConfigAPI.restaurantCalls}/${restaurantId}/call?page=${page}&size=${size}${queryStates}`,\n ).then(r => r.data);\n};\n\n// export const getEmployeesRequest = (restaurantId: number) => {\n// const tmpRequestPromise = new Promise((resolve) => {\n// setTimeout(() => {\n// resolve(employeesResponse);\n// }, 300);\n// });\n//\n// return tmpRequestPromise.then((r: any) => r);\n// }\n\nexport const getEmployeesRequest = (restaurantId: number) => api.get(\n `${ConfigAPI.restaurantCalls}/${restaurantId}/employee`,\n).then(\n (r: GM.Employees.Response.FetchAll.Success) => r,\n);\n\nexport const getCurrentEmployeeRequest = (restaurantId: number) => api.get(\n `${ConfigAPI.restaurantCalls}/${restaurantId}/employee/current`,\n).then(\n (r: GM.Employees.Response.Current.Success) => r,\n);\n\nexport const getCreateEmployeeRequest = (\n restaurantId: number,\n employeeData: GM.Employees.Request.Create,\n) => api.post(\n `${ConfigAPI.restaurantCalls}/${restaurantId}/employee`,\n employeeData,\n).then(\n (r: GM.Employees.Response.Create.Success) => r,\n);\n\nexport const getUpdateEmployeeRequest = (employeeData: GM.Employees.Request.Update) => api.put(\n `${ConfigAPI.restaurantCalls}/employee`,\n employeeData,\n).then(\n (r: GM.Employees.Response.Update.Success) => r,\n);\n\nexport const getDeleteEmployeeRequest = (payload: GM.Employees.Request.Delete) => {\n const { id } = payload;\n return api.delete(\n `${ConfigAPI.restaurantCalls}/employee/${id}`,\n ).then(r => r);\n};\n\nexport const getSendActivationEmailEmployeeRequest = (payload: GM.Employees.Request.Invite) => {\n const { id } = payload;\n return api.post(\n `${ConfigAPI.restaurantCalls}/employee/${id}/activation/resend`,\n ).then(r => r);\n};\n\nexport const getEmployeeByActivationKeyRequest = (payload: GM.Employees.Request.GetByActivationKey) => {\n const { key } = payload;\n return api.get(\n `${ConfigAPI.restaurantCalls}/employee/key/${key}`,\n ).then((r: any) => r);\n};\n\nexport const getActivateEmployeeRequest = (payload: GM.Employees.Request.Activate) => api.post(\n `${ConfigAPI.restaurantCalls}/employee/activate`,\n payload,\n).then((r: any) => r);\n\nexport const getResetEmployeePasswordRequest = (payload: GM.Employees.Request.ResetPassword) => {\n const { id } = payload;\n return api.post(\n `${ConfigAPI.restaurantCalls}/employee/${id}/password/reset`,\n ).then(r => r);\n};\n\n// @todo Переделать через передачу payload и указание типа?\nexport const getConfirmEmployeePasswordRequest = (employeeId: number, key: string, password: string) => api.post(\n `${ConfigAPI.restaurantCalls}/employee/${employeeId}/password/finish`,\n { key, password },\n).then((r: any) => r);\n\nexport const getCashboxStatusRequest = (payload: GM.Cashbox.Request.Status) => api.get(\n `${ConfigAPI.restaurantCalls}/${payload.restaurantId}/plugin`,\n).then(\n (r: GM.Cashbox.Response.Status.Success) => r,\n);\n\nexport const getCashboxDeleteRequest = (payload: GM.Cashbox.Request.Delete) => api.delete(\n `${ConfigAPI.restaurantCalls}/${payload.restaurantId}/plugin/${payload.hwid}`,\n).then(\n (r: GM.Cashbox.Response.Delete.Success) => r,\n);\n","import * as ActionTypes from './AuthActionsTypes';\nimport { IAuthActions } from './IAuthActions';\nimport { TUser } from '../../types/IAuthStore';\n\n/** @description Экшен для регистрации юзера */\nexport function signUp(\n firstName: string, lastName: string, email: string, password: string,\n): IAuthActions {\n return {\n type: ActionTypes.SIGN_UP_REQUEST,\n payload: {\n firstName,\n lastName,\n email,\n password,\n },\n };\n}\n\n/** @description Экшен для обаботки регистрации */\nexport function signUpSuccess(): IAuthActions {\n return {\n type: ActionTypes.SIGN_UP_SUCCESS,\n message: 'Код подтверждения отправлен на ваш email',\n };\n}\n\n/** @description Экшен для обаботки регистрации */\nexport function signUpError(error?: string): IAuthActions {\n return {\n type: ActionTypes.SIGN_UP_ERROR,\n error: error || 'Не удалось зарегистрироваться',\n };\n}\n\n/** @description Экшен для отправки кода для подтверждения email`a */\nexport function confirmEmail(code: string): IAuthActions {\n return {\n type: ActionTypes.CONFIRM_EMAIL_REQUEST,\n payload: {\n code,\n },\n };\n}\n\n/** @description Экшен для обработки успешного подтверждения email`a */\nexport function confirmEmailSuccess(): IAuthActions {\n return {\n type: ActionTypes.CONFIRM_EMAIL_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки не успешного подтверждения email`a */\nexport function confirmEmailError(): IAuthActions {\n return {\n type: ActionTypes.CONFIRM_EMAIL_ERROR,\n };\n}\n\n/** @description Экшен для отправки повторно подтверждения email`a */\nexport function confirmEmailResend(): IAuthActions {\n return {\n type: ActionTypes.CONFIRM_EMAIL_RESEND,\n };\n}\n\n/** @description Экшен для авторизации */\nexport function signIn(email: string, password: string, remember: boolean): IAuthActions {\n return {\n type: ActionTypes.SIGN_IN_REQUEST,\n payload: {\n email,\n password,\n remember,\n },\n };\n}\n\n/** @description Экшен для установки активного юзера */\nexport function signInSuccess(user: TUser): IAuthActions {\n return {\n type: ActionTypes.SIGN_IN_SUCCESS,\n payload: { user },\n };\n}\n\n/** @description Экшен для обработки авторизации */\nexport function getSessionSuccess(): IAuthActions {\n return {\n type: ActionTypes.GET_SESSION_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки авторизации и установки активного юзера */\nexport function signInError(error: string): IAuthActions {\n return {\n type: ActionTypes.SIGN_IN_ERROR,\n error,\n };\n}\n\n/** @description Экшен для того что бы разлогиниться */\nexport function signOut(): IAuthActions {\n return {\n type: ActionTypes.SIGN_OUT,\n };\n}\n\n/** @description Экшен для получения сессии */\nexport function getSession(): IAuthActions {\n return {\n type: ActionTypes.GET_SESSION_REQUEST,\n };\n}\n","// TODO Поправить типизацию i18next\n// @ts-ignore\nimport i18next from 'i18next';\nimport locales from './locales.json';\n\nexport default i18next.init({\n lng: 'ru',\n debug: true,\n resources: locales,\n react: {\n transEmptyNodeValue: '',\n transSupportBasicHtmlNodes: true, // allow
and simple html elements in translations\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i', 'a'],\n },\n});\n","import {\n all, put, takeLatest,\n} from 'redux-saga/effects';\nimport _ from 'lodash';\nimport * as Sentry from '@sentry/browser';\n\nimport { Routers } from '../config/constants';\nimport * as Api from '../api';\nimport * as ActionTypes from '../actions/auth/AuthActionsTypes';\nimport * as IActionTypes from '../actions/auth/IAuthActions';\nimport * as AuthActions from '../actions/auth/AuthActions';\nimport history from '../redux/history';\nimport { TUser } from '../types/IAuthStore';\nimport { setTokens, deleteTokens, setRememberMe } from '../helpers/tokensHelpers';\nimport locales from '../locales';\n\nfunction* setToken(email: string, password: string) {\n const tokenData = yield Api.tokenReq(email, password);\n const Token = tokenData.data;\n\n setTokens(Token.access_token, Token.refresh_token);\n yield put(AuthActions.getSessionSuccess());\n}\n\n/** @description Регистарция юзера */\nfunction* signUpSaga(action: IActionTypes.ISignUp) {\n try {\n yield Api.registerRestaurateurReq(action.payload);\n yield put(AuthActions.signUpSuccess());\n\n yield setToken(action.payload.email, action.payload.password);\n\n history.push(Routers.thanks);\n } catch (e) {\n if (_.has(e, 'response.status') && (e.response.status === 409)) {\n yield put(AuthActions.signUpError(locales.t('common.errors.signUpErrors.emailError')));\n } else {\n yield put(AuthActions.signUpError(locales.t('common.errors.signUpErrors.unknownError')));\n }\n }\n}\n\n/** @description Подтверждение регистрации по емейлу */\nfunction* confirmEmailSaga(action: IActionTypes.IConfirmEmail) {\n try {\n yield Api.confirmEmailReq(action.payload.code);\n yield put(AuthActions.confirmEmailSuccess());\n } catch (e) {\n yield put(AuthActions.confirmEmailError());\n }\n}\n\n/** @description Получение нового приглаcительного письма на почту */\nfunction* confirmEmailResendSaga() {\n try {\n yield Api.confirmEmailResendReq();\n } catch (e) {\n const errorText = locales.t('common.errors.signInErrors.unknownError');\n yield put(AuthActions.signInError(errorText));\n }\n}\n\n/** @description Авторизация юзера в ЛК */\nfunction* signInSaga(action: IActionTypes.ISignIn) {\n try {\n const { email, password, remember } = action.payload;\n\n setRememberMe(remember);\n yield setToken(email, password);\n\n const result = yield Api.getAccountReq();\n const User:TUser = result.data;\n\n if (User.activated) {\n yield put(AuthActions.signInSuccess(User));\n\n history.push(Routers.home);\n } else {\n yield put(AuthActions.signInError('common.errors.sendNewPassword.wrongEmail'));\n\n history.push(Routers.thanks);\n }\n } catch (e) {\n let errorText = locales.t('common.errors.signInErrors.unknownError');\n\n if (e.response && e.response.data.error === 'invalid_grant') {\n errorText = locales.t('common.errors.signInErrors.wrongEmailOrPasswordError');\n }\n\n yield put(AuthActions.signInError(errorText));\n }\n}\n\n/** @description Получение сессии для авторизированного юзера */\nfunction* getSessionSaga() {\n try {\n const result = yield Api.getAccountReq();\n const User:TUser = result.data;\n\n yield put(AuthActions.signInSuccess(User));\n } catch (e) {\n yield put({ type: ActionTypes.GET_SESSION_FAIL });\n }\n}\n\n/** @description Прекращение сессии для авторизированного юзера */\nfunction* signOutSaga() {\n try {\n yield deleteTokens();\n // yield Api.logoutReq();\n } catch (e) {\n console.log(e);\n }\n}\n\nfunction signInSuccessSaga(action: IActionTypes.ISignInSuccess) {\n const { id, email } = action.payload.user;\n\n Sentry.setUser({\n id: id.toString(),\n email,\n });\n}\n\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.SIGN_IN_REQUEST, signInSaga),\n takeLatest(ActionTypes.SIGN_UP_REQUEST, signUpSaga),\n takeLatest(ActionTypes.GET_SESSION_REQUEST, getSessionSaga),\n takeLatest(ActionTypes.SIGN_OUT, signOutSaga),\n takeLatest(ActionTypes.CONFIRM_EMAIL_REQUEST, confirmEmailSaga),\n takeLatest(ActionTypes.CONFIRM_EMAIL_RESEND, confirmEmailResendSaga),\n\n takeLatest(ActionTypes.SIGN_IN_SUCCESS, signInSuccessSaga),\n ]);\n}\n","import { IRestorePasswordActions } from './IRestorePasswordActions';\nimport * as ActionTypes from './RestorePasswordActionsTypes';\n\n/** @description Экшен для сброса пароля */\nexport function restorePassword(email: string): IRestorePasswordActions {\n return {\n type: ActionTypes.RESTORE_PASSWORD_REQUEST,\n payload: {\n email,\n },\n };\n}\n\n/** @description Экшен для обработки успешного сброса пароля */\nexport function restorePasswordSuccess(): IRestorePasswordActions {\n return {\n type: ActionTypes.RESTORE_PASSWORD_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки ошибки сброса пароля */\nexport function restorePasswordError(error: string): IRestorePasswordActions {\n return {\n type: ActionTypes.RESTORE_PASSWORD_ERROR,\n error,\n };\n}\n\n/** @description Экшен для отправки нового пароля */\nexport function sendNewPassword(key: string, newPassword: string): IRestorePasswordActions {\n return {\n type: ActionTypes.SEND_NEW_PASSWORD_REQUEST,\n payload: {\n key,\n newPassword,\n },\n };\n}\n\n/** @description Экшен для обработки успешной смены пароля */\nexport function sendNewPasswordSuccess(): IRestorePasswordActions {\n return {\n type: ActionTypes.SEND_NEW_PASSWORD_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки успешной смены пароля */\nexport function sendNewPasswordError(error: string): IRestorePasswordActions {\n return {\n type: ActionTypes.SEND_NEW_PASSWORD_ERROR,\n error,\n };\n}\n","import {\n all, put, takeLatest,\n} from 'redux-saga/effects';\n\nimport * as Api from '../api';\nimport * as ActionTypes from '../actions/restorePassword/RestorePasswordActionsTypes';\nimport * as IActionTypes from '../actions/restorePassword/IRestorePasswordActions';\nimport * as AuthActions from '../actions/restorePassword/RestorePasswordActions';\nimport locales from '../locales';\n\n\n/** @description Сага для восстановления пароля */\nfunction* restorePassword(action: IActionTypes.IRestorePassword) {\n try {\n yield Api.restorePasswordReq(action.payload.email);\n yield put(AuthActions.restorePasswordSuccess());\n } catch (e) {\n const errorText = locales.t('common.errors.restorePassword.unknownError');\n yield put(AuthActions.restorePasswordError(errorText));\n }\n}\n\n/** @description Сага для отправки нового пароля */\nfunction* sendNewPassword(action: IActionTypes.ISendNewPassword) {\n try {\n yield Api.sendNewPasswordReq(action.payload.key, action.payload.newPassword);\n yield put(AuthActions.sendNewPasswordSuccess());\n } catch (e) {\n let errorText = locales.t('common.errors.sendNewPassword.unknownError');\n\n if (e.response.status === 409) {\n errorText = locales.t('common.errors.sendNewPassword.wrongEmail');\n }\n\n yield put(AuthActions.sendNewPasswordError(errorText));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.RESTORE_PASSWORD_REQUEST, restorePassword),\n takeLatest(ActionTypes.SEND_NEW_PASSWORD_REQUEST, sendNewPassword),\n ]);\n}\n","import * as ActionTypes from './RestaurantsActionTypes';\nimport { IRestaurant } from './IRestaurant';\nimport { TRestaurantSectionAdapt } from '../../types/IRestaurantTablesSchemaStore';\n\n/** @description Экшен для удаления выбранного ресторана */\nexport function deleteRestaurant(restaurantId: number): IRestaurant {\n return {\n type: ActionTypes.DELETE_RESTAURANT_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного удаления ресторана */\nexport function deleteRestaurantSuccess(): IRestaurant {\n return {\n type: ActionTypes.DELETE_RESTAURANT_SUCCESS,\n message: 'Ресторан успешно удален',\n };\n}\n\n/** @description Экшен для обработки ошибки удаления ресторана */\nexport function deleteRestaurantError(): IRestaurant {\n return {\n type: ActionTypes.DELETE_RESTAURANT_ERROR,\n error: 'Не удалось удалить ресторан',\n };\n}\n\n/** @description Экшен для отправки запроса на получение залов */\nexport function getSections(\n restaurantId: number,\n): IRestaurant {\n return {\n type: ActionTypes.GET_SECTION_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на получение столов */\nexport function getSectionSuccess(sections: Array): IRestaurant {\n return {\n type: ActionTypes.GET_SECTION_REQUEST_SUCCESS,\n payload: {\n sections,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на получение столов */\nexport function getSectionError(): IRestaurant {\n return {\n type: ActionTypes.GET_SECTION_REQUEST_ERROR,\n error: 'Не удалось получить список залов',\n };\n}\n","import { all, put, takeLatest } from 'redux-saga/effects';\nimport _ from 'lodash';\n\nimport { getSectionTablesReq } from '../api';\n\nimport { TRestaurantSectionAdapt } from '../types/IRestaurantTablesSchemaStore';\nimport { GET_SECTION_REQUEST } from '../actions/restaurant/RestaurantsActionTypes';\nimport { IGetSections } from '../actions/restaurant/IRestaurant';\nimport {\n getSectionError,\n getSectionSuccess,\n} from '../actions/restaurant/RestaurantActions';\n\n\n/** @description Сага на получение залов ресторана */\nexport function* fetchSections(id: number) {\n try {\n const sections: Array = yield getSectionTablesReq(id).then(\n r => _.sortBy(r, ['name']),\n );\n\n yield put(getSectionSuccess(sections));\n } catch (e) {\n yield put(getSectionError());\n }\n}\n\nfunction* getSections(action: IGetSections) {\n yield fetchSections(action.payload.restaurantId);\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(GET_SECTION_REQUEST, getSections),\n ]);\n}\n","import * as ActionTypes from './ReservationsPageActionsTypes';\nimport {\n TActiveTables,\n TCreateReserveInfo,\n // TCreateReserveInitialData,\n TUpdateReserveInfo,\n} from '../../types/IReserveModalStore';\nimport { IReservationsPageActions } from './IReservationsPageActions';\nimport { TOpenReserve, TOpenReserves, TReserve } from '../../types/IBookingStore';\nimport { ITable } from '../../types/IRestaurantTablesStore';\nimport { TNewReserveFields } from '../../types/IAppReservesStore';\n\n/** @description Экшен на открытие модального окна для редактирования резерва */\nexport function openReserveEditModal(reserve: TReserve): IReservationsPageActions {\n return {\n type: ActionTypes.OPEN_EDIT_RESERVE_MODAL,\n payload: {\n reserve,\n },\n };\n}\n\n/** @description Экшен для закрытие модального она для редактирования резерва */\nexport function closeReserveEditModal(): IReservationsPageActions {\n return {\n type: ActionTypes.CLOSE_EDIT_RESERVE_MODAL,\n };\n}\n\n/** @description Экшен для отправки запроса на редактирование резерв */\nexport function updateReserve(reserveId: number, newReserveInfo: TUpdateReserveInfo): IReservationsPageActions {\n return {\n type: ActionTypes.UPDATE_RESERVE_REQUEST,\n payload: {\n reserveId,\n newReserveInfo,\n },\n };\n}\n\n/** @description Экшен для обработки успешного редактирования резерва */\nexport function updateReserveSuccess(updatedReserve: TReserve): IReservationsPageActions {\n return {\n type: ActionTypes.UPDATE_RESERVE_SUCCESS,\n message: 'Резерв обновляется',\n payload: {\n updatedReserve,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при редактирования резерва */\nexport function updateReserveError(): IReservationsPageActions {\n return {\n type: ActionTypes.UPDATE_RESERVE_ERROR,\n error: 'Не удалось отредактировать резерв',\n };\n}\n\n/** @description Экшен для отправки запроса на получение свободных столов */\nexport function getFreeTables(\n date: string, persons: number, duration: number, reserveId?: number,\n): IReservationsPageActions {\n return {\n type: ActionTypes.GET_FREE_TABLES_REQUEST,\n payload: {\n date,\n persons,\n duration,\n reserveId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на получение столов */\nexport function getFreeTablesSuccess(freeTables: Array): IReservationsPageActions {\n return {\n type: ActionTypes.GET_FREE_TABLES_SUCCESS,\n payload: {\n freeTables,\n // @ts-ignore\n sections: [],\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на получение столов */\nexport function getFreeTablesError(): IReservationsPageActions {\n return {\n type: ActionTypes.GET_FREE_TABLES_ERROR,\n error: 'Не удалось получить список доступных столов',\n };\n}\n\n/** @description Экшен открыть окно для создания нового резерва */\n// export function openReserveCreateModal(initialData?: TCreateReserveInitialData): IReservationsPageActions {\n// return {\n// type: ActionTypes.OPEN_CREATE_RESERVE_MODAL,\n// payload: {\n// initialData,\n// },\n// };\n// }\n\nexport function openReserveCreateModal(initialData?: TNewReserveFields): IReservationsPageActions {\n return {\n type: ActionTypes.OPEN_CREATE_RESERVE_MODAL,\n payload: {\n initialData,\n },\n };\n}\n\n/** @description Экшен закрыть окно для создания нового резерва */\nexport function closeReserveCreateModal(): IReservationsPageActions {\n return {\n type: ActionTypes.CLOSE_CREATE_RESERVE_MODAL,\n };\n}\n\n/** @description Экшен для создания нового резерва */\nexport function createReserve(reserveInfo: TCreateReserveInfo): IReservationsPageActions {\n return {\n type: ActionTypes.CREATE_RESERVE_REQUEST,\n payload: {\n ...reserveInfo,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса на создание нового резерва */\nexport function createReserveSuccess(): IReservationsPageActions {\n return {\n type: ActionTypes.CREATE_RESERVE_SUCCESS,\n message: 'Создан новый резерв',\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на создание нового резерва */\nexport function createReserveError(error?: string): IReservationsPageActions {\n return {\n type: ActionTypes.CREATE_RESERVE_ERROR,\n error: error || 'Не удалось создать резерв',\n };\n}\n\n/** @description Экшен на обработку успешного получения инфы резерва */\nexport function getReserveInfoSuccess(\n reserveInfo: TReserve,\n activeTables: TActiveTables,\n freeTables: Array,\n): IReservationsPageActions {\n return {\n type: ActionTypes.GET_RESERVE_INFO_SUCCESS,\n payload: {\n reserveInfo,\n activeTables,\n freeTables,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки получения инфы резерва */\nexport function getReserveInfoError(): IReservationsPageActions {\n return {\n type: ActionTypes.GET_RESERVE_INFO_ERROR,\n error: 'Не удалось получить информацию резерва',\n };\n}\n\n/** @description Экшен для открытия окна подтверждения резерва */\nexport function openReserveConfirmModal(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.OPEN_CONFIRM_RESERVE_MODAL,\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для закрытия окна подтверждения резерва */\nexport function closeReserveConfirmModal(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.CLOSE_CONFIRM_RESERVE_MODAL,\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для подтверждения резерва */\nexport function confirmReserve(reserveId: number, reserveInfo: { tables: Array }): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_RESERVE_REQUEST,\n payload: {\n reserveId,\n reserveInfo,\n },\n };\n}\n\n/** @description Экшен для обработки успешного подтверждения резерва */\nexport function confirmReserveSuccess(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_RESERVE_SUCCESS,\n message: 'Резерв подтвержден',\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при подтверждение резерва */\nexport function confirmReserveError(): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_RESERVE_ERROR,\n error: 'Не удалось подтвердить резерв',\n };\n}\n\n/** @description Экшен для отмены резерва из окна подтверждения */\nexport function rejectNewReserve(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_NEW_RESERVE_REQUEST,\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для обработки успешной отмены резерва из окна подтверждения */\nexport function rejectNewReserveSuccess(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_NEW_RESERVE_SUCCESS,\n message: 'Резерв отклонен',\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки отмены резерва из окна подтверждения */\nexport function rejectNewReserveError(): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_NEW_RESERVE_ERROR,\n error: 'Не удалось отклонить резерв',\n };\n}\n\n// /** @description Экшен для добавления резерва в очередь на обработку */\n// export function setReserveToQueue(reserveId: number): IReservationsPageActions {\n// return {\n// type: ActionTypes.SET_RESERVE_TO_QUEUE,\n// payload: {\n// reserveId,\n// },\n// };\n// }\n//\n// /** @description Экшен для добавления резерва в очередь на обработку */\n// export function updateReserveQueue(newQueue: Array): IReservationsPageActions {\n// return {\n// type: ActionTypes.UPDATE_RESERVE_QUEUE,\n// payload: {\n// newQueue,\n// },\n// };\n// }\n\n/** @description Экшен для установки актвиного стола */\nexport function setActiveTable(activeTable: ITable): IReservationsPageActions {\n return {\n type: ActionTypes.SET_ACTIVE_TABLE_REQ,\n payload: {\n activeTable,\n },\n };\n}\n\n/** @description Экшен для сброса актвного стола */\nexport function resetActiveTable(): IReservationsPageActions {\n return {\n type: ActionTypes.RESET_ACTIVE_TABLE,\n };\n}\n\n/** @description Экшен для установки актвиного стола */\nexport function setActiveTableSuccess(activeTable: TActiveTables): IReservationsPageActions {\n return {\n type: ActionTypes.SET_ACTIVE_TABLE_SUCCESS,\n payload: {\n activeTable,\n },\n };\n}\n\n/** @description Экшен для установки максимальной вместимости ресторана */\nexport function setMaxCapacity(capacity: number): IReservationsPageActions {\n return {\n type: ActionTypes.SET_MAX_CAPACITY,\n payload: {\n capacity,\n },\n };\n}\n\n/** @description Экшен для перехода в режим объединения столов */\nexport function mergeTables(mergeTables: boolean, getTableData: {\n duration: number,\n date: string,\n persons: number,\n reserveId?: number,\n}): IReservationsPageActions {\n return {\n type: ActionTypes.MERGE_TABLES_REQ,\n payload: {\n mergeTables,\n getTableData,\n },\n };\n}\n\n/** @description Экшен для обработки успешного переключения режима \"Объединения столов\" */\nexport function mergeTablesSuccess(mergeTables: boolean, tables: Array): IReservationsPageActions {\n return {\n type: ActionTypes.MERGE_TABLES_SUCCESS,\n payload: {\n mergeTables,\n tables,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки переключения режима \"Объединения столов\" */\nexport function mergeTablesError(): IReservationsPageActions {\n return {\n type: ActionTypes.MERGE_TABLES_ERROR,\n };\n}\n\n\n// Open Reserves\n\nexport function fetchOpenReserves(): IReservationsPageActions {\n return {\n type: ActionTypes.FETCH_OPEN_RESERVES,\n };\n}\n\nexport function fetchOpenReservesSuccess(reserves: TOpenReserves): IReservationsPageActions {\n return {\n type: ActionTypes.FETCH_OPEN_RESERVES_SUCCESS,\n reserves,\n };\n}\n\nexport function fetchOpenReservesError(error: string): IReservationsPageActions {\n return {\n type: ActionTypes.FETCH_OPEN_RESERVES_ERROR,\n error,\n };\n}\n\nexport function resetOpenReserves(): IReservationsPageActions {\n return {\n type: ActionTypes.RESET_OPEN_RESERVES,\n };\n}\n\nexport function addOpenReserve(reserve: TOpenReserve): IReservationsPageActions {\n return {\n type: ActionTypes.ADD_OPEN_RESERVE,\n reserve,\n };\n}\n\nexport function removeOpenReserve(id: number, manually: boolean = false): IReservationsPageActions {\n return {\n type: ActionTypes.REMOVE_OPEN_RESERVE,\n id,\n manually,\n };\n}\n\nexport function confirmOpenReserve(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_OPEN_RESERVE,\n reserveId,\n };\n}\n\nexport function confirmOpenReserveSuccess(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_OPEN_RESERVE_SUCCESS,\n reserveId,\n };\n}\n\nexport function confirmOpenReserveError(error: string): IReservationsPageActions {\n return {\n type: ActionTypes.CONFIRM_OPEN_RESERVE_ERROR,\n error,\n };\n}\n\nexport function rejectOpenReserve(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_OPEN_RESERVE,\n reserveId,\n };\n}\n\nexport function rejectOpenReserveSuccess(reserveId: number): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_OPEN_RESERVE_SUCCESS,\n reserveId,\n };\n}\n\nexport function rejectOpenReserveError(error: string): IReservationsPageActions {\n return {\n type: ActionTypes.REJECT_OPEN_RESERVE_ERROR,\n error,\n };\n}\n","import * as ReserveRejectActions from './RejectReserveActionsTypes';\nimport { TReserve } from '../../types/IBookingStore';\nimport { IRejectReserveAction } from './IRejectReserve';\n\n/** @description Экшен на отмену резерва */\nexport function rejectReserve(reserveId: number): IRejectReserveAction {\n return {\n type: ReserveRejectActions.REJECT_RESERVE_REQUEST,\n payload: {\n reserveId,\n },\n };\n}\n\n/** @description Экшен для обработки успешной отмены резерва */\nexport function rejectReserveSuccess(reserve: TReserve): IRejectReserveAction {\n return {\n type: ReserveRejectActions.REJECT_RESERVE_SUCCESS,\n message: 'Резерв отклонен',\n payload: {\n reserve,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при отмене резерва */\nexport function rejectReserveError(): IRejectReserveAction {\n return {\n type: ReserveRejectActions.REJECT_RESERVE_ERROR,\n error: 'Не удалось отклонить резерв',\n };\n}\n","import * as ActionTypes from './SnackBarsActionsTypes';\nimport { ISnackBarsActions } from './ISnackBarsActions';\n\n/**\n * @description Экшен для создания нотификации\n * @param notification\n * @returns {{type: string, notification: Object}}}\n */\nexport function enqueueSnackbar(notification: any): ISnackBarsActions {\n return {\n type: ActionTypes.ENQUEUE_SNACKBAR,\n notification: {\n key: new Date().getTime() + Math.random(),\n ...notification,\n },\n };\n}\n\n/**\n * @description Экшен для удаления нотификации\n * @param key\n * @returns {{type: string, key: *}}\n */\nexport function removeSnackbar(key: string): ISnackBarsActions {\n return {\n type: ActionTypes.REMOVE_SNACKBAR,\n key,\n };\n}\n\n/**\n * @description Экшен для создания кастомного уведомления\n * @param error\n */\nexport function customErrorShackBar(error: string): ISnackBarsActions {\n return {\n type: ActionTypes.CUSTOM_ERROR,\n error,\n };\n}\n\n/**\n * @description Экшен для создания кастомного уведомления\n * @param message\n */\nexport function customMessageShackBar(message: string): ISnackBarsActions {\n return {\n type: ActionTypes.CUSTOM_MESSAGE,\n message,\n };\n}\n\n/**\n * @description Экшен для создания кастоного уведомления\n * @param params\n */\nexport function customSnackBart(params: {\n message: string;\n variant?: string;\n vertical?: string;\n horizontal?: string;\n}): ISnackBarsActions {\n return {\n type: ActionTypes.CUSTOM_SNACKBAR,\n payload: {\n params,\n },\n };\n}\n","import { TModalTypes } from '../../pages/ReservationsPage';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const getReserveFormName = (modalName: TModalTypes): string => {\n switch (modalName) {\n case 'CREATE':\n return 'reserveCreateForm';\n\n case 'CONFIRM':\n return 'reserveConfirmForm';\n\n case 'EDIT':\n return 'reserveEditForm';\n\n default:\n throw new Error('Unknown modal type');\n }\n};\n","import { IAppActions } from '../../types/IAppActions';\nimport * as ActionTypes from './NotificationsActionsTypes';\nimport { TNotification, TNotifications } from '../../types/INotificationsStore';\n\nexport function setNotifications(items: TNotifications): IAppActions {\n return {\n type: ActionTypes.SET_NOTIFICATIONS,\n items,\n };\n}\n\nexport function resetNotifications(): IAppActions {\n return {\n type: ActionTypes.RESET_NOTIFICATIONS,\n };\n}\n\nexport function toggleNotifications(): IAppActions {\n return {\n type: ActionTypes.TOGGLE_NOTIFICATIONS,\n };\n}\n\nexport function openNotifications(): IAppActions {\n return {\n type: ActionTypes.OPEN_NOTIFICATIONS,\n };\n}\n\nexport function closeNotifications(): IAppActions {\n return {\n type: ActionTypes.CLOSE_NOTIFICATIONS,\n };\n}\n\n// @todo Может передавать только payload?\nexport function addNotification(notification: TNotification): IAppActions {\n return {\n type: ActionTypes.ADD_NOTIFICATION,\n notification,\n };\n}\n\nexport function removeNotification(key: string, manually: boolean = false): IAppActions {\n return {\n type: ActionTypes.REMOVE_NOTIFICATION,\n key,\n manually,\n };\n}\n\nexport function toggleNotification(key: string): IAppActions {\n return {\n type: ActionTypes.TOGGLE_NOTIFICATION,\n key,\n };\n}\n\nexport function idle(): IAppActions {\n return {\n type: ActionTypes.IDLE,\n };\n}\n","import { IAppActions } from '../../types/IAppActions';\nimport * as ActionTypes from './AppReservesActionsTypes';\nimport Reserve, { TAppReserveOuterChangeType, TAppReserves } from '../../types/IAppReservesStore';\nimport { IAppReserveCloseOptions } from './IAppReservesActions';\n\nexport function setAppReserves(reserves: TAppReserves): IAppActions {\n return {\n type: ActionTypes.SET_APP_RESERVES,\n reserves,\n };\n}\n\nexport function addAppReserve(reserve: Reserve): IAppActions {\n return {\n type: ActionTypes.ADD_APP_RESERVE,\n reserve,\n };\n}\n\nexport function removeAppReserve(key: string): IAppActions {\n return {\n type: ActionTypes.REMOVE_APP_RESERVE,\n key,\n };\n}\n\nexport function openAppReserve(key?: string): IAppActions {\n return {\n type: ActionTypes.OPEN_APP_RESERVE,\n key,\n };\n}\n\nexport function closeAppReserve(key?: string, options?: IAppReserveCloseOptions): IAppActions {\n return {\n type: ActionTypes.CLOSE_APP_RESERVE,\n key,\n options,\n };\n}\n\nexport function toggleAppReserves(): IAppActions {\n return {\n type: ActionTypes.TOGGLE_APP_RESERVES,\n };\n}\n\nexport function changeAppReserve(name: string, value?: any): IAppActions {\n return {\n type: ActionTypes.CHANGE_APP_RESERVE,\n name,\n value,\n };\n}\n\nexport function outerChangeTypeAppReserve(\n outerChangeType: TAppReserveOuterChangeType,\n reserveId: number,\n): IAppActions {\n return {\n type: ActionTypes.OUTER_CHANGE_APP_RESERVE,\n outerChangeType,\n reserveId,\n };\n}\n","import { createSelector } from 'reselect';\nimport { IAppStore } from '../types/IAppStore';\nimport { TRestaurantSectionAdapt } from '../types/IRestaurantTablesSchemaStore';\n\n/** @description Список залов */\nexport const selectorTableSections = (state: IAppStore) => state.reserveModal.sections;\n/** @description Список залов в которых есть столы для бронирования */\nexport const selectorTableSectionsAvailable = createSelector(\n [selectorTableSections],\n (sections?: TRestaurantSectionAdapt[]): TRestaurantSectionAdapt[] => (sections || [])\n .filter(section => (section.tables || [])\n .find(table => table.isBookingAllowed)),\n);\n\nexport type IPropsSelectOption = { value: number, label: string };\n\nconst normalizeOption = ({\n id,\n name,\n}: TRestaurantSectionAdapt): IPropsSelectOption => ({\n value: id,\n label: name,\n});\n\nfunction section2option(sections?: TRestaurantSectionAdapt[]): Array {\n return (sections || []).map(normalizeOption);\n}\n\n/** @description Список залов в формате {value,label} для компонента Select */\nexport const selectorSectionOptions = createSelector([\n selectorTableSections,\n], section2option);\n\n/** @description Список доступных залов в формате {value,label} для компонента Select */\nexport const selectorSectionAvailableOptions = createSelector([\n selectorTableSectionsAvailable,\n], section2option);\n","import { useState, useEffect } from 'react';\nimport { TNotification } from '../types/INotificationsStore';\n\nconst dismissedProp = 'dismissedNotifications';\n\nexport function getDismissedIds(): Array {\n const storage = localStorage.getItem(dismissedProp);\n if (storage) {\n const parsed = JSON.parse(storage);\n\n if (Array.isArray(parsed)) {\n return parsed;\n }\n }\n\n return [];\n}\n\n// export function dismiss(id: string) {\n// const dismissed = getDismissedIds();\n//\n// dismissed.push(id);\n//\n// localStorage.setItem(dismissedProp, JSON.stringify(dismissed));\n// }\n\nexport function isDismissed(id: string): boolean {\n return getDismissedIds().indexOf(id) !== -1;\n}\n\ninterface SetWindowSizeProps {\n width?: number;\n height?: number;\n}\n\nexport const useWindowSize = () => {\n const [windowSize, setWindowSize] = useState({\n width: undefined,\n height: undefined,\n });\n\n useEffect(() => {\n const handleResize = () => {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n window.addEventListener('resize', handleResize);\n handleResize();\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowSize;\n};\n\nexport const sortNotifications = (a: TNotification, b: TNotification) => {\n const sortOrderA = a.getSortOrder();\n const sortOrderB = b.getSortOrder();\n\n if (sortOrderA < sortOrderB) {\n return -1;\n }\n\n if (sortOrderA > sortOrderB) {\n return 1;\n }\n\n return 0;\n};\n","import { createSelector } from 'reselect';\nimport { formValueSelector } from 'redux-form';\nimport { map } from 'lodash';\nimport moment from 'moment';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { ITable } from '../../types/IRestaurantTablesStore';\n\nimport {\n TSectionAdaptSchema,\n TRestaurantSectionAdapt,\n} from '../../types/IRestaurantTablesSchemaStore';\n\nimport { selectorTableSectionsAvailable } from '../../reducers/selectors';\n// import { isDismissed, sortNotifications } from '../../helpers/callHelpers';\nimport { sortNotifications } from '../../helpers/callHelpers';\n\nimport Reserve, { IAppReservesStore, TAppReserves } from '../../types/IAppReservesStore';\nimport { TModalTypes } from '../../pages/ReservationsPage';\nimport { getReserveFormName } from './constants';\n\n\nexport const selectorOpenModal = createSelector(\n [(state: IAppStore) => state.reserveModal],\n (reserveModal): TModalTypes => {\n const { createReserveModalIsOpen, confirmReserveModalIsOpen, editReserveModalIsOpen } = reserveModal;\n\n if (createReserveModalIsOpen) {\n return 'CREATE';\n }\n\n if (editReserveModalIsOpen) {\n return 'EDIT';\n }\n\n if (confirmReserveModalIsOpen) {\n return 'CONFIRM';\n }\n\n return null;\n },\n);\n\n\n/** @description Форма */\nexport const selectorForm = (formName: string) => formValueSelector(formName);\n\n// const sectionIdSelector = (state: IAppStore) => selectorForm('aaa')(state, 'section');\nexport const sectionIdSelector = createSelector([\n (state: IAppStore) => state,\n selectorOpenModal,\n], (state, openModal: TModalTypes) => selectorForm(getReserveFormName(openModal))(state, 'section'));\n\n\n/** @description Текущая схема зала */\nexport const selectorCurrentSection = createSelector([\n selectorTableSectionsAvailable,\n sectionIdSelector,\n], (sections: Array | void, sectionId: number | void): TRestaurantSectionAdapt | void => {\n if (typeof sectionId === 'number' && Number(sectionId) > 0) {\n return (sections || []).find(d => d.id === sectionId);\n }\n return undefined;\n});\n\n/** @description Свободные столы для брони */\nexport const selectorFreeTables = createSelector([\n (state: IAppStore) => state.reserveModal.freeTables,\n selectorCurrentSection,\n], (freeTables: Array | void, section: TRestaurantSectionAdapt | void) => {\n if (section) {\n const ids = map(section.tables, table => table.id);\n return freeTables ? freeTables.filter((d) => {\n const sameSection = d.section ? d.section.id === section.id : false;\n return sameSection && ids.includes(d.id);\n }) : undefined;\n }\n return freeTables;\n});\n\n/** @description Текущая схема зала */\nexport const selectorCurrentSectionSchema = createSelector(\n [selectorCurrentSection],\n (section: TRestaurantSectionAdapt | void): TSectionAdaptSchema | void => (section ? section.schema : undefined),\n);\n\n\n// Уведомления\n\nconst notifications = (state: IAppStore) => state.notifications.items;\n\n// @todo Проверить перерисовку\nexport const notificationsSelector = createSelector(\n notifications,\n (notifications) => {\n if (notifications) {\n return notifications\n // .filter(n => !isDismissed(n.getKey()))\n .sort(sortNotifications);\n }\n\n return [];\n },\n);\n\n\n// Открытые на редактирование резервы\n\nexport const selectorSelectedAppReserve = createSelector(\n [(state: IAppStore) => state.appReserves.items],\n (reserves: TAppReserves) => reserves.find((reserve: Reserve) => reserve.open),\n);\n\nexport const selectorLastAppReserve = createSelector(\n [(state: IAppStore) => state.appReserves],\n (appReserves: IAppReservesStore) => {\n const { items, lastKey } = appReserves;\n return lastKey && items.find((i: Reserve) => i.key === lastKey);\n },\n);\n\nexport const selectorAlreadySelectedTables = createSelector(\n [(state: IAppStore) => state.appReserves, selectorSelectedAppReserve],\n (appReserves: IAppReservesStore, selectedReserve?: Reserve) => {\n const { items } = appReserves;\n\n let selectedTableDate: string;\n if (selectedReserve && selectedReserve.payload.date) {\n selectedTableDate = moment(selectedReserve.payload.date).format('L');\n }\n\n return items\n .filter((item: Reserve) => {\n if (item.open || !item.payload.date || !selectedTableDate) {\n return false;\n }\n\n return moment(item.payload.date).format('L') === selectedTableDate;\n })\n .reduce((accumulator: Array, item: Reserve) => {\n if (item.payload && item.payload.tables) {\n return accumulator.concat(\n item.payload.tables.map((j: ITable) => j.id),\n );\n }\n\n return accumulator;\n }, []);\n },\n);\n","import {\n all,\n fork,\n put,\n select,\n takeEvery,\n takeLatest,\n} from 'redux-saga/effects';\nimport { getFormValues } from 'redux-form';\nimport _ from 'lodash';\nimport * as Sentry from '@sentry/react';\n\nimport {\n confirmReserveReq,\n createReserveReq,\n // getUnconfirmedReserves,\n getFreeTablesReq,\n getReserveInfo,\n patchReserveReq,\n sendRejectReserveRequest, getOpenReserves,\n} from '../api';\nimport { fetchSections } from './RestaurantsSectionsSaga';\nimport * as RejectReserveActionTypes\n from '../actions/reserveReject/RejectReserveActionsTypes';\nimport * as ReserveModalActionsTypes\n from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport * as ReserveModalActions\n from '../actions/reservationsPage/ReservationsPageActions';\nimport * as ReserveRejectActions\n from '../actions/reserveReject/RejectReserveActions';\nimport * as IReserveActions\n from '../actions/reservationsPage/IReservationsPageActions';\nimport { IRejectReserveReq } from '../actions/reserveReject/IRejectReserve';\nimport { TReserve, TOpenReserves } from '../types/IBookingStore';\nimport { IAppStore } from '../types/IAppStore';\nimport { ITable } from '../types/IRestaurantTablesStore';\nimport { GET_BOOKING_REQUEST } from '../actions/booking/BookingActionsTypes';\nimport locales from '../locales';\nimport {\n customErrorShackBar,\n customMessageShackBar,\n} from '../actions/snackbars/SnackBarsActions';\n\nimport { INIT_END } from '../actions/cabinet/CabinetActionsTypes';\nimport { getReserveFormName } from '../containers/Reservation/constants';\n\n// import { reservesMockSliced } from '../api/mocks/reserves';\nimport { TNotification } from '../types/INotificationsStore';\nimport { removeNotification } from '../actions/notifications/NotificationsActions';\nimport { changeAppReserve, removeAppReserve } from '../actions/appReserves/AppReservesActions';\nimport { selectorOpenModal } from '../containers/Reservation/selectors';\nimport { TModalTypes } from '../pages/ReservationsPage';\nimport Reserve from '../types/IAppReservesStore';\n\n\n/** @description Сага для отмена резева */\nfunction* reserveRejectSaga(action: IRejectReserveReq) {\n try {\n const { reserveId } = action.payload;\n const response: any = yield sendRejectReserveRequest(reserveId);\n const reserveInfo: TReserve = response.data;\n yield put(ReserveRejectActions.rejectReserveSuccess(reserveInfo));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveRejectActions.rejectReserveError());\n }\n}\n\n/** @description Сага на редактирование резерва */\nfunction* editReserveSaga(action: IReserveActions.IUpdateReserve) {\n const { reserveId, newReserveInfo } = action.payload;\n\n try {\n const updatedReserve = yield patchReserveReq(reserveId, newReserveInfo);\n yield put(ReserveModalActions.updateReserveSuccess(updatedReserve));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.updateReserveError());\n }\n}\n\nfunction* updateReserveSuccessSaga(action: IReserveActions.IUpdateReserveSuccess) {\n const { updatedReserve } = action.payload;\n\n const reserve = yield select(\n (state: IAppStore) => state.appReserves.items.find((item: Reserve) => item.payload.id === updatedReserve.id),\n );\n\n if (reserve) {\n yield put(removeAppReserve(reserve.key));\n }\n}\n\nfunction* confirmReserveSuccessSaga(action: IReserveActions.IConfirmReserveSuccess) {\n const { reserveId } = action.payload;\n\n const reserve = yield select(\n (state: IAppStore) => state.appReserves.items.find((item: Reserve) => item.payload.id === reserveId),\n );\n\n if (reserve) {\n yield put(removeAppReserve(reserve.key));\n }\n}\n\n/** @description Сага на получение свободных столов */\nfunction* fetchTables(reserve: TReserve, restaurantId: number) {\n try {\n const {\n tables, persons, duration, date,\n } = reserve;\n const personsForReq = tables && tables.length > 1 ? 0 : persons;\n\n const freeTables: Array = yield getFreeTablesReq(restaurantId, date, personsForReq, duration)\n .then(r => _.sortBy(r.data, ['hall', i => parseInt(i.number)]));\n\n const tableList = tables ? tables.concat(freeTables) : freeTables;\n yield put(ReserveModalActions.getFreeTablesSuccess(tableList));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.getFreeTablesError());\n }\n}\n\nconst currentRestaurantSelector = (state: IAppStore) => state.cabinet.currentRestaurant;\n\n// /** @description Сага на получение свободных столов и залов при открытии окна редактирования */\n// function* openEditReserveModalSaga(action: IReserveActions.IOpenReserveEditModal) {\n// const restaurant = yield select(currentRestaurantSelector);\n// const restaurantId = restaurant ? restaurant.id : 0;\n//\n// console.log('openEditReserveModalSaga', action.payload.reserve, 'EDIT');\n//\n// yield fork(fetchTables, action.payload.reserve, restaurantId);\n// yield fork(fetchSections, restaurantId);\n// }\n\n// /** @description Сага на получение залов при открытии окна создания */\n// function* openCreateReserveModalSaga() {\n// const restaurant = yield select(currentRestaurantSelector);\n// const restaurantId = restaurant ? restaurant.id : 0;\n//\n// yield fork(fetchSections, restaurantId);\n// }\n\n/** @description Получение и сортировка подходящих столов для резерва. */\nfunction* getFreeTablesSaga(action: IReserveActions.IGetFreeTables) {\n const restaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n if (!restaurant) {\n yield put(ReserveModalActions.getFreeTablesError());\n return;\n }\n\n try {\n const {\n date,\n persons,\n duration,\n reserveId,\n } = action.payload;\n\n const openModal: TModalTypes = yield select(selectorOpenModal);\n const isEdit = openModal === 'EDIT';\n\n const reserveModal = yield select((state: IAppStore) => state.reserveModal);\n const { isMergeTables, activeTables: activeTablesObj } = reserveModal;\n\n const freeTables: Array = yield getFreeTablesReq(\n restaurant.id,\n date,\n persons,\n duration,\n reserveId,\n\n ).then(r => _.sortBy(r.data, ['hall', i => parseInt(i.number)]));\n\n const activeTablesArr = Object.keys(activeTablesObj).map(id => activeTablesObj[id]);\n\n const freeTablesMap: { [id: number]: ITable } = freeTables\n .reduce((m: { [id: number]: ITable }, t) => ({ ...m, [t.id]: t }), {});\n\n const { isIncludeReserveTables } = activeTablesArr.reduce((r, t) => {\n // eslint-disable-next-line\n const tableIsFree = freeTablesMap.hasOwnProperty(t.id);\n\n if (tableIsFree && r.isIncludeReserveTables === true) {\n return r;\n }\n\n return { isIncludeReserveTables: false };\n }, { isIncludeReserveTables: true });\n\n if (isMergeTables) {\n if (isIncludeReserveTables) {\n const newFreeTables = freeTables.filter(t => !activeTablesObj[t.id]);\n yield put(ReserveModalActions.getFreeTablesSuccess(activeTablesArr.concat(newFreeTables)));\n } else {\n yield put(ReserveModalActions.resetActiveTable());\n yield put(customMessageShackBar(locales.t('common.reserveModal.resetActiveTables')));\n yield put(ReserveModalActions.getFreeTablesSuccess(freeTables));\n }\n\n return;\n }\n\n const activeTable = activeTablesArr[0] || null;\n const findTableBySection = (section: number) => (table: ITable) => (table.section || {}).id === section;\n\n const reserveFormName = getReserveFormName(openModal);\n let form;\n\n if (reserveFormName) {\n form = yield select(getFormValues(reserveFormName));\n }\n\n const { section: currentReserveSection } = form || {};\n // filter all free tables by current selected Section\n const currentFreeTables = currentReserveSection\n ? freeTables.filter(findTableBySection(currentReserveSection))\n : freeTables;\n\n if (isEdit) {\n /** В случае если это редактирования резерва */\n const rInfo: TReserve = yield select((state: IAppStore) => state.reserveModal.editReserveInfo);\n const { tables } = rInfo;\n\n if (isIncludeReserveTables && tables && tables.length) {\n /** Если стол резерва доступен в выборке свободных столов,\n * добавляем его в начало списка столов */\n const parseTableList = freeTables.filter(r => r.id !== tables[0].id);\n yield put(ReserveModalActions.getFreeTablesSuccess(tables.concat(parseTableList)));\n } else if (\n tables\n && !isIncludeReserveTables\n && activeTable.id === tables[0].id\n ) {\n /** Если стола резерва нету в списке столов и он ранее был активным,\n * назначаем активным первый стол из списка */\n yield put(ReserveModalActions.getFreeTablesSuccess(freeTables));\n yield put(ReserveModalActions.setActiveTable(currentFreeTables[0]));\n if (currentFreeTables.length) {\n yield put(customMessageShackBar(locales.t('common.reserveModal.wrongTableError')));\n } else {\n yield put(customMessageShackBar(locales.t('common.reserveModal.noActiveTablesInSection')));\n }\n } else {\n /** Для остальных кейсов возвращем список столов */\n if (activeTable && currentFreeTables.length > 0 && !freeTablesMap[activeTable.id]) {\n /** Если активного стола нет в списке новых столов,\n * назначаем активным первый из списка */\n yield put(ReserveModalActions.setActiveTable(currentFreeTables[0]));\n if (currentFreeTables.length) {\n yield put(customMessageShackBar(locales.t('common.reserveModal.setNewTable')));\n } else {\n yield put(customMessageShackBar(locales.t('common.reserveModal.noActiveTablesInSection')));\n }\n }\n\n yield put(ReserveModalActions.getFreeTablesSuccess(freeTables));\n }\n } else {\n /** Если активного стола нет в списке новых столов, назначаем активным первый из списка */\n if (activeTable && !freeTablesMap[activeTable.id]) {\n yield put(ReserveModalActions.setActiveTable(currentFreeTables[0]));\n if (currentFreeTables.length) {\n yield put(customMessageShackBar(locales.t('common.reserveModal.setNewTable')));\n } else {\n yield put(customMessageShackBar(locales.t('common.reserveModal.noActiveTablesInSection')));\n }\n }\n yield put(ReserveModalActions.getFreeTablesSuccess(freeTables));\n }\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.getFreeTablesError());\n }\n}\n\n/** @description Создание нового резерва для выбранного ресторана */\nfunction* createReserveSaga(action: IReserveActions.ICreateReserve) {\n try {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n yield createReserveReq(action.payload, restaurantId);\n yield put(ReserveModalActions.createReserveSuccess());\n } catch (e) {\n Sentry.captureException(e);\n if (!_.isUndefined(e.response.data[0]) && e.response.data[0].code === 'reservation_incorrect_date') {\n yield put(ReserveModalActions.createReserveError('Не верно указано время резерва'));\n } else {\n yield put(ReserveModalActions.createReserveError());\n }\n }\n}\n\n// /** @description Получение и передача на форму данных о новой брони. */\nfunction* openNewReserveModalSaga(action: IReserveActions.IOpenReserveConfirmModal) {\n const restaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n const restaurantId = restaurant ? restaurant.id : 0;\n\n try {\n const reserveInfo: TReserve = yield getReserveInfo(action.payload.reserveId);\n const tables = reserveInfo.tables || [];\n\n const persons = tables.length > 1 ? 0 : reserveInfo.persons;\n const activeTables: { [id: number]: ITable } = tables.reduce((aT, t) => {\n if (t) {\n return {\n ...aT,\n [t.id]: t,\n };\n }\n\n return aT;\n }, {});\n\n const freeTables: Array = yield getFreeTablesReq(\n restaurant.id, reserveInfo.date, persons, reserveInfo.duration, reserveInfo.id,\n )\n .then(r => _.sortBy(r.data, ['hall', i => parseInt(i.number)]));\n\n const newFreeTables = tables.concat(freeTables.filter(t => !activeTables[t.id]));\n\n yield put(ReserveModalActions.getReserveInfoSuccess(reserveInfo, activeTables, newFreeTables));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.getReserveInfoError());\n }\n yield fork(fetchSections, restaurantId);\n}\n\n/** @description Подтверждение нового резерва\n * Для потдтверждения резерва:\n * 1. Выставляем стол для брони - по дефолту резервы требующие подтверждения без столов\n * 2. Отправляем запрос на подтверждение\n */\nfunction* confirmNewReserveSaga(action: IReserveActions.IConfirmReserve) {\n const { reserveId, reserveInfo } = action.payload;\n\n try {\n yield patchReserveReq(reserveId, reserveInfo);\n yield confirmReserveReq(reserveId);\n yield put(ReserveModalActions.confirmReserveSuccess(reserveId));\n } catch (e) {\n Sentry.captureException(e);\n if (e.response.status === 409) {\n yield put(ReserveModalActions.closeReserveConfirmModal(reserveId));\n yield put(customErrorShackBar('Резерв был отменен гостем'));\n } else {\n yield put(ReserveModalActions.confirmReserveError());\n }\n }\n}\n\n/** @description Отмена резерва из формы подтверждение резерва */\nfunction* rejectNewReserveSaga(action: any) {\n const { reserveId } = action.payload;\n\n try {\n yield sendRejectReserveRequest(reserveId);\n yield put(ReserveModalActions.rejectNewReserveSuccess(reserveId));\n // TODO Пофиксить вызов GET_BOOKING_REQUEST\n yield put({ type: GET_BOOKING_REQUEST });\n } catch (e) {\n Sentry.captureException(e);\n if (e.response.status === 409) {\n yield put(ReserveModalActions.closeReserveConfirmModal(reserveId));\n yield put(customErrorShackBar('Резерв был отменен гостем'));\n } else {\n yield put(ReserveModalActions.rejectNewReserveError());\n }\n }\n}\n\n/** @description Обработка очереди резервов требующих подтверждения */\n// function* closeReserveModalSaga(action: any) {\n// const bookingQueue = yield select(state => state.reserveModal.bookingQueue);\n// const reserveId = action.payload ? action.payload.reserveId : null;\n//\n// if (bookingQueue.length > 0) {\n// if (reserveId) {\n// const newQueue = bookingQueue.filter((i: any) => i !== reserveId);\n// yield put(ReserveModalActions.updateReserveQueue(newQueue));\n//\n// if (newQueue.length > 0) {\n// yield put(ReserveModalActions.openReserveConfirmModal(newQueue[0]));\n// }\n// } else {\n// yield put(ReserveModalActions.openReserveConfirmModal(bookingQueue[0]));\n// }\n// }\n// }\n\n/** @description Сага для получения максимальной вместимости ресторана */\nfunction* getMaxCapacitySaga() {\n // const { restaurant, tableList } = yield select((state: IAppStore) => ({\n // restaurant: state.cabinet.currentRestaurant,\n // tableList: state.tables.tableList,\n // }));\n // let maxCapacity = 0;\n // const maxCapacityCb = (t: ITable) => {\n // if (maxCapacity < t.capacity) {\n // maxCapacity = t.capacity;\n // }\n // };\n //\n // try {\n // if (tableList.length > 0) {\n // tableList.forEach(maxCapacityCb);\n // } else {\n // const newTableList: Array = yield getAllTableForRestaurantReq(restaurant.id)\n // .then(res => res.data);\n // newTableList.forEach(maxCapacityCb);\n // }\n // } catch (e) {\n // Sentry.captureException(e);\n // yield put(ReserveModalActions.setMaxCapacity(0));\n // }\n\n yield put(ReserveModalActions.setMaxCapacity(100));\n}\n\n/**\n * @description Сага для получения неподтверждённых резервов\n * @todo Удалить после переделки на фазу 2 (https://guestme.atlassian.net/browse/DEV-340)?\n */\n// function* fetchUnconfirmedReserves() {\n// const restaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n// if (!restaurant || !restaurant.id) {\n// return;\n// }\n//\n// try {\n// const reserves: Array = yield getUnconfirmedReserves(restaurant.id);\n//\n// for (let i = 0; i < reserves.length; i += 1) {\n// if (i === 0) {\n// yield put(ReserveModalActions.openReserveConfirmModal(reserves[i].id));\n// } else {\n// yield put(ReserveModalActions.setReserveToQueue(reserves[i].id));\n// }\n// }\n// } catch (e) {\n// Sentry.captureException(e);\n// yield put(ReserveModalActions.fetchOpenReservesError(e.message));\n// }\n// }\n\n/** @description Сага назначения активного стола на странице создания/редактирования/подтверждения резервов */\nfunction* setActiveTableSaga(action: IReserveActions.ISetActiveTable) {\n const {\n isMergeTables,\n activeTables,\n } = yield select((state: IAppStore) => state.reserveModal);\n const newTable = action.payload.activeTable;\n const activeTablesId = Object.keys(activeTables).map(id => parseInt(id));\n\n if (newTable) {\n if (isMergeTables) {\n if (activeTables[newTable.id]) {\n const newActiveTables = activeTablesId.reduce((t, id) => {\n if (id !== newTable.id) {\n return {\n ...t,\n [id]: activeTables[id],\n };\n }\n\n return t;\n }, {});\n\n yield put(ReserveModalActions.setActiveTableSuccess(newActiveTables));\n } else if (activeTablesId.length > 0 && activeTables[activeTablesId[0]].hall !== newTable.hall) {\n yield put(customErrorShackBar('Столы должны быть в одном зале'));\n } else {\n yield put(ReserveModalActions.setActiveTableSuccess({\n ...activeTables,\n [newTable.id]: newTable,\n }));\n }\n } else {\n yield put(ReserveModalActions.setActiveTableSuccess({\n [newTable.id]: newTable,\n }));\n }\n } else {\n yield put(ReserveModalActions.resetActiveTable());\n }\n}\n\n/** @description Сага для переключения функции объеденения столов */\nexport function* mergeTablesSaga(action: IReserveActions.IMergeTableReq) {\n const { getTableData } = action.payload;\n const restaurant = yield select((store: IAppStore) => store.cabinet.currentRestaurant);\n\n try {\n const freeTables: Array = yield getFreeTablesReq(\n restaurant.id, getTableData.date, getTableData.persons, getTableData.duration, getTableData.reserveId,\n )\n .then(r => _.sortBy(r.data, ['hall', i => parseInt(i.number)]));\n yield put(ReserveModalActions.mergeTablesSuccess(action.payload.mergeTables, freeTables));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.mergeTablesError());\n }\n}\n\nfunction* fetchOpenReserves() {\n const restaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n if (!restaurant || !restaurant.id) {\n return;\n }\n\n try {\n const reserves: TOpenReserves = yield getOpenReserves(restaurant.id);\n // let reserves: TOpenReserves = yield getOpenReserves(restaurant.id);\n //\n // // @todo Убрать после тестирования\n // if (process.env.NODE_ENV === 'development' && reserves.length === 0) {\n // reserves = reservesMockSliced;\n // }\n\n yield put(ReserveModalActions.fetchOpenReservesSuccess(reserves));\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.fetchOpenReservesError(e.message));\n }\n}\n\nfunction* removeOpenReserveSaga(action: IReserveActions.IRemoveOpenReserve) {\n const notification = yield select(state => state.notifications.items.find(\n (x: TNotification) => x.type === 'RESERVE' && x.payload.id === action.id,\n ));\n\n if (notification) {\n yield put(removeNotification(notification.getKey(), action.manually));\n }\n}\n\nfunction* confirmOpenReserveSaga(action: IReserveActions.IConfirmOpenReserve) {\n const { reserveId } = action;\n\n try {\n const responseReserve = yield confirmReserveReq(reserveId);\n yield put(\n ReserveModalActions.confirmOpenReserveSuccess(responseReserve.id),\n );\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.confirmOpenReserveError(\n e.response.status === 409 ? 'Резерв был отменен гостем' : e.message,\n ));\n }\n}\n\nfunction* openReserveSuccessSaga(\n action: IReserveActions.IConfirmOpenReserveSuccess | IReserveActions.IRejectOpenReserveSuccess,\n) {\n yield put(ReserveModalActions.removeOpenReserve(action.reserveId));\n\n // @todo Как убирать нотификации?\n // yield put(removeNotification());\n}\n\nfunction* rejectOpenReserveSaga(action: IReserveActions.IRejectOpenReserve) {\n const { reserveId } = action;\n\n try {\n const responseReserve: TReserve = yield sendRejectReserveRequest(reserveId);\n yield put(\n ReserveModalActions.rejectOpenReserveSuccess(responseReserve.id),\n );\n } catch (e) {\n Sentry.captureException(e);\n yield put(ReserveModalActions.rejectOpenReserveError(\n e.response.status === 409 ? 'Резерв был отменен гостем' : e.message,\n ));\n }\n}\n\n// @todo Проверить как эти snackbar`ы работают\nfunction* openReserveErrorSaga(\n action: IReserveActions.IConfirmOpenReserveError | IReserveActions.IRejectOpenReserveError,\n) {\n yield put(customErrorShackBar(action.error));\n}\n\nfunction* setActiveTableSuccessSaga(\n action: IReserveActions.ISetActiveTableSuccess | IReserveActions.IResetActiveTable,\n) {\n if (action.type === ReserveModalActionsTypes.SET_ACTIVE_TABLE_SUCCESS) {\n yield put(changeAppReserve(\n 'tables',\n Object.values(action.payload.activeTable),\n ));\n } else {\n yield put(changeAppReserve('tables', undefined));\n }\n}\n\nfunction* openReserveModalSaga() {\n const restaurant = yield select(currentRestaurantSelector);\n yield fork(fetchSections, (restaurant && restaurant.id) || 0);\n}\n\nexport default function* saga() {\n yield all([\n // takeLatest(INIT_END, fetchUnconfirmedReserves),\n\n takeLatest(RejectReserveActionTypes.REJECT_RESERVE_REQUEST, reserveRejectSaga),\n takeLatest(ReserveModalActionsTypes.UPDATE_RESERVE_REQUEST, editReserveSaga),\n takeLatest(ReserveModalActionsTypes.GET_FREE_TABLES_REQUEST, getFreeTablesSaga),\n takeLatest(ReserveModalActionsTypes.CREATE_RESERVE_REQUEST, createReserveSaga),\n takeLatest(ReserveModalActionsTypes.CONFIRM_RESERVE_REQUEST, confirmNewReserveSaga),\n takeLatest(ReserveModalActionsTypes.REJECT_NEW_RESERVE_REQUEST, rejectNewReserveSaga),\n\n // takeLatest(ReserveModalActionsTypes.OPEN_EDIT_RESERVE_MODAL, openEditReserveModalSaga),\n // takeLatest(ReserveModalActionsTypes.OPEN_CREATE_RESERVE_MODAL, openCreateReserveModalSaga),\n takeLatest(ReserveModalActionsTypes.OPEN_CONFIRM_RESERVE_MODAL, openNewReserveModalSaga),\n\n takeLatest([\n ReserveModalActionsTypes.OPEN_EDIT_RESERVE_MODAL,\n ReserveModalActionsTypes.OPEN_CREATE_RESERVE_MODAL,\n // ReserveModalActionsTypes.OPEN_CONFIRM_RESERVE_MODAL,\n ], openReserveModalSaga),\n\n // takeEvery([\n // ReserveModalActionsTypes.CLOSE_CONFIRM_RESERVE_MODAL,\n // ReserveModalActionsTypes.CLOSE_CREATE_RESERVE_MODAL,\n // ReserveModalActionsTypes.CREATE_RESERVE_SUCCESS,\n // ReserveModalActionsTypes.REJECT_NEW_RESERVE_SUCCESS,\n // ReserveModalActionsTypes.CONFIRM_RESERVE_SUCCESS,\n // ], closeReserveModalSaga),\n\n takeEvery([\n ReserveModalActionsTypes.OPEN_CREATE_RESERVE_MODAL,\n ReserveModalActionsTypes.OPEN_CONFIRM_RESERVE_MODAL,\n ReserveModalActionsTypes.OPEN_EDIT_RESERVE_MODAL,\n ], getMaxCapacitySaga),\n takeLatest(ReserveModalActionsTypes.SET_ACTIVE_TABLE_REQ, setActiveTableSaga),\n takeLatest(ReserveModalActionsTypes.MERGE_TABLES_REQ, mergeTablesSaga),\n\n takeLatest(INIT_END, fetchOpenReserves),\n\n takeEvery(ReserveModalActionsTypes.REMOVE_OPEN_RESERVE, removeOpenReserveSaga),\n takeEvery(ReserveModalActionsTypes.CONFIRM_OPEN_RESERVE, confirmOpenReserveSaga),\n takeEvery(ReserveModalActionsTypes.REJECT_OPEN_RESERVE, rejectOpenReserveSaga),\n\n takeLatest([\n ReserveModalActionsTypes.CONFIRM_OPEN_RESERVE_ERROR,\n ReserveModalActionsTypes.REJECT_OPEN_RESERVE_ERROR,\n ], openReserveErrorSaga),\n\n takeLatest([\n ReserveModalActionsTypes.CONFIRM_OPEN_RESERVE_SUCCESS,\n ReserveModalActionsTypes.REJECT_OPEN_RESERVE_SUCCESS,\n ], openReserveSuccessSaga),\n\n takeEvery([\n ReserveModalActionsTypes.SET_ACTIVE_TABLE_SUCCESS,\n ReserveModalActionsTypes.RESET_ACTIVE_TABLE,\n ], setActiveTableSuccessSaga),\n\n takeEvery(\n ReserveModalActionsTypes.UPDATE_RESERVE_SUCCESS,\n updateReserveSuccessSaga,\n ),\n\n takeEvery(\n ReserveModalActionsTypes.CONFIRM_RESERVE_SUCCESS,\n confirmReserveSuccessSaga,\n ),\n ]);\n}\n","import * as ActionTypes from './BookingActionsTypes';\nimport { TReserve, TSort, TFilterListItem } from '../../types/IBookingStore';\nimport { IBookingActions } from './IBookingActions';\n\n/** @description Инит страницы */\nexport function initBookingPages(): IBookingActions {\n return {\n type: ActionTypes.INIT_BOOKING_PAGE,\n };\n}\n\n/** @description Успешная инит страницы */\nexport function initBookingPagesSuccess(\n reserves: Array, filters: Array, onlyActive: boolean,\n): IBookingActions {\n return {\n type: ActionTypes.INIT_BOOKING_PAGE_SUCCESS,\n payload: {\n reserves,\n filters,\n onlyActive,\n },\n };\n}\n\n/** @description Обработка ошибки инита страницы */\nexport function initBookingPageError(\n filters: Array, onlyActive: boolean,\n): IBookingActions {\n return {\n type: ActionTypes.INIT_BOOKING_PAGE_ERROR,\n payload: {\n filters,\n onlyActive,\n },\n };\n}\n\n/** @description Экшен для получения списка броней */\nexport function getBookingList(restaurantId: number, date: string): IBookingActions {\n return {\n type: ActionTypes.GET_BOOKING_REQUEST,\n payload: {\n restaurantId,\n date,\n },\n };\n}\n\n/** @description Экшен на обработку успешного запроса на получение списка резервов */\nexport function getBookingSuccess(\n bookingList: Array,\n active: boolean,\n sort: TSort,\n date: string,\n): IBookingActions {\n return {\n type: ActionTypes.GET_BOOKING_SUCCESS,\n payload: {\n bookingList,\n active,\n sort,\n date,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки запроса на получение списка резервов */\nexport function getBookingError(date: string): IBookingActions {\n return {\n type: ActionTypes.GET_BOOKING_ERROR,\n error: 'Не удалось получить список резервов',\n payload: {\n date,\n },\n };\n}\n\n/** @description Экшен для переключения фильтра */\nexport function switchBookingFilter(active: boolean, resetFilters?: boolean): IBookingActions {\n return {\n type: ActionTypes.SWITCH_BOOKING_ACTIVE,\n payload: {\n active,\n resetFilters,\n },\n };\n}\n\n/** @description Экшен на сортировку списка */\nexport function sortBookingList(sort: TSort): IBookingActions {\n return {\n type: ActionTypes.SORT_BOOKING_LIST,\n payload: {\n sort,\n },\n };\n}\n\n/** @description Экшен для редактирования фильтров для списка броней */\nexport function filterBookingListBy(filters: Array): IBookingActions {\n return {\n type: ActionTypes.SET_FILTERS,\n payload: {\n filters,\n },\n };\n}\n","import _ from 'lodash';\n\nimport { emptyTime, reserveState } from '../config/constants';\nimport { TReserve } from '../types/IBookingStore';\nimport { getBookingStatus } from './dateHelpers';\nimport { ITable } from '../types/IRestaurantTablesStore';\nimport { TReserveFormCurrentData } from '../components/Reservations';\nimport { TConfirmReserveInfo } from '../containers/ReservationPageConfirmCont/IReserveConfirmPage';\n\n/** @description Парсинг номера стола\n * - если число добавляем \"Зал :\"\n * - если строка отображаем как есть\n */\nexport function parseTableHall(hall?: string): string {\n if (!hall) {\n return '';\n }\n\n return `${Number.isNaN(parseInt(hall)) ? hall : `Зал ${hall}`}`;\n}\n\n/** @description Парсинг объеденнёных столов */\nexport function parsingMergedTables(tables: Array | undefined) {\n if (tables === undefined || tables.length === 0) {\n return '-';\n }\n\n return tables\n .reduce(\n (s, t, i) => `${s} ${t.number}${i > tables.length || i < tables.length - 1 ? ',' : ''}`,\n `${tables[0].hall}: `,\n );\n}\n\n/** @description Проверка на завтра */\nexport function itsTomorrow(open: string, reserveTime: string): boolean {\n return parseInt(open) > parseInt(reserveTime);\n}\n\n/** @description Проверка что все необходимые поля заполнены */\nexport const validateReserveFields = ({\n date, persons, hours, time,\n}: TReserveFormCurrentData) => (\n date && date !== emptyTime\n && time && time !== emptyTime\n && persons\n && hours\n);\n\n/** @description Проверка что все необходимые поля заполнены для запроса на подтверждение */\nexport const validateConfirmReserveFields = ({\n date, duration, persons,\n}: TConfirmReserveInfo) => (\n date && date !== emptyTime\n && persons\n && duration\n);\n\n/** @description Парсинг списка резервов из респонса\n * - Выставляем статусы\n * - Назначаем резерву группу для фильтрации\n */\nexport function parseReserves(reserves: Array): Array {\n return reserves.map((reserve: TReserve) => {\n switch (reserve.state) {\n case reserveState.CANCELING:\n case reserveState.CANCELED: {\n const canceledBy = reserve.canceledBy || reserveState.UNKNOWN;\n return {\n ...reserve,\n state: `${canceledBy}_DECLINE`,\n group: 'declined',\n };\n }\n case reserveState.ACCEPTED: {\n return {\n ...reserve,\n state: getBookingStatus(reserve),\n group: 'accepted',\n };\n }\n case reserveState.DECLINED: {\n return {\n ...reserve,\n group: 'rejected',\n };\n }\n case reserveState.IN_PROGRESS: {\n return {\n ...reserve,\n group: 'open',\n };\n }\n case reserveState.CLOSED: {\n return {\n ...reserve,\n group: 'closed',\n };\n }\n case reserveState.ERROR:\n case reserveState.CREATED:\n case reserveState.SENT:\n case reserveState.PATCHING: {\n return {\n ...reserve,\n group: 'service',\n };\n }\n default: {\n return reserve;\n }\n }\n });\n}\n\n/**\n * @description Сравнение списка столов\n * @param a\n * @param b\n */\nexport function compareTables(a: ITable[], b?: ITable[]): boolean {\n if (!a || !b) {\n return false;\n }\n\n const f = a.map(t => t.id).filter((f, s) => f > s);\n const s = b.map(t => t.id).filter((f, s) => f > s);\n\n return _.isEqual(f, s);\n}\n","import {\n all, takeEvery, put, select,\n} from 'redux-saga/effects';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport * as BookingActionsTypes from '../actions/booking/BookingActionsTypes';\nimport * as ReserveRejectActionsTypes from '../actions/reserveReject/RejectReserveActionsTypes';\nimport * as ReserveModalActionTypes from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport { getAllBookingsByRestaurantId } from '../api';\nimport { localStorageItems } from '../config/constants';\nimport {\n SOCKET_RESERVE_CONFIRMATION,\n SOCKET_RESERVE_CREATED,\n} from '../actions/webSocketService/WebSocketActionsTypes';\nimport { TFilterListItem, TReserve, TSort } from '../types/IBookingStore';\nimport {\n getBookingError,\n getBookingSuccess, initBookingPagesSuccess,\n switchBookingFilter,\n initBookingPageError,\n} from '../actions/booking/BookingActions';\nimport { IFilterBookingListBy } from '../actions/booking/IBookingActions';\nimport { TRestaurant } from '../types/ICabinetStore';\nimport { parseReserves } from '../helpers/bookingHelpers';\n\n/** @description Сага для инита страницы резервов */\nfunction* initBookingPageSaga() {\n const storageFilters = localStorage.getItem(localStorageItems.filters);\n const restaurant: TRestaurant = yield select(state => state.cabinet.currentRestaurant);\n\n const { sort, currentStatisticDate, filters }: {\n sort: TSort;\n currentStatisticDate: string;\n filters: Array;\n } = yield select(state => state.booking);\n\n const newFilters: Array = storageFilters ? JSON.parse(storageFilters) : filters;\n const onlyActive = storageFilters\n ? _.findIndex(newFilters, { value: 'accepted', active: true }) > -1\n : true;\n\n try {\n const bookingList: Array = restaurant\n ? yield getAllBookingsByRestaurantId(\n restaurant.id,\n moment(currentStatisticDate).startOf('day'),\n moment(currentStatisticDate).endOf('day'),\n sort,\n onlyActive,\n )\n .then(r => parseReserves(r.data))\n : [];\n\n yield put(initBookingPagesSuccess(bookingList, newFilters, onlyActive));\n } catch (e) {\n yield put(getBookingError(currentStatisticDate));\n yield put(initBookingPageError(newFilters, onlyActive));\n }\n}\n\n/** @description Получение списка резервов для выбранного ресторана */\nfunction* getAllBookingsSaga(action: any) {\n let date: string;\n let active: boolean;\n let sort: TSort;\n\n // в случае если нет action.payload.date то запрашиваем currentStatisticDate\n const currentDate = yield select(state => state.booking.currentStatisticDate);\n const restaurant = yield select(state => state.cabinet.currentRestaurant);\n\n if (restaurant) {\n const restaurantId = restaurant.id;\n\n if (action.type === BookingActionsTypes.SWITCH_BOOKING_ACTIVE) {\n active = action.payload.active;\n } else {\n active = yield select(state => state.booking.onlyActive);\n }\n\n if (action.type === BookingActionsTypes.SORT_BOOKING_LIST) {\n sort = action.payload.sort;\n } else {\n sort = yield select(state => state.booking.sort);\n }\n\n // TODO отрефакторить проверку, просмотреть все места откуда может прилетать пустой payload\n if (_.isUndefined(action.payload) || _.isNull(action.payload)) {\n date = currentDate;\n } else {\n date = action.payload.date;\n if (_.isUndefined(date) || _.isNull(date)) {\n date = currentDate;\n }\n }\n\n try {\n const dateFrom = moment(date).startOf('day');\n const dateTo = moment(date).endOf('day');\n\n const bookingList: Array = yield getAllBookingsByRestaurantId(\n restaurantId,\n dateFrom,\n dateTo,\n sort,\n active,\n ).then(r => parseReserves(r.data));\n\n yield put(getBookingSuccess(bookingList, active, sort, date));\n } catch (e) {\n yield put(getBookingError(date));\n }\n }\n}\n\n/** @description Сага для манипуляций с переключателем \"Только активные\" */\nfunction* setFiltersSaga(action: IFilterBookingListBy) {\n const activeFilters = action.payload.filters.filter(i => i.active);\n const isOnlyActive = activeFilters.length === 1 && activeFilters[0].value === 'accepted';\n\n if (isOnlyActive) {\n yield put(switchBookingFilter(true));\n } else {\n yield put(switchBookingFilter(false));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeEvery([\n SOCKET_RESERVE_CREATED,\n SOCKET_RESERVE_CONFIRMATION,\n ReserveModalActionTypes.CREATE_RESERVE_SUCCESS,\n ReserveRejectActionsTypes.REJECT_RESERVE_SUCCESS,\n BookingActionsTypes.GET_BOOKING_REQUEST,\n BookingActionsTypes.SWITCH_BOOKING_ACTIVE,\n BookingActionsTypes.SORT_BOOKING_LIST,\n ], getAllBookingsSaga),\n takeEvery(BookingActionsTypes.SET_FILTERS, setFiltersSaga),\n takeEvery(BookingActionsTypes.INIT_BOOKING_PAGE, initBookingPageSaga),\n ]);\n}\n","import * as ActionTypes from './RestaurantsTablesTypes';\nimport { IRestaurantsTablesActions } from './IRestaurantsTablesActions';\nimport { ITable } from '../../types/IRestaurantTablesStore';\n\n/** @description Экшен на получение списка столов у выбранного ресторана */\nexport function getTablesForSettings(restaurantId: number): IRestaurantsTablesActions {\n return {\n type: ActionTypes.GET_ALL_TABLE_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного получения списка столов */\nexport function getTablesForSettingsSuccess(tableList: Array): IRestaurantsTablesActions {\n return {\n type: ActionTypes.GET_ALL_TABLE_SUCCESS,\n payload: {\n tableList,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки получения списка столов */\nexport function getTablesForSettingsError() {\n return {\n type: ActionTypes.GET_ALL_TABLE_ERROR,\n error: 'Не удалось получить список столов',\n };\n}\n\n/** @description Экшен для редактирования выбранного стола */\nexport function updateRestaurantTable(table: ITable | Array): IRestaurantsTablesActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_TABLE_REQUEST,\n payload: {\n table,\n },\n };\n}\n\n/** @description Экшен для редактирования выбранного стола */\nexport function updateRestaurantTableSuccess(message: string): IRestaurantsTablesActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_TABLE_SUCCESS,\n message,\n };\n}\n\n/** @description Экшен для обработки ошибки редактирования выбранного стола */\nexport function updateRestaurantTableError(): IRestaurantsTablesActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_TABLE_ERROR,\n error: 'Не удалось отредактировать параметры стола',\n };\n}\n","import {\n put, all, takeLatest, select,\n} from 'redux-saga/effects';\nimport _ from 'lodash';\n\nimport {\n getAllTableForRestaurantReq,\n updateTableReq,\n} from '../api';\nimport * as ActionTypes from '../actions/restaurantsTables/RestaurantsTablesTypes';\nimport * as ICardSettingsActions from '../actions/restaurantsTables/IRestaurantsTablesActions';\nimport {\n getTablesForSettingsSuccess,\n getTablesForSettings,\n updateRestaurantTableSuccess,\n updateRestaurantTableError,\n getTablesForSettingsError,\n} from '../actions/restaurantsTables/RestaurantsTables';\n\n/** @description Получение всех столов для выбранного ресторана */\nfunction* getAllTablesSaga(action: ICardSettingsActions.IGetAllTables) {\n try {\n const { restaurantId } = action.payload;\n\n const tableList = yield getAllTableForRestaurantReq(restaurantId).then(r => r.data);\n const sortTableList = _.sortBy(tableList, ['hall', i => parseInt(i.number)]);\n\n yield put(getTablesForSettingsSuccess(sortTableList));\n } catch (e) {\n yield put(getTablesForSettingsError());\n }\n}\n\n/** @description Сага для редактирование стола */\nfunction* updateRestaurantTableSaga(action: ICardSettingsActions.IUpdateRestaurantTable) {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n\n try {\n const { table } = action.payload;\n yield updateTableReq(restaurantId, Array.isArray(table) ? table : [table]);\n\n yield put(updateRestaurantTableSuccess(\n Array.isArray(table) ? 'Столы отредактированы' : 'Стол отредактирован',\n ));\n\n yield put(getTablesForSettings(restaurantId));\n } catch (e) {\n yield put(updateRestaurantTableError());\n yield put(getTablesForSettings(restaurantId));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.UPDATE_RESTAURANT_TABLE_REQUEST, updateRestaurantTableSaga),\n takeLatest(ActionTypes.GET_ALL_TABLE_REQUEST, getAllTablesSaga),\n ]);\n}\n","import * as _ from 'lodash';\n\nimport * as ActionTypes from './CabinetActionsTypes';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IRestaurantAddress, TRestaurant, TRestaurantPlugin } from '../../types/ICabinetStore';\nimport { IDate } from '../../types/IDate';\n\n/** @description Инит проложения */\nexport function initStarting(): IAppActions {\n return {\n type: ActionTypes.INIT_START,\n };\n}\n\n/** @description Окончание инита */\nexport function initFinished(): IAppActions {\n return {\n type: ActionTypes.INIT_END,\n };\n}\n\n/** @description Экшен на получение списка ресторанов */\nexport function getRestaurantList(): IAppActions {\n return {\n type: ActionTypes.GET_RESTAURANT_LIST_REQUEST,\n };\n}\n\n/** @description Экшен для обработки получения списка ресторанов */\nexport function getRestaurantListSuccess(restaurantList: Array): IAppActions {\n return {\n type: ActionTypes.GET_RESTAURANT_LIST_SUCCESS,\n payload: restaurantList,\n };\n}\n\n/** @description Экшен для обработки ошибки при получение списка ресторанов */\nexport function getRestaurantError(error: string): IAppActions {\n return {\n type: ActionTypes.GET_RESTAURANT_LIST_ERROR,\n error,\n };\n}\n\nexport function addRestaurant(payload: {\n address: IRestaurantAddress;\n name: string;\n}): IAppActions {\n return {\n type: ActionTypes.CREATE_RESTAURANT_REQUEST,\n payload,\n };\n}\n\n/** @description Экшен успешного создания нового ресторана */\nexport function addRestaurantSuccess(): IAppActions {\n return {\n type: ActionTypes.CREATE_RESTAURANT_SUCCESS,\n message: 'Ресторан добавлен в систему',\n };\n}\n\nexport function resetRestaurantSuccessStatus(): IAppActions {\n return {\n type: ActionTypes.CREATE_RESTAURANT_RESET_SUCCESS_STATUS,\n };\n}\n\n/** @description Экшен для обработки ошибки при создании нового ресторана */\nexport function addRestaurantError(): IAppActions {\n return {\n type: ActionTypes.CREATE_RESTAURANT_ERROR,\n error: 'Не удалось добавить ресторан в систему',\n };\n}\n\n/** @description Экшен для обработки создания нового ресторана */\nexport function updateRestaurantList(restaurant: TRestaurant): IAppActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_LIST,\n payload: restaurant,\n };\n}\n\n/** @description Экшен Выбор актвиного ресторана */\nexport function setCurrentRestaurant(restaurantId: number): IAppActions {\n return {\n type: ActionTypes.SET_CURRENT_RESTAURANT,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен на открытие окна регистрации ресторана */\nexport function openCreateModal(): IAppActions {\n return {\n type: ActionTypes.OPEN_MODAL,\n };\n}\n\n/** @description Экшен на закрывает окна регистрации ресторана */\nexport function closeCreateModal(): IAppActions {\n return {\n type: ActionTypes.CLOSE_MODAL,\n };\n}\n\n/** @description Экшен на переключение видимости модального окна авторизации в iiko ./components/Common/AuthIikoModal */\nexport function switchAuthIikoModal(): IAppActions {\n return {\n type: ActionTypes.SWITCH_IIKO_MODAL,\n };\n}\n\n/** @description Экшен для проверки статуса \"Подключение к системе автоматизации\" */\nexport function getCashBoxConnectStatus(restaurantId: number): IAppActions {\n return {\n type: ActionTypes.CASHBOX_CONNECT_STATUS_REQUEST,\n payload: { restaurantId },\n };\n}\n\n/** @description Экшен для обработки успешного запроса */\nexport function getCashBoxConnectStatusSuccess(active?: boolean): IAppActions {\n if (!_.isUndefined(active) && !_.isNull(active)) {\n return {\n type: ActionTypes.CASHBOX_CONNECT_STATUS_SUCCESS,\n payload: {\n active,\n },\n };\n }\n\n return {\n type: ActionTypes.CASHBOX_CONNECT_STATUS_SUCCESS,\n payload: {},\n };\n}\n\n/** @description Экшен для обработки ошибки запроса */\nexport function getCashBoxConnectStatusError(): IAppActions {\n return {\n type: ActionTypes.CASHBOX_CONNECT_STATUS_ERROR,\n };\n}\n\n/** @description Экшен для проверки статуса плагинов кассы */\nexport function getCashBoxPluginsStatus(restaurantId?: number): IAppActions {\n return {\n type: ActionTypes.CASHBOX_PLUGIN_STATUS_REQUEST,\n payload: { restaurantId },\n };\n}\n\n/** @description Экшен для обработки успешного запроса */\nexport function getCashBoxPluginsStatusSuccess(payload: TRestaurantPlugin[]): IAppActions {\n return {\n type: ActionTypes.CASHBOX_PLUGIN_STATUS_SUCCESS,\n payload,\n };\n}\n\n/** @description Экшен для обработки ошибки запроса */\nexport function getCashBoxPluginsStatusError(): IAppActions {\n return {\n type: ActionTypes.CASHBOX_PLUGIN_STATUS_ERROR,\n };\n}\n\n/** @description Экшен не показывает панель warning для ресторана */\nexport function showWarning(): IAppActions {\n return {\n type: ActionTypes.SHOW_WARNING,\n };\n}\n\n/** @description Экшен на закрывает панель warning для ресторана */\nexport function hideWarning(): IAppActions {\n return {\n type: ActionTypes.HIDE_WARNING,\n };\n}\n\n/** @description Экшен для проверки статуса ресторана в Iiko */\nexport function checkRestaurantFromIiko(restaurantId: number): IAppActions {\n return {\n type: ActionTypes.CHECK_RESTAURANT_FROM_IIKO_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен для установки флага \"Нужна авторизация в иико\" */\nexport function needAuthFromIiko(): IAppActions {\n return {\n type: ActionTypes.NEED_AUTH_FROM_IIKO,\n };\n}\n\n/** @description Экшен для изменения состояния диалогового окна для выбора дат */\nexport function switchCustomDateModal(): IAppActions {\n return {\n type: ActionTypes.SWITCH_CUSTOM_DATE_MODAL,\n };\n}\n\n/** @description Экшен для изменения дат в своем диапозоне */\nexport function changeCustomDate(date: IDate): IAppActions {\n return {\n type: ActionTypes.CHANGE_CUSTOM_DATE,\n payload: date,\n };\n}\n\n/** @description Экшен для переключения аудио нотификаций для приёма резервов */\nexport function switchAudioNotification() {\n return {\n type: ActionTypes.SWITCH_AUDIO_NOTIFICATION,\n };\n}\n","import * as ActionTypes from './SchedulesActionTypes';\nimport { IAppActions } from '../../types/IAppActions';\nimport {\n IScheduleGroup,\n IScheduleRow,\n TWeekDay,\n TScheduleFieldType, TForceUpdate, TForceDelete,\n} from '../../types/IScheduleStore';\n\n/** @description Экшен на получение расписания ресторана */\nexport function getScheduleList(restaurantId?: number): IAppActions {\n return {\n type: ActionTypes.GET_SCHEDULE_LIST_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен на обработку успешного получения расписания ресторана */\nexport function getScheduleListSuccess(schedule: {\n restaurantSchedules: Array,\n restaurantRows: Array,\n bookingSchedules: Array,\n bookingRows: Array,\n}): IAppActions {\n return {\n type: ActionTypes.GET_SCHEDULE_LIST_SUCCESS,\n payload: schedule,\n };\n}\n\n/** @description Экшен на обработку ошибки при получения расписания ресторана */\nexport function getScheduleListError(): IAppActions {\n return {\n type: ActionTypes.GET_SCHEDULE_LIST_ERROR,\n error: 'Не удалось загрузить расписание ресторана',\n };\n}\n\n/** @description Экшен для обновления списка дней для графика работы ресторана */\nexport function updateFreeDays(days: {\n activate: Array,\n deactivate: Array\n}, field: TScheduleFieldType): IAppActions {\n return {\n type: ActionTypes.UPDATE_FREE_DAYS,\n payload: {\n days,\n field,\n },\n };\n}\n\n/** @description Экшен на добавление нового, пустого, поля в список расписания */\nexport function addNewScheduleRow(field: TScheduleFieldType): IAppActions {\n return {\n type: ActionTypes.ADD_SCHEDULE_ROW,\n payload: {\n field,\n },\n };\n}\n\n/** @description Экшен на редактирование расписания выбранного ресторана */\nexport function updateSchedule(row: IScheduleRow, field: TScheduleFieldType): IAppActions {\n return {\n type: ActionTypes.UPDATE_SCHEDULE_REQUEST,\n payload: {\n row,\n field,\n },\n };\n}\n\n/** @description Экшен для обработки успешного редактирования расписания */\nexport function updateScheduleSuccess(\n field: TScheduleFieldType, row: IScheduleRow, schedules: Array,\n): IAppActions {\n return {\n type: ActionTypes.UPDATE_SCHEDULE_SUCCESS,\n payload: {\n field,\n row,\n schedules,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при редактировании расписания */\nexport function updateScheduleError(\n error?: string, rowId?: number, field?: TScheduleFieldType,\n): IAppActions {\n return {\n type: ActionTypes.UPDATE_SCHEDULE_ERROR,\n error: error || 'Не удалось обновить расписание',\n payload: {\n rowId,\n field,\n },\n };\n}\n\n/** @description Экшен на удаление выбранного периода и всех дней в нём */\nexport function deleteScheduleRow(row: IScheduleRow, field: TScheduleFieldType): IAppActions {\n return {\n type: ActionTypes.DELETE_SCHEDULE_ROW_REQUEST,\n payload: {\n row,\n field,\n },\n };\n}\n\n/** @description Экшен на обработку успешного удаления строки расписания */\nexport function deleteScheduleRowSuccess(row: IScheduleRow, field: TScheduleFieldType): IAppActions {\n return {\n type: ActionTypes.DELETE_SCHEDULE_ROW_SUCCESS,\n payload: {\n row,\n field,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки при удаления строки расписания */\nexport function deleteScheduleRowError(): IAppActions {\n return {\n type: ActionTypes.DELETE_SCHEDULE_ROW_ERROR,\n error: 'Не удалось удалить расписание',\n };\n}\n\n/** @description Экшен для актуализации расписания автобронирования во время редактирования графика работы ресторана */\nexport function forceUpdateBookingSchedule(payload: TForceUpdate | TForceDelete): IAppActions {\n return {\n type: ActionTypes.FORCE_UPDATE_BOOKING_SCHEDULE,\n payload,\n };\n}\n\n/** @description Экшен для удаления рсписания автоброниварования во время редактирования графика работы */\nexport function forceDeleteBookingSchedule(days: Array) {\n return {\n type: ActionTypes.FORCE_DELETE_BOOKING_SCHEDULE,\n payload: {\n days,\n },\n };\n}\n","import { createSelector } from 'reselect';\nimport { some } from 'lodash';\nimport { IAppStore } from '../../types/IAppStore';\nimport { TRestaurantPlugin } from '../../types/ICabinetStore';\n\nexport const cashBoxPlugins = (state: IAppStore) => state.cabinet.cashBoxPlugins;\n\ntype VersionType = \"subVersion\" | \"version\";\n\nconst isUpdateRequired = (property: VersionType) => (plugin: TRestaurantPlugin | void) => {\n const data = plugin || {\n [property]: {\n actual: true,\n },\n };\n return data[property] ? !(data[property] || {}).actual : false;\n};\n\n/**\n * @description Вернёт true если хотябы один плагин не актуален\n * @param property\n */\nconst isSomePluginUpdateRequired = (property: VersionType) => (plugins: R[] | void) => some(plugins || [], isUpdateRequired(property));\n\n/** @description Отображение панели Warning в зависимости от статуса дочернего плагина */\nexport const isSubVersionUpdateRequired = createSelector([\n cashBoxPlugins,\n], isSomePluginUpdateRequired('subVersion'));\n\n/** @description Отображение панели Warning в зависимости от статуса плагина */\nexport const isVersionUpdateRequired = createSelector([\n cashBoxPlugins,\n], isSomePluginUpdateRequired('version'));\n\nexport const isCashBoxUpdateRequired = createSelector([\n isVersionUpdateRequired,\n isSubVersionUpdateRequired,\n], (isVersionUpdateRequired,\n isSubVersionUpdateRequired) => isVersionUpdateRequired || isSubVersionUpdateRequired);\n","import { createSelector } from 'reselect';\nimport { useSelector } from 'react-redux';\nimport { IAppStore } from '../types/IAppStore';\n\nexport const selectorRestaurant = createSelector(\n [(store: IAppStore) => store],\n store => store.cabinet.currentRestaurant,\n);\n\nexport const selectorRestaurantId = createSelector(\n [selectorRestaurant],\n restaurant => restaurant && restaurant.id,\n);\n\nexport function useRestaurantId() {\n return useSelector(selectorRestaurantId);\n}\n","import _ from 'lodash';\nimport {\n put, all, select, takeEvery, takeLatest, call,\n} from 'redux-saga/effects';\nimport * as Sentry from '@sentry/browser';\n\nimport {\n cashBoxConnectStatusReq,\n checkRestaurantFromIikoReq,\n createRestaurantReq,\n getAllRestaurantReq,\n getRestaurantPluginsInfoReq,\n} from '../api';\nimport {\n setCurrentRestaurant,\n getRestaurantError,\n getRestaurantListSuccess,\n checkRestaurantFromIiko,\n updateRestaurantList,\n addRestaurantError,\n needAuthFromIiko,\n getCashBoxConnectStatusSuccess,\n getCashBoxConnectStatusError,\n getCashBoxPluginsStatusSuccess,\n getCashBoxPluginsStatusError,\n addRestaurantSuccess,\n initFinished,\n getCashBoxPluginsStatus,\n getCashBoxConnectStatus,\n showWarning,\n hideWarning,\n} from '../actions/cabinet/CabinetActions';\nimport {\n UPDATE_RESTAURANT_INFO_SUCCESS,\n} from '../actions/restaurantsInfo/RestaurantsInfoActionsTypes';\nimport { DELETE_RESTAURANT_SUCCESS } from '../actions/restaurant/RestaurantsActionTypes';\nimport {\n CONNECT_RESTAURANT_SUCCESS,\n SELECT_ORGANIZATION_SUCCESS,\n} from '../actions/home/HomeActionTypes';\nimport {\n CHECK_RESTAURANT_FROM_IIKO_REQUEST,\n GET_RESTAURANT_LIST_REQUEST,\n CREATE_RESTAURANT_REQUEST,\n CASHBOX_CONNECT_STATUS_REQUEST,\n CASHBOX_PLUGIN_STATUS_REQUEST,\n SET_CURRENT_RESTAURANT,\n INIT_START,\n GET_RESTAURANT_LIST_SUCCESS,\n} from '../actions/cabinet/CabinetActionsTypes';\nimport { TRestaurant } from '../types/ICabinetStore';\nimport {\n IGetCashBoxPluginsStatus,\n} from '../actions/cabinet/ICabinetActions';\nimport { getScheduleList } from '../actions/schedules/SchedulesAction';\nimport {\n isCashBoxUpdateRequired,\n} from '../containers/CashBoxWarning/selectors';\nimport {selectorRestaurantId} from \"../selectors/RestaurantSelectors\";\n\n/** @description Инициилазиция личного кабинета, собираем все данные нужные для работы */\nfunction* initCabinetSaga() {\n try {\n Notification.requestPermission(result => result);\n } catch (e) {\n console.error('request notification error');\n }\n\n try {\n const { content }: { content: Array } = yield call(getAllRestaurantReq);\n\n if (content.length > 0) {\n // const restaurantId = content[0].id;\n\n yield put(getRestaurantListSuccess(content));\n yield put(getScheduleList());\n\n\n // Убрали в рамках задачи DEV-244\n // yield put(checkRestaurantFromIiko(restaurantId));\n\n // Убираю, так как проверка идет при получении списка ресторанов и выбора ресторана по умолчанию\n // yield put(getCashBoxPluginsStatus(restaurantId));\n // yield put(getCashBoxConnectStatus(restaurantId));\n }\n } catch (error) {\n yield put(getRestaurantError(error));\n }\n\n yield put(initFinished());\n}\n\n/** @description Сага для получение списка всех доступных ресторанов для юзера */\nfunction* getRestaurantListSaga() {\n try {\n const { content }: { content: Array } = yield call(getAllRestaurantReq);\n yield put(getRestaurantListSuccess(content));\n } catch (error) {\n yield put(getRestaurantError(error));\n }\n}\n\nfunction* setSentryContext() {\n const restaurant = yield select(state => state.cabinet.currentRestaurant);\n\n if (restaurant) {\n const { id, name } = restaurant;\n\n Sentry.setContext('restaurant', {\n id,\n name,\n });\n } else {\n Sentry.setContext('restaurant', null);\n }\n}\n\n/** @description Сага для добавления нового ресторана */\nfunction* addRestaurantSaga(action: any) {\n try {\n const restaurantData = action.payload;\n const response = yield call(createRestaurantReq, restaurantData);\n yield put(addRestaurantSuccess());\n yield put(updateRestaurantList(response.data));\n yield put(setCurrentRestaurant(response.data.id));\n yield put(checkRestaurantFromIiko(response.data.id));\n } catch (e) {\n yield put(addRestaurantError());\n }\n}\n\n/**\n * @description Сага для проверки привязки ресторана к иико.\n * Если ответ не 200 - считаем что ресторан не привязан и требуется авторизация/привязка\n */\nfunction* checkRestaurantFromIikoSaga(action: any) {\n try {\n const restaurantList = yield select(state => state.cabinet.restaurantList);\n const restaurantInfo = _.find(restaurantList, { id: action.payload.restaurantId }).settings;\n\n const response = yield call(checkRestaurantFromIikoReq, action.payload.restaurantId);\n if (response.status !== 200 || !restaurantInfo.iikoOrganizationId) {\n yield put(needAuthFromIiko());\n }\n } catch (e) {\n yield put(needAuthFromIiko());\n }\n}\n\n/** @description Сага для запроса статуса кассы */\nfunction* getCashBoxConnectStatusSaga(action: any) {\n let restaurantId = yield select(selectorRestaurantId);\n\n if (action.type === CASHBOX_CONNECT_STATUS_REQUEST && action.payload.restaurantId) {\n restaurantId = action.payload.restaurantId;\n }\n\n try {\n const cashBoxStatus = yield call(cashBoxConnectStatusReq, restaurantId);\n yield put(getCashBoxConnectStatusSuccess(cashBoxStatus.active));\n } catch (e) {\n // 404 - касса не настроена, показываем виджет что нужно настроить кассу Шаг.2\n if (e.response.status === 404) {\n yield put(getCashBoxConnectStatusSuccess());\n } else yield put(getCashBoxConnectStatusError());\n }\n}\n\n/** @description Сага для запроса статуса плагинов кассы */\nfunction* getCashBoxPluginsStatusSaga(action: IGetCashBoxPluginsStatus) {\n let restaurantId = yield select(selectorRestaurantId);\n\n if (action.type === CASHBOX_PLUGIN_STATUS_REQUEST && action.payload.restaurantId) {\n restaurantId = action.payload.restaurantId;\n }\n\n try {\n const info = yield getRestaurantPluginsInfoReq(restaurantId);\n yield put(getCashBoxPluginsStatusSuccess(info));\n if (yield select(isCashBoxUpdateRequired)) yield put(showWarning());\n } catch (e) {\n yield put(getCashBoxPluginsStatusError());\n yield put(hideWarning());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeEvery(INIT_START, initCabinetSaga),\n takeEvery([\n GET_RESTAURANT_LIST_REQUEST,\n DELETE_RESTAURANT_SUCCESS,\n SELECT_ORGANIZATION_SUCCESS,\n CONNECT_RESTAURANT_SUCCESS,\n UPDATE_RESTAURANT_INFO_SUCCESS,\n ], getRestaurantListSaga),\n takeLatest(CREATE_RESTAURANT_REQUEST, addRestaurantSaga),\n takeLatest(CHECK_RESTAURANT_FROM_IIKO_REQUEST, checkRestaurantFromIikoSaga),\n\n takeLatest(\n [\n CASHBOX_CONNECT_STATUS_REQUEST,\n SET_CURRENT_RESTAURANT,\n GET_RESTAURANT_LIST_SUCCESS,\n ],\n getCashBoxConnectStatusSaga,\n ),\n\n takeLatest(\n [\n CASHBOX_PLUGIN_STATUS_REQUEST,\n SET_CURRENT_RESTAURANT,\n GET_RESTAURANT_LIST_SUCCESS,\n ],\n getCashBoxPluginsStatusSaga,\n ),\n\n takeLatest([\n GET_RESTAURANT_LIST_SUCCESS,\n SET_CURRENT_RESTAURANT,\n ], setSentryContext),\n ]);\n}\n","import * as ActionsTypes from './HomeActionTypes';\nimport { IHomeActions } from './IHomeActions';\nimport { IDate } from '../../types/IDate';\n\n/** @description Экшен на получение пинкода */\nexport function getRestaurantPinCode(restaurantId: number): IHomeActions {\n return {\n type: ActionsTypes.GET_RESTAURANT_PIN_CODE_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен на успешного получения пинкода */\nexport function getRestaurantPinCodeSuccess(pinCode: string, timeLeft: number): IHomeActions {\n return {\n type: ActionsTypes.GET_RESTAURANT_PIN_CODE_SUCCESS,\n payload: {\n pinCode,\n timeLeft,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при получении пинкода */\nexport function getRestaurantPinCodeError(error: string): IHomeActions {\n return {\n type: ActionsTypes.GET_RESTAURANT_PIN_CODE_ERROR,\n error,\n };\n}\n\n/** @description Экшен оповещения что ресторан подключен успешно */\nexport function connectRestaurantSuccess(): IHomeActions {\n return {\n type: ActionsTypes.CONNECT_RESTAURANT_SUCCESS,\n message: 'Ресторан успешно подключен',\n };\n}\n\n/** @description Сброс коннект статуса */\nexport function resetConnectStatus(): IHomeActions {\n return {\n type: ActionsTypes.RESET_CONNECT_STATUS,\n };\n}\n\n/** @description Экшен для отправки запроса для того что бы открыть модальное окно с пинкодом */\nexport function switchPinCodeModal(): IHomeActions {\n return {\n type: ActionsTypes.SWITCH_PIN_CODE_MODAL,\n };\n}\n\n/** @description Открытие модального окна для получения пинкода */\nexport function openPinCodeModal(): IHomeActions {\n return {\n type: ActionsTypes.OPEN_PIN_CODE_MODAL_STATE,\n };\n}\n\n/** @description Закрытие модального окна для получения пинкода */\nexport function closePinCodeModal(): IHomeActions {\n return {\n type: ActionsTypes.CLOSE_PIN_CODE_MODAL_STATE,\n };\n}\n\n/** @description Экшен на переключение приема резервов на стороне ресторана/кассы */\nexport function switchBookingProcessor(\n {\n restaurantId,\n processorType,\n }: {\n restaurantId: number;\n processorType: string\n },\n): IHomeActions {\n return {\n type: ActionsTypes.SWITCH_RESERVE_PROCESSOR_REQUEST,\n payload: {\n restaurantId,\n processorType,\n },\n };\n}\n\n/** @description Экшен обработку переключения приема резервов на стороне ресторана/кассы */\nexport function switchBookingProcessorSuccess(): IHomeActions {\n return {\n type: ActionsTypes.SWITCH_RESERVE_PROCESSOR_SUCCESS,\n };\n}\n\n/** @description Экшен обработку ошибки переключения приема резервов на стороне ресторана/кассы */\nexport function switchBookingProcessorError(): IHomeActions {\n return {\n type: ActionsTypes.SWITCH_RESERVE_PROCESSOR_ERROR,\n error: 'Не удалось изменить место для приёма резервов',\n };\n}\n\n/** @description Экшен для авторизации в системе IIKO */\nexport function authFromIiko(authData: {login: string; password: string}, restaurantId: number): IHomeActions {\n return {\n type: ActionsTypes.AUTH_FORM_IIKO_REQUEST,\n payload: {\n authData,\n restaurantId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного авторизации в IIKO */\nexport function authFromIikoSuccess(organizationList: Array): IHomeActions {\n return {\n type: ActionsTypes.AUTH_FORM_IIKO_SUCCESS,\n message: 'Авторизация в сервисе iiko',\n payload: organizationList,\n };\n}\n\n/** @description Экшен для обработки ошибки авторизации в IIKO */\nexport function authFromIikoError(): IHomeActions {\n return {\n type: ActionsTypes.AUTH_FORM_IIKO_ERROR,\n error: 'Некорректные данные пользователя. Возможно, неправильно введен Логин или Пароль. Проверьте данные и повторите попытку. Для регистрации на портале перейдите на сайт http://iiko.biz/',\n };\n}\n\n/** @description Экшен для обработки ошибки получения списка организаций при авторизации в IIKO */\nexport function getOrganizationError(): IHomeActions {\n return {\n type: ActionsTypes.GET_ORGANIZATION_LIST_FORM_IIKO_ERROR,\n error: 'Не удалось получить список организаций в сервисе iiko',\n };\n}\n\n/** @description Экшен для добавления выбранной организаци */\nexport function selectOrganization(restaurantId: number, organizationId: string): IHomeActions {\n return {\n type: ActionsTypes.SELECT_ORGANIZATION_REQUEST,\n payload: {\n restaurantId,\n organizationId,\n },\n };\n}\n\n/** @description Экшен для обработки выбора организации */\nexport function selectOrganizationSuccess(): IHomeActions {\n return {\n type: ActionsTypes.SELECT_ORGANIZATION_SUCCESS,\n message: 'Выбранная организация успешно добавлена',\n };\n}\n\n/** @description Экшен для обработки ошибки выбора организации */\nexport function selectOrganizationError(): IHomeActions {\n return {\n type: ActionsTypes.SELECT_ORGANIZATION_ERROR,\n error: 'Не удалось добавить организацию',\n };\n}\n\n/** @description Экшен для получение статистики ресторана */\nexport function getRestaurantStatistics(id: number, date?: IDate): IHomeActions {\n return {\n type: ActionsTypes.GET_STATISTIC_REQUEST,\n payload: {\n id,\n date,\n },\n };\n}\n\n/** @description Экшен для успешного получения статистики ресторана */\nexport function getRestaurantStatisticsSuccess(statistic: any): IHomeActions {\n return {\n type: ActionsTypes.GET_STATISTIC_SUCCESS,\n payload: statistic,\n };\n}\n\n/** @description Экшен для обработки ошибки при получение статистики ресторана */\nexport function getRestaurantStatisticsError(): IHomeActions {\n return {\n type: ActionsTypes.GET_STATISTIC_ERROR,\n };\n}\n\n/** @description Экшен для получения данных загруженности ресторана */\nexport function getRestaurantAttendances(id: number, date?: IDate): IHomeActions {\n return {\n type: ActionsTypes.GET_ATTENDANCE_REQUEST,\n payload: {\n id,\n date,\n },\n };\n}\n\n/** @description Экшен для обработки получения данных загруженности ресторана */\nexport function getRestaurantAttendancesSuccess(attendance: any): IHomeActions {\n return {\n type: ActionsTypes.GET_ATTENDANCE_SUCCESS,\n payload: attendance,\n };\n}\n\n/** @description Экшен для обработки ошибки при получение данных загруженности ресторана */\nexport function getRestaurantAttendancesError(): IHomeActions {\n return {\n type: ActionsTypes.GET_ATTENDANCE_ERROR,\n };\n}\n","import {\n takeLatest, put, select, all,\n} from 'redux-saga/effects';\nimport moment from 'moment';\nimport _ from 'lodash';\n\nimport * as HomeActionTypes from '../actions/home/HomeActionTypes';\nimport {\n authIikoReq,\n getRestaurantPinCodeReg,\n getRestaurantStatistic,\n switchBookingProcessorReq,\n selectOrganizationReq,\n getRestaurantAttendance, getOrganizationFromIiko,\n} from '../api';\nimport { dashBoardDates } from '../config/constants';\nimport {\n getPeriod,\n getDateFormat,\n} from '../helpers/dateHelpers';\nimport { getPercentDiff } from '../helpers/helpers';\nimport {\n getRestaurantPinCodeSuccess,\n getRestaurantPinCodeError,\n openPinCodeModal,\n closePinCodeModal,\n authFromIikoSuccess,\n authFromIikoError,\n getOrganizationError,\n selectOrganizationSuccess,\n selectOrganizationError,\n getRestaurantStatisticsSuccess,\n getRestaurantStatisticsError,\n getRestaurantAttendancesSuccess,\n getRestaurantAttendancesError,\n switchBookingProcessorSuccess,\n switchBookingProcessorError,\n} from '../actions/home/HomeActions';\nimport { getRestaurantList } from '../actions/cabinet/CabinetActions';\n\n/** @description Получение пинкода ресторана */\nfunction* getRestaurantPinCodeSaga(action: any) {\n const { restaurantId } = action.payload;\n\n try {\n const response = yield getRestaurantPinCodeReg(restaurantId);\n const { pinCode, timeLeft } = response.data;\n\n yield put(getRestaurantPinCodeSuccess(pinCode, timeLeft));\n } catch (e) {\n yield put(getRestaurantPinCodeError(e));\n }\n}\n\n/** @description Открытие/закрытие модального окна с пинкодом. */\nfunction* switchPinCodeModalSaga() {\n const modalOpen = yield select(state => state.home.pinCodeModal);\n const connectStatus = yield select(state => state.home.connectStatus);\n\n if (connectStatus) {\n yield put(closePinCodeModal());\n } else if (!modalOpen) {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n\n const response = yield getRestaurantPinCodeReg(restaurantId);\n const { pinCode, timeLeft } = response.data;\n\n yield put(getRestaurantPinCodeSuccess(pinCode, timeLeft));\n yield put(openPinCodeModal());\n } else {\n yield put(closePinCodeModal());\n }\n}\n\n/** @description Авторизация и получениее списка организаций в системе iiko */\nfunction* authRestaurantToIikoSaga(action: any) {\n const { authData, restaurantId } = action.payload;\n try {\n yield authIikoReq(restaurantId, authData);\n try {\n const organizationList = yield getOrganizationFromIiko(restaurantId);\n yield put(authFromIikoSuccess(organizationList));\n } catch (e) {\n yield put(getOrganizationError());\n }\n } catch (e) {\n yield put(authFromIikoError());\n }\n}\n\n/** @description Отправка выбранной организации */\nfunction* selectOrganizationFromIikoSaga(action: any) {\n const { restaurantId, organizationId } = action.payload;\n try {\n yield selectOrganizationReq(restaurantId, organizationId);\n yield put(selectOrganizationSuccess());\n } catch (e) {\n yield put(selectOrganizationError());\n }\n}\n\n/** @description Сага для переключения типа приёма резервов у ресторана */\nfunction* switchBookingProcessorSaga(action: any) {\n const { restaurantId, processorType } = action.payload;\n\n try {\n yield switchBookingProcessorReq({\n restaurantId,\n processorType,\n });\n yield put(switchBookingProcessorSuccess());\n yield put(getRestaurantList());\n } catch (e) {\n yield put(switchBookingProcessorError());\n }\n}\n\n/** @description Получение статистики для выбранного ресторана */\nfunction* getRestaurantStatisticSaga(action: any) {\n const { id, date } = action.payload;\n const defaultDate = yield select(state => state.cabinet.StatisticDate.value);\n\n try {\n const response = yield getRestaurantStatistic(id, (date && date.value) || defaultDate);\n const { data } = response;\n\n const totalSuccessful = {\n period: data.period.totalExpectingGuests + data.period.totalClosed,\n previous: data.previous.totalExpectingGuests + data.previous.totalClosed,\n };\n\n const totalCanceled = {\n period: data.period.totalCancelledByGuest + data.period.totalCancelledByRestaurant + data.period.totalSkipped,\n previous: data.previous.totalCancelledByGuest + data.previous.totalCancelledByRestaurant + data.previous.totalSkipped,\n };\n\n const statistic = {\n period: {\n ...data.period,\n averageReceiptAmount: data.period.averageReceiptAmount.toFixed(),\n totalSuccessful: totalSuccessful.period,\n totalCanceled: totalCanceled.period,\n },\n previous: {\n ...data.previous,\n averageReceiptAmount: data.period.averageReceiptAmount.toFixed(),\n totalSuccessful: totalSuccessful.previous,\n totalCanceled: totalCanceled.previous,\n },\n percent: {\n totalSuccessful: getPercentDiff(totalSuccessful.previous, totalSuccessful.period),\n totalCanceled: getPercentDiff(totalCanceled.previous, totalCanceled.period),\n averageReceiptAmount: getPercentDiff(\n data.previous.averageReceiptAmount,\n data.period.averageReceiptAmount,\n ),\n totalCancelledByGuest: getPercentDiff(\n data.previous.totalCancelledByGuest,\n data.period.totalCancelledByGuest,\n ),\n totalCancelledByRestaurant: getPercentDiff(\n data.previous.totalCancelledByRestaurant,\n data.period.totalCancelledByRestaurant,\n ),\n },\n };\n\n yield put(getRestaurantStatisticsSuccess(statistic));\n } catch (e) {\n yield put(getRestaurantStatisticsError());\n }\n}\n\n/** @description Получение данных загруженности для выбранного ресторатора */\nfunction* getRestaurantAttendanceSaga(action: any) {\n const { id, date: reqDate } = action.payload;\n const defaultDate = yield select(state => state.cabinet.StatisticDate);\n const date = reqDate || defaultDate;\n\n let attendanceDate = date.value;\n let period: string;\n let dateFormat: string;\n\n moment.locale('ru');\n switch (date.type) {\n case dashBoardDates.today:\n case dashBoardDates.tomorrow: {\n period = 'HOUR';\n dateFormat = 'HH:mm';\n break;\n }\n case dashBoardDates.seven:\n case dashBoardDates.fourteen:\n case dashBoardDates.twentyEight:\n case dashBoardDates.sixty: {\n period = 'DAY';\n dateFormat = 'DD.MM';\n break;\n }\n case dashBoardDates.firstMonth:\n case dashBoardDates.secondMonth:\n case dashBoardDates.currentMonth: {\n period = 'MONTH';\n dateFormat = 'MM.YYYY';\n break;\n }\n case dashBoardDates.custom: {\n attendanceDate = date.value;\n period = getPeriod(attendanceDate);\n dateFormat = getDateFormat(attendanceDate);\n break;\n }\n\n default:\n period = 'HOUR';\n dateFormat = 'HH:mm';\n }\n\n try {\n const response = yield getRestaurantAttendance(\n id, attendanceDate.from, attendanceDate.to, period,\n );\n const { data } = response;\n\n const attendance = {\n labels: _.map(data, item => moment(item.date).format(dateFormat)),\n total: _.map(data, 'total'),\n };\n\n yield put(getRestaurantAttendancesSuccess(attendance));\n } catch (e) {\n yield put(getRestaurantAttendancesError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(HomeActionTypes.AUTH_FORM_IIKO_REQUEST, authRestaurantToIikoSaga),\n takeLatest(HomeActionTypes.SELECT_ORGANIZATION_REQUEST, selectOrganizationFromIikoSaga),\n takeLatest(HomeActionTypes.SWITCH_RESERVE_PROCESSOR_REQUEST, switchBookingProcessorSaga),\n takeLatest(HomeActionTypes.GET_STATISTIC_REQUEST, getRestaurantStatisticSaga),\n takeLatest(HomeActionTypes.GET_ATTENDANCE_REQUEST, getRestaurantAttendanceSaga),\n takeLatest(HomeActionTypes.SWITCH_PIN_CODE_MODAL, switchPinCodeModalSaga),\n takeLatest(HomeActionTypes.GET_RESTAURANT_PIN_CODE_REQUEST, getRestaurantPinCodeSaga),\n ]);\n}\n","import * as ActionTypes from './MenuActionsTypes';\nimport { IMenuActions } from './IMenuActions';\nimport { TMenuCategory } from '../../types/IMenuStore';\n\n/** @description Экшен на загрузку меню ресторана с iiko */\nexport function getRestaurantMenuFromIiko(restaurantId: number, organizationId: string): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_FROM_IIKO_REQUEST,\n payload: { restaurantId, organizationId },\n };\n}\n\n/** @description Экшен для обработки успешной загрузки меню ресторана с iiko */\nexport function getRestaurantMenuFromIikoSuccess(menu: {\n id: number,\n description: string,\n name: string,\n menuList: Array,\n}): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_FROM_IIKO_SUCCESS,\n message: 'Загрузка меню произведена успешно',\n payload: menu,\n };\n}\n\n/** @description Экшен для обработки ошибки загрузки меню ресторана с iiko */\nexport function getRestaurantMenuFromIikoError(): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_FROM_IIKO_ERROR,\n error: 'Не удалось загрузить меню из iiko',\n };\n}\n\n/** @description Экшен для раскрытия выбранного списка меню */\nexport function changeVisibleMenuListItem(id: number): IMenuActions {\n return {\n type: ActionTypes.CHANGE_VISIBLE_MENU_LIST_ITEM,\n payload: id,\n };\n}\n\n/** @description Экшен для раскрытия всех списков меню */\nexport function openAllMenu(): IMenuActions {\n return {\n type: ActionTypes.OPEN_ALL_MENU,\n };\n}\n\n/** @description Экшен для закрытия всех списков меню */\nexport function closeAllMenu(): IMenuActions {\n return {\n type: ActionTypes.CLOSE_ALL_MENU,\n };\n}\n\n/** @description Экшен на получение меню с бека */\nexport function getRestaurantMenu(restaurantId: number): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_REQUEST,\n payload: restaurantId,\n };\n}\n\n/** @description Экшен на обработку успешного запроса меню с бека */\nexport function getRestaurantMenuSuccess(menu: any): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_SUCCESS,\n payload: menu,\n };\n}\n\n/** @description Экшен на обработку ошибки при запросе меню с бека */\nexport function getRestaurantMenuError(): IMenuActions {\n return {\n type: ActionTypes.GET_MENU_ERROR,\n error: 'Не удалось загрузить меню с сервера',\n };\n}\n","import { put, all, takeLatest } from 'redux-saga/effects';\nimport _ from 'lodash';\n\nimport {\n getRestaurantMenuReq,\n getRestaurantMenuFromIikoReq,\n} from '../api';\nimport {\n getRestaurantMenuSuccess,\n getRestaurantMenuError,\n getRestaurantMenuFromIikoSuccess,\n getRestaurantMenuFromIikoError,\n} from '../actions/menu/MenuActions';\nimport { GET_MENU_REQUEST, GET_MENU_FROM_IIKO_REQUEST } from '../actions/menu/MenuActionsTypes';\nimport { mergeMenu } from '../helpers/menuHelpers';\nimport {\n IGetRestaurantMenu,\n IGetRestaurantMenuFromIiko,\n} from '../actions/menu/IMenuActions';\n\n/** @description Сага для получения меню ресторана */\nfunction* getMenuRestaurantSaga(action: IGetRestaurantMenu) {\n try {\n const menu = yield getRestaurantMenuReq(action.payload);\n\n if (!_.isEmpty(menu)) {\n const menuList = mergeMenu(menu);\n\n yield put(getRestaurantMenuSuccess({\n id: menu.id,\n menuList,\n name: menu.name,\n description: menu.description,\n }));\n }\n } catch (e) {\n yield put(getRestaurantMenuError());\n }\n}\n\n/** @description Сага для получение меню из сервиса iiko */\nfunction* getRestaurantMenuFromIikoSaga(action: IGetRestaurantMenuFromIiko) {\n try {\n const menu = yield getRestaurantMenuFromIikoReq(action.payload);\n const menuList = mergeMenu(menu);\n\n yield put(getRestaurantMenuFromIikoSuccess({\n id: menu.id,\n menuList,\n name: menu.name,\n description: menu.description,\n }));\n } catch (e) {\n yield put(getRestaurantMenuFromIikoError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(GET_MENU_REQUEST, getMenuRestaurantSaga),\n takeLatest(GET_MENU_FROM_IIKO_REQUEST, getRestaurantMenuFromIikoSaga),\n ]);\n}\n","import * as ActionTypes from './PromoActionsTypes';\nimport { IPromoActions } from './IPromoActions';\n\n/** @description Экшен на получение акций */\nexport function getPrograms(restaurantId: number): IPromoActions {\n return {\n type: ActionTypes.GET_PROGRAMS_REQUEST,\n payload: { restaurantId },\n };\n}\n\n/** @description Экшен на обработку успешного получения акций */\nexport function getProgramsSuccess(programList: Array): IPromoActions {\n return {\n type: ActionTypes.GET_PROGRAMS_SUCCESS,\n payload: {\n programList,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки получения акций */\nexport function getProgramsError(): IPromoActions {\n return {\n type: ActionTypes.GET_PROGRAMS_ERROR,\n error: 'Не удалось загрузить акции',\n };\n}\n\n/** @description Экшен на загрузку акций из iiko */\nexport function loadProgramsFromIiko(restaurantId: number): IPromoActions {\n return {\n type: ActionTypes.LOAD_PROGRAMS_REQUEST,\n payload: { restaurantId },\n };\n}\n\n/** @description Экшен на обработку успешной загрузки акций из iiko */\nexport function loadProgramsFromIikoSuccess(programList: Array): IPromoActions {\n return {\n type: ActionTypes.LOAD_PROGRAMS_SUCCESS,\n message: 'Акции успешно загружены',\n payload: {\n programList,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки загрузки акций из iiko */\nexport function loadProgramsFromIikoError(): IPromoActions {\n return {\n type: ActionTypes.LOAD_PROGRAMS_ERROR,\n error: 'Не удалось загрузить акции из сервиса iiko',\n };\n}\n","import { put, all, takeLatest } from 'redux-saga/effects';\n\nimport {\n loadProgramsReq,\n getProgramsReq,\n} from '../api';\nimport {\n GET_PROGRAMS_REQUEST,\n LOAD_PROGRAMS_REQUEST,\n} from '../actions/promo/PromoActionsTypes';\nimport {\n getProgramsError,\n getProgramsSuccess,\n loadProgramsFromIikoError,\n loadProgramsFromIikoSuccess,\n} from '../actions/promo/PromoActions';\nimport { IGetPrograms, ILoadProgramsFromIiko } from '../actions/promo/IPromoActions';\n\n/** @description Получение акций с бека */\nfunction* getProgramsSaga(action: IGetPrograms) {\n try {\n const programList = yield getProgramsReq(action.payload.restaurantId);\n yield put(getProgramsSuccess(programList));\n } catch (e) {\n yield put(getProgramsError());\n }\n}\n\n/** @description Загрузка акций с сервиса iiko */\nfunction* loadProgramsSaga(action: ILoadProgramsFromIiko) {\n try {\n const programList = yield loadProgramsReq(action.payload.restaurantId);\n yield put(loadProgramsFromIikoSuccess(programList));\n } catch (e) {\n yield put(loadProgramsFromIikoError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(GET_PROGRAMS_REQUEST, getProgramsSaga),\n takeLatest(LOAD_PROGRAMS_REQUEST, loadProgramsSaga),\n ]);\n}\n","import * as ActionsTypes from './StatisticsActionsTypes';\nimport { IStatisticsActions } from './IStatisticsActions';\nimport { TOrder, TPages } from '../../types/IStatisticStore';\nimport { IDate } from '../../types/IDate';\nimport { string } from 'prop-types';\n\n/** @description Экшен для запроса на получение сводной статистики */\nexport function getStatistics(\n sort: { orderBy: string, order: string },\n page: number,\n size: number,\n date?: IDate,\n): IStatisticsActions {\n return {\n type: ActionsTypes.GET_SUMMARY_STATISTICS_REQUEST,\n payload: {\n date,\n sort,\n page,\n size,\n },\n };\n}\n\n/** @description Экшен для обработки запроса на получение сводной статистики */\nexport function getStatisticsSuccess(summary: any, pie: any, reserves: any, pages: TPages): IStatisticsActions {\n return {\n type: ActionsTypes.GET_SUMMARY_STATISTICS_SUCCESS,\n payload: {\n summary,\n pie,\n reserves,\n pages,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки запроса на получение сводной статистики */\nexport function getStatisticsError(): IStatisticsActions {\n return {\n type: ActionsTypes.GET_SUMMARY_STATISTICS_ERROR,\n };\n}\n\n/** @description Экшен для запроса деталей резерва */\nexport function openBookingDetails(bookingId: number): IStatisticsActions {\n return {\n type: ActionsTypes.OPEN_BOOKING_DETAILS,\n payload: {\n bookingId,\n },\n };\n}\n\n/** @description Экшен для открытия деталей резерва */\nexport function openBookingDetailsSuccess(bookingId: number, order: TOrder): IStatisticsActions {\n return {\n type: ActionsTypes.OPEN_BOOKING_DETAILS_SUCCESS,\n payload: {\n bookingId,\n order,\n },\n };\n}\n\n/** @description Экшен для открытия деталей резерва */\nexport function openBookingDetailsError(error: string): IStatisticsActions {\n return {\n type: ActionsTypes.OPEN_BOOKING_DETAILS_ERROR,\n error,\n };\n}\n","import { TReserve } from '../types/IBookingStore';\nimport { phoneCode, reserveState } from '../config/constants';\nimport { getBookingStatus } from './dateHelpers';\n\nfunction onlyNumbers(value: string) {\n // console.log(value, value.replace(/[^\\d]/g, ''));\n return value.replace(/[^\\d]/g, '');\n}\n\n/** @description Парсинг статуса резерва */\nfunction parseReserveList(reserve: TReserve) {\n if (reserve.state === reserveState.CANCELING || reserve.state === reserveState.CANCELED) {\n const canceledBy = reserve.canceledBy || reserveState.UNKNOWN;\n return {\n ...reserve,\n state: `${canceledBy}_DECLINE`,\n };\n } if (reserve.state === reserveState.ACCEPTED) {\n return {\n ...reserve,\n state: getBookingStatus(reserve),\n };\n }\n\n return reserve;\n}\n\n/** @description Парсинг номера телефона в формат +7 999 999 99 99 */\nfunction parsePhoneNumber(phone: string) {\n if (phone[1] === '7') {\n return phone.replace(/(\\d{1})(\\d{3})(\\d{7})/,\n '$1 $2 $3');\n }\n\n if (phone[1] === '3') {\n return phone.replace(/(\\d{3})(\\d{2})(\\d{6})/,\n '$1 $2 $3');\n }\n\n return phone;\n}\n\n/** @description Нормализация номера телефона в формат +7 999 999 99 99 для полей ввода */\nconst normalizePhoneOld = (value: string): string => {\n if (!value || value === '+7' || value === '7') {\n return '+7 ';\n }\n\n const onlyNums = value.replace(/[^\\d]/g, '');\n\n if (onlyNums) {\n if (onlyNums.length === 1) {\n return '+7 ';\n }\n\n if (onlyNums.length > 1 && onlyNums.length <= 4) {\n return `+7 ${onlyNums.slice(1)}`;\n }\n\n if (onlyNums.length > 4 && onlyNums.length <= 7) {\n return `+7 ${onlyNums.slice(1, 4)} ${onlyNums.slice(4)}`;\n }\n\n if (onlyNums.length > 7 && onlyNums.length <= 9) {\n return `+7 ${onlyNums.slice(1, 4)} ${onlyNums.slice(4, 7)} ${onlyNums.slice(7, 10)}`;\n }\n\n if (onlyNums.length > 9) {\n return `+7 ${onlyNums.slice(1, 4)} ${onlyNums.slice(4, 7)} ${onlyNums.slice(7, 9)} ${onlyNums.slice(9, 11)}`;\n }\n\n return value;\n }\n\n return '';\n};\n\n/** @description Нормализация номера телефона в формат +7 999 9999999 или +380 99 999999 для полей ввода */\nconst normalizePhone = (value: string, code: string): string => {\n const onlyNums = onlyNumbers(value);\n if (onlyNums) {\n if (\n code === phoneCode.ru.code\n || code === phoneCode.us.code\n ) {\n if (onlyNums.length <= 3) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 3)} ${onlyNums.slice(3, 10)}`;\n\n } else if (code === phoneCode.az.code) {\n // Если добавляют 0 перед кодом, например +994 055 225 2206\n const azPos = onlyNums[0] === '0' ? 3 : 2;\n const azLength = onlyNums[0] === '0' ? 10 : 9;\n\n if (onlyNums.length <= azPos) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, azPos)} ${onlyNums.slice(azPos, azLength)}`;\n\n } else if (\n code === phoneCode.ukr.code\n || code === phoneCode.uz.code\n || code === phoneCode.am.code\n || code === phoneCode.ge.code\n || code === phoneCode.kz.code\n || code === phoneCode.ae.code\n || code === phoneCode.by.code\n || code === phoneCode.kg.code\n || code === phoneCode.tm.code\n ) {\n if (onlyNums.length <= 2) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 2)} ${onlyNums.slice(2, 9)}`;\n\n } else if (code === phoneCode.est.code) {\n if (onlyNums.length <= 2) {\n return onlyNums;\n }\n\n return `${onlyNums.slice(0, 2)} ${onlyNums.slice(2, 8)}`;\n }\n\n return value;\n }\n\n return '';\n};\n\n/** @description Разбор номера на код и номер */\nfunction getCodePhoneNumber(number: string): {\n code: string,\n number: string,\n} {\n const onlyNums = onlyNumbers(number);\n const first = onlyNums.length >= 1 && onlyNums.substr(0, 1);\n const firstTwo = onlyNums.length >= 2 && onlyNums.substr(0, 2);\n const firstThree = onlyNums.length >= 3 && onlyNums.substr(0, 3);\n\n if (first) {\n if (firstThree) {\n if (`+${firstThree}` === phoneCode.uz.code) {\n return {\n code: phoneCode.uz.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.uz.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.am.code) {\n return {\n code: phoneCode.am.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.am.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.ge.code) {\n return {\n code: phoneCode.ge.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.ge.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.az.code) {\n return {\n code: phoneCode.az.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.az.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.ae.code) {\n return {\n code: phoneCode.ae.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.ae.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.by.code) {\n return {\n code: phoneCode.by.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.by.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.kg.code) {\n return {\n code: phoneCode.kg.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.kg.code),\n };\n }\n\n if (`+${firstThree}` === phoneCode.tm.code) {\n return {\n code: phoneCode.tm.code,\n number: normalizePhone(onlyNums.slice(3), phoneCode.tm.code),\n };\n }\n }\n\n if (firstTwo) {\n if (`+${firstTwo}` === phoneCode.ukr.code) {\n return {\n code: phoneCode.ukr.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.ukr.code),\n };\n }\n\n if (`+${firstTwo}` === phoneCode.est.code) {\n return {\n code: phoneCode.est.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.est.code),\n };\n }\n\n if (`+${firstTwo}` === phoneCode.kz.code) {\n return {\n code: phoneCode.kz.code,\n number: normalizePhone(onlyNums.slice(2), phoneCode.kz.code),\n };\n }\n }\n\n if (`+${first}` === phoneCode.ru.code) {\n return {\n code: phoneCode.ru.code,\n number: normalizePhone(onlyNums.slice(1), phoneCode.ru.code),\n };\n }\n\n if (`+${first}` === phoneCode.us.code) {\n return {\n code: phoneCode.us.code,\n number: normalizePhone(onlyNums.slice(1), phoneCode.us.code),\n };\n }\n }\n\n return {\n code: phoneCode.ru.code,\n number: '',\n };\n}\n\nconst getLocale = (locale?: string) => {\n if (!locale) {\n return phoneCode.ru.code;\n }\n\n switch (locale) {\n case 'RU':\n return phoneCode.ru.code;\n case 'UA':\n return phoneCode.ukr.code;\n case 'EE':\n return phoneCode.est.code;\n case 'UZ':\n return phoneCode.uz.code;\n case 'AM':\n return phoneCode.am.code;\n case 'GE':\n return phoneCode.ge.code;\n case 'KZ':\n return phoneCode.kz.code;\n case 'AE':\n return phoneCode.ae.code;\n case 'US':\n return phoneCode.us.code;\n case 'AZ':\n return phoneCode.az.code;\n case 'BY':\n return phoneCode.by.code;\n case 'KG':\n return phoneCode.kg.code;\n case 'TM':\n return phoneCode.tm.code;\n default:\n return phoneCode.ru.code;\n }\n};\n\nexport {\n parseReserveList,\n parsePhoneNumber,\n normalizePhone,\n onlyNumbers,\n getCodePhoneNumber,\n getLocale,\n};\n","import {\n all, put, takeLatest, select, call\n} from 'redux-saga/effects';\n\nimport * as Api from '../api';\nimport * as ActionTypes from '../actions/statistics/StatisticsActionsTypes';\nimport {\n getStatisticsSuccess,\n getStatisticsError,\n openBookingDetailsSuccess, openBookingDetailsError,\n} from '../actions/statistics/StatisticsActions';\nimport locales from '../locales';\nimport { parseReserveList } from '../helpers/reserveHelpers';\nimport { TReserve } from '../types/IBookingStore';\nimport { customErrorShackBar } from '../actions/snackbars/SnackBarsActions';\nimport { IGetStatistics, IOpenBookingDetailsReq } from '../actions/statistics/IStatisticsActions';\n\n/** @description Сага для получение статистики */\nfunction* getStatisticSaga(action: IGetStatistics) {\n const {\n date: dateReq, sort, page, size,\n } = action.payload;\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n const defaultDate = yield select(state => state.cabinet.StatisticDate.value);\n const date = (dateReq && dateReq.value) || defaultDate;\n\n let summary;\n let pie;\n let reserves;\n\n try {\n summary = yield Api.getSummaryStatistic(restaurantId, date);\n } catch (e) {\n yield put(customErrorShackBar(locales.t('common.errors.getStatistic.summary')));\n }\n\n try {\n pie = yield Api.getStatisticPie(restaurantId, date);\n } catch (e) {\n yield put(customErrorShackBar(locales.t('common.errors.getStatistic.pie')));\n }\n\n try {\n reserves = yield Api.getAllBookingsByRestaurantIdWithPageable(restaurantId, date, sort, page, size);\n } catch (e) {\n yield put(customErrorShackBar(locales.t('common.errors.getStatistic.reserve')));\n }\n\n if (summary !== undefined || pie !== undefined || reserves !== undefined) {\n const parseReserves = reserves.content.map((i: TReserve) => parseReserveList(i));\n\n yield put(getStatisticsSuccess(\n summary,\n pie,\n parseReserves,\n {\n current: reserves.number,\n size: reserves.size,\n first: reserves.first,\n last: reserves.last,\n totalPages: reserves.totalPages,\n totalElements: reserves.totalElements,\n },\n ));\n } else {\n yield put(getStatisticsError());\n }\n}\n\n/** @description Сага для получения инфы по резерву для отображения в статистике */\nexport function* openBookingDetails(action: IOpenBookingDetailsReq) {\n try {\n const bookingOrders = yield call(Api.getOrderByBookingIdReq, action.payload.bookingId);\n yield put(openBookingDetailsSuccess(action.payload.bookingId, bookingOrders));\n } catch (e) {\n yield put(openBookingDetailsError('Не удалось получить состав резерва'));\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.GET_SUMMARY_STATISTICS_REQUEST, getStatisticSaga),\n takeLatest(ActionTypes.OPEN_BOOKING_DETAILS, openBookingDetails),\n ]);\n}\n","import * as ActionTypes from './UserStatisticActionsTypes';\nimport { IUserStatistic } from './IUserStatisticActions';\nimport { TReserve } from '../../types/IBookingStore';\n\n/** @description Экшен на получение статистики юзера */\nexport function getUserStatistic(userPhoneNumber: string, sort: { orderBy: string; order: \"desc\" | \"asc\" }): IUserStatistic {\n return {\n type: ActionTypes.GET_USER_STATISTIC_REQUEST,\n payload: {\n userPhoneNumber,\n sort,\n },\n };\n}\n\n/** @description Экшен на обработку получения статистики юзера */\nexport function getUserStatisticSuccess(\n userInfo: any, userStats: any, userReserves: Array,\n): IUserStatistic {\n return {\n type: ActionTypes.GET_USER_STATISTIC_SUCCESS,\n payload: {\n userInfo,\n userStats,\n userReserves,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки получения статистики юзера */\nexport function getUserStatisticsError(): IUserStatistic {\n return {\n type: ActionTypes.GET_USER_STATISTIC_ERROR,\n error: 'Не удалось получить информацию о госте',\n };\n}\n","import {\n all, put, takeLatest, select,\n} from 'redux-saga/effects';\n\nimport * as ActionTypes from '../actions/userStatistic/UserStatisticActionsTypes';\nimport { getUserStatisticSuccess, getUserStatisticsError } from '../actions/userStatistic/UserStatisticActions';\nimport { IGetUserStatistic } from '../actions/userStatistic/IUserStatisticActions';\nimport {\n getAllBookingsByUserPhone, getGuestStatistic, getUserVisitInfo,\n} from '../api';\nimport { TReserve } from '../types/IBookingStore';\n\n/** @description Сага для получения статистики по выбранному юзеру */\nexport function* getUserStatisticSaga(action: IGetUserStatistic) {\n const { userPhoneNumber } = action.payload;\n\n try {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n const userVisits = yield getUserVisitInfo(userPhoneNumber, restaurantId);\n\n if (userVisits.name === null || userVisits.phone === null) {\n const allReserves: Array = yield select(state => state.statistic.reserves);\n const userReserves = allReserves.filter(r => r.phone === userPhoneNumber);\n\n const mockUser = {\n firstVisit: null,\n lastVisit: null,\n isActive: false,\n name: userReserves[0].firstName,\n phone: userPhoneNumber,\n };\n\n const mockStat = {\n averageReceiptAmount: 0,\n total: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalClosed: 0,\n totalDeclined: 0,\n totalReceiptAmount: 0,\n };\n\n yield put(getUserStatisticSuccess(mockUser, mockStat, userReserves));\n } else {\n const statistics = yield getGuestStatistic(\n restaurantId,\n parseInt(action.payload.userPhoneNumber),\n );\n\n const bookingList = yield getAllBookingsByUserPhone(\n restaurantId,\n parseInt(userPhoneNumber),\n action.payload.sort,\n );\n\n yield put(getUserStatisticSuccess(userVisits, statistics, bookingList));\n }\n } catch (e) {\n yield put(getUserStatisticsError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.GET_USER_STATISTIC_REQUEST, getUserStatisticSaga),\n ]);\n}\n","import { all, takeLatest, put } from 'redux-saga/effects';\n\nimport {\n deleteRestaurantError,\n deleteRestaurantSuccess,\n} from '../actions/restaurant/RestaurantActions';\nimport { IDeleteRestaurant } from '../actions/restaurant/IRestaurant';\nimport { resetConnectStatus } from '../actions/home/HomeActions';\nimport * as ActionTypes from '../actions/restaurant/RestaurantsActionTypes';\nimport { deleteRestaurantReq } from '../api';\nimport history from '../redux/history';\nimport { Routers } from '../config/constants';\n\n/** @description Сага для удаления выбранного ресторана */\nfunction* deleteRestaurantSaga(action: IDeleteRestaurant) {\n try {\n yield deleteRestaurantReq(action.payload.restaurantId);\n localStorage.removeItem('pinCodeDate');\n yield put(deleteRestaurantSuccess());\n yield put(resetConnectStatus());\n history.push(Routers.home);\n } catch (e) {\n yield put(deleteRestaurantError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.DELETE_RESTAURANT_REQUEST, deleteRestaurantSaga),\n ]);\n}\n","import * as ActionTypes from './RestaurantsInfoActionsTypes';\nimport {\n IUpdateInfo,\n} from '../../types/IRestaurantInfoStore';\nimport { IAppActions } from '../../types/IAppActions';\n\n/** @description Экшен на редактирование полей у выбранного ресторана */\nexport function updateRestaurantInfo(restaurantInfo: IUpdateInfo): IAppActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_INFO_REQUEST,\n payload: restaurantInfo,\n };\n}\n\n/** @description Экшен на обработку успешного редактирования ресторана */\nexport function updateRestaurantInfoSuccess(): IAppActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_INFO_SUCCESS,\n message: 'Поле отредактировано',\n };\n}\n\n/** @description Экшен на обработку ошибки редактирования ресторана */\nexport function updateRestaurantInfoError(): IAppActions {\n return {\n type: ActionTypes.UPDATE_RESTAURANT_INFO_ERROR,\n error: 'Не удалось отредактировать поле',\n };\n}\n","import {\n put, takeLatest, all, select\n} from 'redux-saga/effects';\n\nimport * as ReservesSystemActionsTypes from '../actions/restaurantsInfo/RestaurantsInfoActionsTypes';\nimport { cardFieldType } from '../config/constants';\nimport { updateRestaurantReq } from '../api';\nimport {\n updateRestaurantInfoSuccess, updateRestaurantInfoError,\n} from '../actions/restaurantsInfo/RestaurantsInfoActions';\nimport { IUpdateRestaurantInfo } from '../actions/restaurantsInfo/IRestaurantsInfoActions';\nimport { getTablesForSettings } from '../actions/restaurantsTables/RestaurantsTables';\nimport { IAppStore } from '../types/IAppStore';\n\n/** @description Редактирование полей у выбранного ресторана */\n// eslint-disable-next-line\nfunction* updateRestaurantInfoSaga(action: IUpdateRestaurantInfo) {\n try {\n const { value, type, currentRestaurant } = action.payload;\n let newData = null;\n let priceLvlValue = null;\n\n switch (type) {\n case cardFieldType.phone: {\n newData = {\n ...currentRestaurant,\n info: {\n ...currentRestaurant.info,\n phone: value,\n },\n };\n break;\n }\n case cardFieldType.priceLevel: {\n const moneySymbol = select((state: IAppStore) => state.cabinet.moneySymbol);\n\n switch (value) {\n case `${moneySymbol}`: {\n priceLvlValue = 'CHEAP';\n break;\n }\n case `${moneySymbol}${moneySymbol}`: {\n priceLvlValue = 'AVERAGE';\n break;\n }\n case `${moneySymbol}${moneySymbol}${moneySymbol}`: {\n priceLvlValue = 'EXPENSIVE';\n break;\n }\n case `${moneySymbol}${moneySymbol}${moneySymbol}${moneySymbol}`: {\n priceLvlValue = 'VERY_EXPENSIVE';\n break;\n }\n default: {\n return 'UNKNOW';\n }\n }\n\n newData = {\n ...currentRestaurant,\n info: {\n ...currentRestaurant.info,\n priceLevel: priceLvlValue,\n },\n };\n break;\n }\n case cardFieldType.site: {\n newData = {\n ...currentRestaurant,\n info: {\n ...currentRestaurant.info,\n site: value,\n },\n };\n break;\n }\n case cardFieldType.extras: {\n newData = {\n ...currentRestaurant,\n extras: value,\n };\n break;\n }\n case cardFieldType.description: {\n newData = {\n ...currentRestaurant,\n description: value,\n };\n break;\n }\n case cardFieldType.kitchen: {\n newData = {\n ...currentRestaurant,\n kitchens: value,\n };\n break;\n }\n case cardFieldType.name: {\n newData = {\n ...currentRestaurant,\n name: value,\n };\n break;\n }\n case cardFieldType.bookingDuration: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n // @ts-ignore\n bookingDuration: parseInt(value) * 60,\n },\n };\n break;\n }\n case cardFieldType.isAutoBookingEnabled: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n isAutoBookingEnabled: value,\n },\n };\n break;\n }\n case cardFieldType.autoBookingMinTimeElapsed: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n autoBookingMinTimeElapsed: value,\n },\n };\n break;\n }\n case cardFieldType.autoBookingMinFreeTables: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n autoBookingMinFreeTables: value,\n },\n };\n break;\n }\n case cardFieldType.autoBookingMaxNumberEmptySeats: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n autoBookingMaxNumberEmptySeats: value,\n },\n };\n break;\n }\n case cardFieldType.isSchemasEnabled: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n isSchemasEnabled: value,\n },\n };\n break;\n }\n\n case cardFieldType.isTelegramNotificationEnabled: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n telegramNotificationSettings: {\n ...currentRestaurant.settings.telegramNotificationSettings,\n isEnabled: value,\n },\n },\n };\n\n break;\n }\n\n case cardFieldType.telegramNotificationUsernames: {\n newData = {\n ...currentRestaurant,\n settings: {\n ...currentRestaurant.settings,\n telegramNotificationSettings: {\n ...currentRestaurant.settings.telegramNotificationSettings,\n usernames: value,\n },\n },\n };\n\n break;\n }\n\n default: {\n throw Error('empty');\n }\n }\n\n yield updateRestaurantReq(newData);\n yield put(updateRestaurantInfoSuccess());\n\n // В случае если был выключен/включен автоприём броней то обновляем информацию по списку столов.\n if (type === cardFieldType.isAutoBookingEnabled) {\n yield put(getTablesForSettings(currentRestaurant.id));\n }\n } catch (e) {\n yield put(updateRestaurantInfoError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ReservesSystemActionsTypes.UPDATE_RESTAURANT_INFO_REQUEST, updateRestaurantInfoSaga),\n ]);\n}\n","import { IRestaurantsSettingsActions } from './IRestaurantsSettingsActions';\nimport * as ActionTypes from './RestaurantsSettingsActionsTypes';\n\n/** @description Переключение типа графика приёма резервов */\nexport function switchReserveSchedule(isActiveRestaurantSchedule: boolean): IRestaurantsSettingsActions {\n return {\n type: ActionTypes.SWITCH_RESERVE_SCHEDULE_TYPE_REQUEST,\n payload: {\n isActiveRestaurantSchedule,\n },\n };\n}\n\n/** @description Успещное переключение типа графика приёма резервов */\nexport function switchReserveScheduleSuccess(isActiveRestaurantSchedule: boolean): IRestaurantsSettingsActions {\n return {\n type: ActionTypes.SWITCH_RESERVE_SCHEDULE_TYPE_SUCCESS,\n payload: {\n isActiveRestaurantSchedule,\n },\n };\n}\n\n/** @description Обработка ошибки переключения типа графика приёма резервов */\nexport function switchReserveScheduleError(): IRestaurantsSettingsActions {\n return {\n type: ActionTypes.SWITCH_RESERVE_SCHEDULE_TYPE_ERROR,\n error: 'Не удалось переключить тип приёма резервов',\n };\n}\n\n\n/** @description Переключение зала в меню настроек ресторана */\nexport function switchSectionId(sectionId: number | undefined): IRestaurantsSettingsActions {\n return {\n type: ActionTypes.SET_SECTION_ID,\n payload: {\n sectionId,\n },\n };\n}\n","import {\n put, all, takeLatest, select,\n} from 'redux-saga/effects';\n\nimport * as ActionTypes from '../actions/restaurantsSettings/RestaurantsSettingsActionsTypes';\nimport { ISwitchReserveSchedule } from '../actions/restaurantsSettings/IRestaurantsSettingsActions';\nimport {\n switchReserveScheduleSuccess,\n switchReserveScheduleError,\n} from '../actions/restaurantsSettings/RestaurantsSettingsActions';\nimport { IScheduleGroup } from '../types/IScheduleStore';\nimport { createScheduleGroupReq, deleteScheduleGroupReq } from '../api';\nimport { localStorageItems } from '../config/constants';\nimport { getScheduleList } from '../actions/schedules/SchedulesAction';\n\n/**\n * @description Переключение приёма резервов с дефолтного на кастомное расписание\n * - При переключении с кастомного на дефолтное сохраняем в локалсторадж текущее расписание\n * - При переключение с дефолтного на кастомное проверяем есть ли в локалсторадже\n * ранее созданные расписания и создаем их, после этого чистим локал сторадж.\n */\nfunction* updateBookingScheduleType(action: ISwitchReserveSchedule) {\n const { isActiveRestaurantSchedule } = action.payload;\n\n if (isActiveRestaurantSchedule) {\n const scheduleList: Array = yield select(state => state.schedule.bookingSchedules);\n\n if (scheduleList.length > 0) {\n // @ts-ignore\n yield deleteScheduleGroupReq(scheduleList.map(d => d.id));\n const prepareForSave = scheduleList.map(i => ({\n day: i.day,\n restaurantId: i.restaurantId,\n type: i.type,\n records: i.records.map(r => ({\n start: r.start,\n end: r.end,\n isWorkingTime: r.isWorkingTime,\n day: r.day,\n type: r.type,\n })),\n }));\n\n localStorage.setItem(localStorageItems.autoBookingSchedule, JSON.stringify(prepareForSave));\n }\n\n yield put(switchReserveScheduleSuccess(isActiveRestaurantSchedule));\n } else {\n try {\n const savedSchedule = yield localStorage.getItem(localStorageItems.autoBookingSchedule);\n const parsedSchedule: Array = savedSchedule ? yield JSON.parse(savedSchedule) : null;\n\n if (parsedSchedule && parsedSchedule.length > 0) {\n yield createScheduleGroupReq(parsedSchedule);\n yield put(getScheduleList());\n }\n\n localStorage.setItem(localStorageItems.autoBookingSchedule, '');\n\n yield put(switchReserveScheduleSuccess(isActiveRestaurantSchedule));\n } catch (e) {\n yield put(switchReserveScheduleError());\n }\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.SWITCH_RESERVE_SCHEDULE_TYPE_REQUEST, updateBookingScheduleType),\n ]);\n}\n","import * as ActionTypes from './SourceStatisticActionsTypes';\nimport { ISourceStatistic } from './ISourceStatisticActions';\nimport { TReserve } from '../../types/IBookingStore';\nimport { TPages } from '../../types/IStatisticStore';\nimport { TSourceInfo } from '../../types/ISourceStatistic';\nimport { IDate } from '../../types/IDate';\n\n/** @description Экшен на получение статистики источника */\nexport function getSourceStatistic(\n source: string,\n date?: IDate,\n): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_STATISTIC_REQUEST,\n payload: {\n source,\n date,\n },\n };\n}\n\n/** @description Экшен на обработку получения статистики источника */\nexport function getSourceStatisticSuccess(sourceStats: any): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_STATISTIC_SUCCESS,\n payload: {\n sourceStats,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки получения статистики источника */\nexport function getSourceStatisticsError(): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_STATISTIC_ERROR,\n };\n}\n\n/** @description Экшен на полученеи списка резервов с выборкой по источнику */\nexport function getReservesBySource(\n source: string,\n sort: {\n orderBy: string;\n order: string;\n },\n page: number,\n size: number,\n date?: IDate,\n): ISourceStatistic {\n return {\n type: ActionTypes.GET_RESERVES_BY_SOURCE_REQUEST,\n payload: {\n source,\n sort,\n date,\n page,\n size,\n },\n };\n}\n\n/** @description Экшен на обработку получения списка резервов с выборкой по источнку */\nexport function getReservesBySourceSuccess(\n reserveList: Array, pages: TPages,\n): ISourceStatistic {\n return {\n type: ActionTypes.GET_RESERVES_BY_SOURCE_SUCCESS,\n payload: {\n reserveList,\n pages,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки при получение списка резервов с выборкой по источнку */\nexport function getReservesBySourceError(): ISourceStatistic {\n return {\n type: ActionTypes.GET_RESERVES_BY_SOURCE_ERROR,\n };\n}\n\n/** @description Экшен для получения инормации по источнику */\nexport function getSourceInfo(source: string): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_INFO_REQUEST,\n payload: {\n source,\n },\n };\n}\n\n/** @description Экшен для обработки успешного запроса */\nexport function getSourceInfoSuccess(source: TSourceInfo): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_INFO_SUCCESS,\n payload: {\n source,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки */\nexport function getSourceError(): ISourceStatistic {\n return {\n type: ActionTypes.GET_SOURCE_INFO_ERROR,\n };\n}\n","import {\n all, put, takeLatest, select,\n} from 'redux-saga/effects';\nimport _ from 'lodash';\n\nimport {\n IGetSourceStatistic,\n IGetReservesBySource,\n IGetSourceInfo,\n} from '../actions/sourceStatistic/ISourceStatisticActions';\nimport {\n GET_SOURCE_STATISTIC_REQUEST,\n GET_RESERVES_BY_SOURCE_REQUEST,\n GET_SOURCE_INFO_REQUEST,\n} from '../actions/sourceStatistic/SourceStatisticActionsTypes';\nimport {\n getReservesBySourceSuccess,\n getReservesBySourceError,\n getSourceStatisticSuccess,\n getSourceStatisticsError,\n getSourceInfoSuccess,\n} from '../actions/sourceStatistic/SourceStatisticActions';\nimport { getSourceStatisticReq, getAllBookingBySource } from '../api';\nimport { IGetReservesData } from '../types/IApiResponse';\nimport { parseReserveList } from '../helpers/reserveHelpers';\nimport { TReserve } from '../types/IBookingStore';\nimport { customErrorShackBar } from '../actions/snackbars/SnackBarsActions';\n\n/** @description Сага для получения статистики выбранного источника */\nexport function* getSourceStatSaga(action: IGetSourceStatistic) {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n const defaultDate = yield select(state => state.cabinet.StatisticDate.value);\n const { source, date } = action.payload;\n const period = (date && date.value) || defaultDate;\n\n try {\n const stats = yield getSourceStatisticReq(restaurantId, period, source);\n yield put(getSourceStatisticSuccess(stats));\n } catch (e) {\n yield put(getSourceStatisticsError());\n yield put(customErrorShackBar('Не удалось получить статистику'));\n }\n}\n\n/** @description Сага для получения резервов выбранного источника */\nexport function* getReservesBySource(action: IGetReservesBySource) {\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n const defaultPeriod = yield select(state => state.cabinet.StatisticDate.value);\n\n const {\n source, size, page, sort, date,\n } = action.payload;\n\n try {\n const response: IGetReservesData = yield getAllBookingBySource(\n restaurantId, source, (date && date.value) || defaultPeriod, sort, size, page,\n );\n\n const parseReserves: Array = response.content.map((i: TReserve) => parseReserveList(i));\n const parsePage = {\n current: response.number,\n size: response.size,\n first: response.first,\n last: response.last,\n totalPages: response.totalPages,\n totalElements: response.totalElements,\n };\n\n // --------Костыль------- //\n const reserve = _.find(parseReserves, (r: TReserve) => r.source.id === action.payload.source);\n\n if (reserve) {\n yield put(getSourceInfoSuccess({\n lastReserve: '',\n createdDate: '',\n name: reserve.source.name,\n isActive: true,\n description: '—',\n }));\n } else {\n // TODO Костыль для костыля выше\n yield put(getSourceInfoSuccess({\n lastReserve: '',\n createdDate: '',\n name: '—',\n isActive: true,\n description: '—',\n }));\n yield put(customErrorShackBar('Не удалось получить информацию по источнику'));\n }\n // --------Костыль------- //\n\n yield put(getReservesBySourceSuccess(parseReserves, parsePage));\n } catch (e) {\n yield put(getReservesBySourceError());\n yield put(customErrorShackBar('Не удалось получить список резервов'));\n }\n}\n\n// TODO Нужно реализовать получение информации источника с бэка\n/** @description Сага для получения инормации выбранного источника */\nexport function* getSourceInfo(action: IGetSourceInfo) {\n // const reserveList = yield select(state => state.statistic.reserves);\n // const reserve = _.find(reserveList, (r: TReserve) => r.source.key === action.payload.source);\n //\n // if (reserve) {\n // yield put(getSourceInfoSuccess({\n // lastReserve: '',\n // createdDate: '',\n // name: reserve.source.name,\n // isActive: true,\n // description: '',\n // }));\n // } else {\n // yield put(customErrorShackBar('Не удалось получить информацию по источнику'));\n // }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(GET_SOURCE_STATISTIC_REQUEST, getSourceStatSaga),\n takeLatest(GET_RESERVES_BY_SOURCE_REQUEST, getReservesBySource),\n takeLatest(GET_SOURCE_INFO_REQUEST, getSourceInfo),\n ]);\n}\n","import React from 'react';\n\nimport Button from '@material-ui/core/Button';\n\nexport const errorSnackBar = () => ({\n key: new Date().getTime() + Math.random(),\n options: {\n variant: 'error',\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'center',\n },\n // @todo Убрано, так как не работает\n // action: ,\n },\n});\n\nexport const messageSnackBar = () => ({\n key: new Date().getTime() + Math.random(),\n options: {\n variant: 'info',\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'center',\n },\n // @todo Убрано, так как не работает\n // action: ,\n },\n});\n\nexport const customSnackBar = (params: {\n message: string;\n variant?: string;\n vertical?: string;\n horizontal?: string;\n}) => ({\n key: new Date().getTime() + Math.random(),\n message: params.message || 'Создан новый резерв',\n options: {\n variant: params.variant || 'info',\n anchorOrigin: {\n vertical: params.vertical || 'top',\n horizontal: params.horizontal || 'right',\n },\n action: ,\n },\n});\n","import { put, takeEvery } from 'redux-saga/effects';\n\nimport * as AuthActionsTypes from '../actions/auth/AuthActionsTypes';\nimport * as MenuActionsTypes from '../actions/menu/MenuActionsTypes';\nimport * as PromoActionsTypes from '../actions/promo/PromoActionsTypes';\nimport * as RestaurantTypes from '../actions/restaurant/RestaurantsActionTypes';\nimport * as RestaurantsInfoTypes from '../actions/restaurantsInfo/RestaurantsInfoActionsTypes';\nimport * as RestaurantsTablesTypes from '../actions/restaurantsTables/RestaurantsTablesTypes';\nimport * as ReserveModalActionsTypes from '../actions/reservationsPage/ReservationsPageActionsTypes';\nimport * as StatisticsActionsTypes from '../actions/statistics/StatisticsActionsTypes';\nimport * as SchedulesActionTypes from '../actions/schedules/SchedulesActionTypes';\nimport * as HomeActionTypes from '../actions/home/HomeActionTypes';\nimport {\n REJECT_RESERVE_ERROR,\n REJECT_RESERVE_SUCCESS,\n} from '../actions/reserveReject/RejectReserveActionsTypes';\nimport { GET_BOOKING_ERROR } from '../actions/booking/BookingActionsTypes';\nimport {\n CREATE_RESTAURANT_SUCCESS,\n CREATE_RESTAURANT_ERROR,\n} from '../actions/cabinet/CabinetActionsTypes';\nimport { GET_USER_STATISTIC_ERROR } from '../actions/userStatistic/UserStatisticActionsTypes';\nimport {\n CUSTOM_ERROR,\n CUSTOM_MESSAGE,\n CUSTOM_SNACKBAR,\n ENQUEUE_SNACKBAR,\n} from '../actions/snackbars/SnackBarsActionsTypes';\nimport { errorSnackBar, messageSnackBar, customSnackBar } from '../components/Common/Snackbar/SnackBars';\nimport * as WidgetActionTypes from '../actions/restaurantsWidgets/RestaurantsWidgetsTypes';\nimport { OPEN_BOOKING_DETAILS_ERROR } from '../actions/statistics/StatisticsActionsTypes';\nimport { removeSnackbar } from '../actions/snackbars/SnackBarsActions';\n\n/** @description Сага для обработки системных сообщений */\nfunction* snackbarsSaga(action: any) {\n const errorBody = errorSnackBar();\n const messageBody = messageSnackBar();\n\n if (action.error) {\n yield put({\n type: ENQUEUE_SNACKBAR,\n notification: {\n ...errorBody,\n message: action.error,\n },\n });\n }\n\n if (action.message) {\n yield put({\n type: ENQUEUE_SNACKBAR,\n notification: {\n ...messageBody,\n message: action.message,\n },\n });\n }\n\n if (action.type === CUSTOM_SNACKBAR) {\n yield put({\n type: ENQUEUE_SNACKBAR,\n notification: {\n ...customSnackBar(action.payload.params),\n },\n });\n }\n}\n\nexport default function* saga() {\n yield takeEvery([\n // --------------ERRORS----------- //\n ReserveModalActionsTypes.CONFIRM_RESERVE_ERROR,\n ReserveModalActionsTypes.GET_FREE_TABLES_ERROR,\n ReserveModalActionsTypes.GET_RESERVE_INFO_ERROR,\n ReserveModalActionsTypes.REJECT_NEW_RESERVE_ERROR,\n ReserveModalActionsTypes.CREATE_RESERVE_ERROR,\n RestaurantsInfoTypes.UPDATE_RESTAURANT_INFO_ERROR,\n RestaurantsTablesTypes.UPDATE_RESTAURANT_TABLE_ERROR,\n RestaurantsTablesTypes.GET_ALL_TABLE_ERROR,\n HomeActionTypes.SELECT_ORGANIZATION_ERROR,\n HomeActionTypes.GET_ORGANIZATION_LIST_FORM_IIKO_ERROR,\n HomeActionTypes.AUTH_FORM_IIKO_ERROR,\n PromoActionsTypes.GET_PROGRAMS_ERROR,\n PromoActionsTypes.LOAD_PROGRAMS_ERROR,\n PromoActionsTypes.LOAD_PROGRAMS_ERROR,\n AuthActionsTypes.SIGN_UP_ERROR,\n RestaurantTypes.DELETE_RESTAURANT_ERROR,\n MenuActionsTypes.GET_MENU_FROM_IIKO_ERROR,\n MenuActionsTypes.GET_MENU_ERROR,\n HomeActionTypes.SWITCH_RESERVE_PROCESSOR_ERROR,\n ReserveModalActionsTypes.UPDATE_RESERVE_ERROR,\n StatisticsActionsTypes.GET_SUMMARY_STATISTICS_ERROR,\n SchedulesActionTypes.UPDATE_SCHEDULE_ERROR,\n SchedulesActionTypes.DELETE_SCHEDULE_ROW_ERROR,\n REJECT_RESERVE_ERROR,\n CREATE_RESTAURANT_ERROR,\n GET_BOOKING_ERROR,\n GET_USER_STATISTIC_ERROR,\n OPEN_BOOKING_DETAILS_ERROR,\n WidgetActionTypes.CREATE_WIDGET_ERROR,\n WidgetActionTypes.GET_ALL_WIDGETS_ERROR,\n WidgetActionTypes.UPDATE_WIDGET_ERROR,\n WidgetActionTypes.DELETE_WIDGET_ERROR,\n // --------------SUCCESS----------- //\n RestaurantsTablesTypes.UPDATE_RESTAURANT_TABLE_SUCCESS,\n RestaurantsInfoTypes.UPDATE_RESTAURANT_INFO_SUCCESS,\n HomeActionTypes.CONNECT_RESTAURANT_SUCCESS,\n ReserveModalActionsTypes.REJECT_NEW_RESERVE_SUCCESS,\n ReserveModalActionsTypes.CONFIRM_RESERVE_SUCCESS,\n HomeActionTypes.SELECT_ORGANIZATION_SUCCESS,\n HomeActionTypes.AUTH_FORM_IIKO_SUCCESS,\n PromoActionsTypes.LOAD_PROGRAMS_SUCCESS,\n AuthActionsTypes.SIGN_UP_SUCCESS,\n RestaurantTypes.DELETE_RESTAURANT_SUCCESS,\n MenuActionsTypes.GET_MENU_FROM_IIKO_SUCCESS,\n ReserveModalActionsTypes.UPDATE_RESERVE_SUCCESS,\n SchedulesActionTypes.UPDATE_SCHEDULE_SUCCESS,\n REJECT_RESERVE_SUCCESS,\n CREATE_RESTAURANT_SUCCESS,\n WidgetActionTypes.CREATE_WIDGET_SUCCESS,\n WidgetActionTypes.UPDATE_WIDGET_SUCCESS,\n WidgetActionTypes.DELETE_WIDGET_SUCCESS,\n // ------------CUSTOM MESSAGES/ERRORS----------- //\n CUSTOM_ERROR,\n CUSTOM_MESSAGE,\n CUSTOM_SNACKBAR,\n ], snackbarsSaga);\n}\n","import { all, put, select, takeLatest } from 'redux-saga/effects';\nimport _ from 'lodash';\n\nimport * as SchedulesActionTypes from '../actions/schedules/SchedulesActionTypes';\nimport {\n deleteScheduleRowError,\n deleteScheduleRowSuccess,\n getScheduleListError,\n getScheduleListSuccess,\n updateScheduleError,\n getScheduleList,\n updateScheduleSuccess,\n forceUpdateBookingSchedule,\n forceDeleteBookingSchedule,\n} from '../actions/schedules/SchedulesAction';\nimport { IAppStore } from '../types/IAppStore';\nimport { IScheduleGroup, IScheduleRow } from '../types/IScheduleStore';\nimport {\n createScheduleGroupReq,\n getScheduleGroupReq,\n deleteScheduleGroupReq,\n updateScheduleGroupReq,\n} from '../api';\nimport {\n getSchedulesRows,\n getNewGroupForCreate,\n getScheduleForDelete,\n getGroupsForUpdate,\n getBookingGroupsForForceUpdate,\n} from '../helpers/scheduleHelpers';\nimport {\n IDeleteScheduleRow,\n IForceDeleteBookingSchedule,\n IForceUpdateBookingSchedule,\n IGetScheduleList,\n IUpdateSchedule,\n} from '../actions/schedules/ISchedulesAction';\nimport { customMessageShackBar } from '../actions/snackbars/SnackBarsActions';\nimport { GET_RESTAURANT_LIST_SUCCESS, SET_CURRENT_RESTAURANT } from '../actions/cabinet/CabinetActionsTypes';\nimport { GET_SCHEDULE_LIST_REQUEST } from '../actions/schedules/SchedulesActionTypes';\nimport { selectorRestaurantId } from '../selectors/RestaurantSelectors';\n\n/** @description Загрузка расписания ресторана. */\nfunction* getScheduleSaga(action: IGetScheduleList) {\n let restaurantId = yield select(selectorRestaurantId);\n\n if (action.type === GET_SCHEDULE_LIST_REQUEST && action.payload.restaurantId) {\n restaurantId = action.payload.restaurantId;\n }\n\n try {\n const { restaurantSchedules, bookingSchedules } = yield getScheduleGroupReq(restaurantId)\n .then((r: Array) => r.reduce((obj: {\n restaurantSchedules: Array;\n bookingSchedules: Array;\n }, schedule: IScheduleGroup) => {\n if (schedule && !schedule.date) {\n if (schedule.type === 'RESTAURANT') {\n return {\n ...obj,\n restaurantSchedules: obj.restaurantSchedules.concat([schedule]),\n };\n }\n\n return {\n ...obj,\n bookingSchedules: obj.bookingSchedules.concat([schedule]),\n };\n }\n return {\n ...obj,\n };\n }, { restaurantSchedules: [], bookingSchedules: [] }));\n\n yield put(getScheduleListSuccess({\n bookingSchedules,\n restaurantSchedules,\n bookingRows: getSchedulesRows(bookingSchedules),\n restaurantRows: getSchedulesRows(restaurantSchedules),\n }));\n } catch (e) {\n yield put(getScheduleListError());\n }\n}\n\n/** @description Сага удаления расписания. */\nfunction* deleteScheduleRowSaga(action: IDeleteScheduleRow) {\n const { row, field } = action.payload;\n const scheduleGroupField = `${field}Schedules`;\n\n const groups = yield select(state => state.schedule[scheduleGroupField]);\n\n try {\n const ids = row.days.reduce((ids: Array, d: string) => {\n const group = _.find(groups, { day: d });\n\n if (group.id) {\n return [...ids, group.id];\n }\n\n return ids;\n }, []);\n\n if (ids.length > 0) {\n yield deleteScheduleGroupReq(ids);\n }\n\n yield put(deleteScheduleRowSuccess(\n action.payload.row,\n action.payload.field,\n ));\n } catch (e) {\n yield put(deleteScheduleRowError());\n }\n\n // Если удаляем строку из расписания работы ресторана то удаляем те же дни и для автоброни\n if (scheduleGroupField === 'restaurantSchedules') {\n yield put(forceDeleteBookingSchedule(row.days));\n }\n}\n\n/** @description Сага для создания и редактирования расписания. */\nfunction* updateScheduleSaga(action: IUpdateSchedule) {\n const { row, field } = action.payload;\n const groupType = field === 'booking' ? 'BOOKING' : 'RESTAURANT';\n const restaurantId = yield select(state => state.cabinet.currentRestaurant.id);\n const initRow: IScheduleRow = yield select(\n state => _.find(state.schedule[`${field}Rows`], { id: row.id }),\n );\n const scheduleGroups: Array = yield select(\n state => state.schedule[`${field}Schedules`],\n );\n\n const groupsForCreate = getNewGroupForCreate(row, initRow.days, restaurantId, groupType);\n const groupsIdForDelete = getScheduleForDelete(row.days, initRow.days, scheduleGroups);\n const groupsForUpdate = getGroupsForUpdate(row, scheduleGroups, initRow);\n\n try {\n // Редактирование группы расписания\n if (!_.isEmpty(groupsForUpdate)) {\n const updatedSchedules = yield updateScheduleGroupReq(groupsForUpdate);\n\n yield put(updateScheduleSuccess(\n field,\n row,\n _.unionBy(updatedSchedules, scheduleGroups, 'id'),\n ));\n\n // Редактируем расписание автоброни\n if (field === 'restaurant') {\n const days = groupsForUpdate.map(d => d.day); // выбираем только дни недели;\n\n yield put(forceUpdateBookingSchedule({\n type: 'update',\n days,\n times: {\n start: row.start,\n end: row.end,\n },\n }));\n }\n }\n\n // Создание новой группы расписания\n if (!_.isEmpty(groupsForCreate)) {\n const newGroups = yield createScheduleGroupReq(groupsForCreate);\n yield put(updateScheduleSuccess(\n field,\n row,\n scheduleGroups\n .concat(newGroups),\n ));\n }\n\n // Удаление группы расписания\n if (!_.isEmpty(groupsIdForDelete)) {\n yield deleteScheduleGroupReq(groupsIdForDelete);\n\n yield put(updateScheduleSuccess(\n field,\n row,\n scheduleGroups\n .filter(g => g.id && groupsIdForDelete.indexOf(g.id) === -1),\n ));\n\n // Удаляем из расписания автоброни дни которые были удалены из основного расписания\n if (field === 'restaurant') {\n const days = scheduleGroups\n .filter((g: any) => groupsIdForDelete.indexOf(g.id) !== -1) // Находим группы по id\n .map(d => d.day); // Возвращаем только дни недели\n\n yield put(forceUpdateBookingSchedule({\n type: 'delete',\n days,\n }));\n }\n }\n\n yield put(customMessageShackBar('Расписание отредактировано'));\n } catch (e) {\n // Обработка ошибки\n if (e.response.data[0].code === 'time_range_overlap') {\n yield put(updateScheduleError(\n 'Расписание пересекатеся с ранее созданным',\n row.id,\n field,\n ));\n } else {\n // Дефолтная ошибка\n yield put(updateScheduleError());\n // Перезапрашиваем список расписаний\n yield put(getScheduleList());\n }\n }\n}\n\n/** @description Сага для удаления расписания автоброни в кейсах с редактирования времени работы ресторана */\nfunction* forceDeleteBookingScheduleSaga(action: IForceDeleteBookingSchedule) {\n const { days } = action.payload;\n\n const groups = yield select(state => state.schedule.bookingSchedules);\n\n const ids = days.reduce((ids: Array, d: string) => {\n const group = _.find(groups, { day: d });\n\n if (group && group.id) {\n return [...ids, group.id];\n }\n\n return ids;\n }, []);\n\n if (ids.length > 0) {\n yield deleteScheduleGroupReq(ids);\n }\n\n yield put(getScheduleList());\n}\n\n/** @description Сага для обновления расписания автоброни в кейсах с редактирования времени работы ресторана */\nfunction* forceUpdateBookingScheduleSaga(action: IForceUpdateBookingSchedule) {\n const groups = yield select((state: IAppStore) => state.schedule.bookingSchedules);\n\n if (action.payload.type === 'delete') {\n const { days } = action.payload;\n const idForDelete = groups\n .filter((g: any) => days.indexOf(g.day) > -1)\n .map((g: any) => g.id);\n\n if (idForDelete.length > 0) {\n yield deleteScheduleGroupReq(idForDelete);\n\n yield put(getScheduleList());\n }\n }\n\n if (action.payload.type === 'update') {\n const { days, times } = action.payload;\n\n if (days.length > 0) {\n const changedDays = groups.filter((g: any) => days.indexOf(g.day) > -1);\n\n if (changedDays.length > 0) {\n const groupsForForceUpdate = getBookingGroupsForForceUpdate(days, groups, times);\n\n if (groupsForForceUpdate.length > 0) {\n yield updateScheduleGroupReq(groupsForForceUpdate);\n yield put(getScheduleList());\n }\n }\n }\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest([\n SchedulesActionTypes.GET_SCHEDULE_LIST_REQUEST,\n SET_CURRENT_RESTAURANT,\n GET_RESTAURANT_LIST_SUCCESS,\n ], getScheduleSaga),\n\n takeLatest(SchedulesActionTypes.DELETE_SCHEDULE_ROW_REQUEST, deleteScheduleRowSaga),\n takeLatest(SchedulesActionTypes.UPDATE_SCHEDULE_REQUEST, updateScheduleSaga),\n takeLatest(SchedulesActionTypes.FORCE_DELETE_BOOKING_SCHEDULE, forceDeleteBookingScheduleSaga),\n takeLatest(SchedulesActionTypes.FORCE_UPDATE_BOOKING_SCHEDULE, forceUpdateBookingScheduleSaga),\n ]);\n}\n","import * as ActionTypes from './PhotoActionsTypes';\nimport { IAppActions } from '../../types/IAppActions';\n\n/** @description Экшен на получение всех изображений ресторана */\nexport function getImages(restaurantId: number): IAppActions {\n return {\n type: ActionTypes.GET_IMAGES_REQUEST,\n payload: {\n restaurantId,\n },\n };\n}\n\n/** @description Экшен на обработку успешного запроса изображений */\nexport function getImagesSuccess(imagesList: Array): IAppActions {\n return {\n type: ActionTypes.GET_IMAGES_SUCCESS,\n payload: {\n imagesList,\n },\n };\n}\n\n/** @description Экшен на обработку ошибки запроса */\nexport function getImagesError(): IAppActions {\n return {\n type: ActionTypes.GET_IMAGES_ERROR,\n };\n}\n\n/** @description Экшен для загрузки изображения */\nexport function uploadImage(restaurantId: number, image: any): IAppActions {\n return {\n type: ActionTypes.UPLOAD_IMAGE_REQUEST,\n payload: {\n restaurantId,\n image,\n },\n };\n}\n\n/** @description Экшен для обработки успешной загрузки изображения */\nexport function uploadImageSuccess(): IAppActions {\n return {\n type: ActionTypes.UPLOAD_IMAGE_SUCCESS,\n };\n}\n\n/** @description Экшен для обработки ошибки загрузки изображения */\nexport function uploadImageError(): IAppActions {\n return {\n type: ActionTypes.UPLOAD_IMAGE_ERROR,\n };\n}\n\n/** @description Экшен для редактирования видимости изображения */\nexport function hideImage(restaurantId: number, imageId: number): IAppActions {\n return {\n type: ActionTypes.HIDE_IMAGE_REQUEST,\n payload: {\n restaurantId,\n imageId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного редактирования видимости изображения */\nexport function hideImageSuccess(imageId: number): IAppActions {\n return {\n type: ActionTypes.HIDE_IMAGE_SUCCESS,\n payload: {\n imageId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки редактирования видимости изображения */\nexport function hideImageError(): IAppActions {\n return {\n type: ActionTypes.HIDE_IMAGE_ERROR,\n };\n}\n\n/** @description Экшен для редактирования видимости изображения */\nexport function showImage(restaurantId: number, imageId: number): IAppActions {\n return {\n type: ActionTypes.SHOW_IMAGE_REQUEST,\n payload: {\n restaurantId,\n imageId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного редактирования видимости изображения */\nexport function showImageSuccess(imageId: number): IAppActions {\n return {\n type: ActionTypes.SHOW_IMAGE_SUCCESS,\n payload: {\n imageId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки редактирования видимости изображения */\nexport function showImageError(): IAppActions {\n return {\n type: ActionTypes.HIDE_IMAGE_ERROR,\n };\n}\n\n/** @description Экшен для установки фото в качестве обложки */\nexport function setCover(restaurantId: number, imageId: number): IAppActions {\n return {\n type: ActionTypes.SET_COVER_REQUEST,\n payload: {\n restaurantId,\n imageId,\n },\n };\n}\n\n/** @description Экшен для обработки успешной смены обложки */\nexport function setCoverSuccess(newMainId: number): IAppActions {\n return {\n type: ActionTypes.SET_COVER_SUCCESS,\n payload: {\n newMainId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки при смене обложки */\nexport function setCoverError(): IAppActions {\n return {\n type: ActionTypes.SET_COVER_ERROR,\n };\n}\n\n/** @description Экшен для изменения видимости обложки */\nexport function hideMainImage(\n restaurantId: number,\n mainImgId: number,\n secondImgId: number,\n): IAppActions {\n return {\n type: ActionTypes.HIDE_MAIN_IMAGE_REQUEST,\n payload: {\n restaurantId,\n mainImgId,\n secondImgId,\n },\n };\n}\n\n/** @description Экшен для обработки успешного изменения видимости обложки */\nexport function hideMainImageSuccess(newMainId: number, hideImgId: number): IAppActions {\n return {\n type: ActionTypes.HIDE_MAIN_IMAGE_SUCCESS,\n payload: {\n newMainId,\n hideImgId,\n },\n };\n}\n\n/** @description Экшен для обработки ошибки изменения видимости обложки */\nexport function hideMainImageError(): IAppActions {\n return {\n type: ActionTypes.HIDE_MAIN_IMAGE_ERROR,\n };\n}\n","import {\n put, takeLatest, all, takeEvery,\n} from 'redux-saga/effects';\n\nimport * as PhotoActionsTypes from '../actions/photo/PhotoActionsTypes';\nimport {\n getImageReq,\n hideImageReq,\n setImageAsCoverReq,\n showImageReq,\n uploadImageReq,\n} from '../api';\nimport { customErrorShackBar } from '../actions/snackbars/SnackBarsActions';\nimport {\n IGetImages,\n IHideImage,\n IUploadImage,\n IShowImage,\n ISetCoverRequest,\n IHideMainImage,\n} from '../actions/photo/IPhotoActions';\nimport {\n getImagesError,\n getImagesSuccess,\n uploadImageSuccess,\n getImages,\n uploadImageError,\n hideImageSuccess,\n hideImageError,\n hideMainImageSuccess,\n hideMainImageError,\n showImageSuccess,\n showImageError,\n setCoverSuccess,\n setCoverError,\n} from '../actions/photo/PhotoActions';\n\n/** @description Сага для получения всех изображений */\nfunction* getImagesSaga(action: IGetImages) {\n try {\n const images: Array = yield getImageReq(action.payload.restaurantId);\n yield put(getImagesSuccess(images));\n } catch (e) {\n yield put(getImagesError());\n }\n}\n\n/** @description Сага для загрузки новго изображегия */\nfunction* uploadImageSaga(action: IUploadImage) {\n try {\n for (const image of action.payload.image) {\n yield uploadImageReq(action.payload.restaurantId, image);\n }\n yield put(uploadImageSuccess());\n yield put(getImages(action.payload.restaurantId));\n } catch (e) {\n yield put(uploadImageError());\n }\n}\n\n/** @description Сага для переключения видимости изображения */\nfunction* switchVisibleImageSaga(action: IHideImage | IShowImage) {\n if (action.type === PhotoActionsTypes.HIDE_IMAGE_REQUEST) {\n try {\n yield hideImageReq(action.payload.restaurantId, action.payload.imageId);\n yield put(hideImageSuccess(action.payload.imageId));\n } catch (e) {\n yield put(hideImageError());\n }\n } else {\n try {\n yield showImageReq(action.payload.restaurantId, action.payload.imageId);\n yield put(showImageSuccess(action.payload.imageId));\n } catch (e) {\n yield put(showImageError());\n }\n }\n}\n\n/** @description Сага для установки фото в качестве обложки */\nfunction* setCoverSaga(action: ISetCoverRequest) {\n const { restaurantId, imageId } = action.payload;\n try {\n yield showImageReq(restaurantId, imageId); // Обрабатываем кейс когда новая обложка скрыта\n yield setImageAsCoverReq(restaurantId, imageId);\n yield put(setCoverSuccess(imageId));\n } catch (e) {\n yield put(setCoverError());\n }\n}\n\n/** @description Сага для изменения видимости обложки\n * - Если юзер скрывает обложку то выбераем новой обложкой следующю фотку из списка.\n * - Если у юзера только 1 фотография кидаем еррор.\n * */\nfunction* hideMainImageSaga(action: IHideMainImage) {\n try {\n const { restaurantId, mainImgId, secondImgId } = action.payload;\n if (secondImgId) {\n yield showImageReq(restaurantId, secondImgId); // Обрабатываем кейс когда новая обложка скрыта\n yield setImageAsCoverReq(restaurantId, secondImgId);\n yield hideImageReq(restaurantId, mainImgId);\n yield put(hideMainImageSuccess(secondImgId, mainImgId));\n } else {\n yield put(customErrorShackBar('Нельзя изменить видимость обложки'));\n }\n } catch (e) {\n yield put(hideMainImageError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(PhotoActionsTypes.GET_IMAGES_REQUEST, getImagesSaga),\n takeEvery([\n PhotoActionsTypes.SHOW_IMAGE_REQUEST,\n PhotoActionsTypes.HIDE_IMAGE_REQUEST,\n ], switchVisibleImageSaga),\n takeLatest(PhotoActionsTypes.UPLOAD_IMAGE_REQUEST, uploadImageSaga),\n takeLatest(PhotoActionsTypes.SET_COVER_REQUEST, setCoverSaga),\n takeLatest(PhotoActionsTypes.HIDE_MAIN_IMAGE_REQUEST, hideMainImageSaga),\n ]);\n}\n","/** @description Экшен для обновления списка резервов */\nimport { IAppActions } from '../../types/IAppActions';\nimport * as ActionTypes from './WebSocketActionsTypes';\n\nexport function socketEventReserveCreated(): IAppActions {\n return {\n type: ActionTypes.SOCKET_RESERVE_CREATED,\n };\n}\n\n// TODO Сейчас вызывает обновление списка резервов, после реализации фичи с новыми резервовом пересмотреть актуальность.\nexport function socketEventReserveConfirmation(): IAppActions {\n return {\n type: ActionTypes.SOCKET_RESERVE_CONFIRMATION,\n };\n}\n\n/** @description Экшен для переподключения вебсокета */\nexport function socketReconnect(): IAppActions {\n return {\n type: ActionTypes.SOCKET_RECONNECT,\n };\n}\n\n/** @description Экшен для редактирования статуса вебсокета */\nexport function setSocketConnectStatus(isConnect: boolean) {\n return {\n type: ActionTypes.SET_SOCKET_CONNECT_STATUS,\n payload: {\n isConnect,\n },\n };\n}\n","export const NEW_NOTIFICATION = 'NEW_NOTIFICATION';\n","// @todo Убрать слово Restaurants, пусть будет ощутимо короче и проще просто call(s) везде?\n\nimport * as ActionTypes from './RestaurantsCallsActionsTypes';\nimport { IRestaurantCall, IRestaurantRequestCalls } from '../../types/IRestaurantCallsStore';\nimport { IAppActions } from '../../types/IAppActions';\n\nexport function fetchRestaurantCalls(payload: IRestaurantRequestCalls): IAppActions {\n return {\n type: ActionTypes.FETCH_RESTAURANT_CALLS,\n payload,\n };\n}\n\nexport function fetchRestaurantCallsSuccess(calls: Array): IAppActions {\n return {\n type: ActionTypes.FETCH_RESTAURANT_CALLS_SUCCESS,\n calls,\n };\n}\n\nexport function fetchRestaurantCallsError(error: string): IAppActions {\n return {\n type: ActionTypes.FETCH_RESTAURANT_CALLS_ERROR,\n error,\n };\n}\n\nexport function resetRestaurantCalls(): IAppActions {\n return {\n type: ActionTypes.RESET_RESTAURANT_CALLS,\n };\n}\n\nexport function addRestaurantCall(call: IRestaurantCall): IAppActions {\n return {\n type: ActionTypes.ADD_RESTAURANT_CALL,\n call,\n };\n}\n\nexport function removeRestaurantCall(id: number, manually: boolean = false): IAppActions {\n return {\n type: ActionTypes.REMOVE_RESTAURANT_CALL,\n id,\n manually,\n };\n}\n","import { createSelector } from 'reselect';\nimport { useSelector } from 'react-redux';\nimport { IAppStore } from '../types/IAppStore';\n\nexport const selectorAuth = createSelector(\n [(store: IAppStore) => store],\n store => store.auth,\n);\n\nexport const selectorIsAuthorized = createSelector(\n [selectorAuth],\n auth => auth && auth.authorized,\n);\n\nexport function useIsAuthorized() {\n return useSelector(selectorIsAuthorized);\n}\n\nexport const selectorAuthUserId = createSelector(\n [selectorAuth],\n auth => auth && auth.user && auth.user.id,\n);\n\nexport function useAuthUserId() {\n return useSelector(selectorAuthUserId);\n}\n","// @ts-ignore\nimport SockJS from 'sockjs-client';\nimport Stomp from 'webstomp-client';\n\nimport { eventChannel, EventChannel } from 'redux-saga';\nimport {\n call,\n take,\n put,\n select,\n takeLatest,\n all,\n delay,\n cancelled,\n} from 'redux-saga/effects';\n\nimport * as Sentry from '@sentry/react';\n\nimport * as ConfigAPI from '../config/api';\nimport { INIT_START } from '../actions/cabinet/CabinetActionsTypes';\nimport {\n getAccessToken,\n getRefreshToken,\n setTokens,\n} from '../helpers/tokensHelpers';\nimport {\n setSocketConnectStatus,\n socketEventReserveConfirmation,\n socketEventReserveCreated, socketReconnect,\n} from '../actions/webSocketService/WebSocketActions';\n// import { customSnackBart } from '../actions/snackbars/SnackBarsActions';\nimport { getBookingList } from '../actions/booking/BookingActions';\n\nimport { IAppStore } from '../types/IAppStore';\nimport { IInitStarting } from '../actions/cabinet/ICabinetActions';\n\nimport {\n getCashBoxConnectStatus,\n getCashBoxPluginsStatus,\n} from '../actions/cabinet/CabinetActions';\nimport { connectRestaurantSuccess } from '../actions/home/HomeActions';\n\nimport { addOpenReserve, removeOpenReserve } from '../actions/reservationsPage/ReservationsPageActions';\n\nimport { SOCKET_RECONNECT } from '../actions/webSocketService/WebSocketActionsTypes';\nimport * as Api from '../api';\nimport { signOut } from '../actions/auth/AuthActions';\nimport { newNotification } from '../actions/notification/NotificationActions';\n\nimport { addRestaurantCall, removeRestaurantCall } from '../actions/restaurantsCalls/RestaurantsCallsActions';\nimport { IRestaurantCall } from '../types/IRestaurantCallsStore';\nimport { outerChangeTypeAppReserve } from '../actions/appReserves/AppReservesActions';\n\nimport { queryWithRetry } from '../api/utils';\nimport { selectorRestaurant, selectorRestaurantId } from '../selectors/RestaurantSelectors';\nimport { selectorIsAuthorized } from '../selectors/AuthSelectors';\n\nconst websocketEmitterType = {\n error: 'ERROR',\n close: 'CLOSE',\n connect: 'CONNECT',\n connectRestaurant: 'CONNECT_RESTAURANT',\n\n // Резервы\n newReserve: 'NEW_RESERVE', // @todo Проверить приходит ли такой тип?\n confirmReserve: 'CONFIRM_RESERVE',\n update: 'UPDATE',\n\n newCall: 'NEW_CALL',\n callEnded: 'CALL_ENDED',\n};\n\nconst websocketError = {\n invalidToken: 'invalid_token',\n unknownError: 'unknown_error',\n};\n\nfunction createSocketChannel() {\n const subscribe = (emitter: any) => {\n const ws = new SockJS(ConfigAPI.websocket, { transports: ['websocket'] });\n const client = Stomp.over(ws, { debug: false });\n const token = getAccessToken();\n\n ws.onClose = emitter({\n type: websocketEmitterType.close,\n });\n\n const connectCallback = () => {\n emitter({\n type: websocketEmitterType.connect,\n });\n\n const reservationCreatedCallback = (message: any) => {\n if (message.body) {\n const json = JSON.parse(message.body);\n\n emitter({\n type: websocketEmitterType.newReserve,\n payload: json,\n });\n }\n };\n\n client.subscribe('/user/event/restaurant/reservation/create', reservationCreatedCallback, {});\n\n const confirmationRequestCallback = (message: any) => {\n if (message.body) {\n const json = JSON.parse(message.body);\n\n emitter({\n type: websocketEmitterType.confirmReserve,\n payload: json,\n });\n }\n };\n\n client.subscribe('/user/event/restaurant/reservation/confirmation', confirmationRequestCallback, {});\n\n const updateBookingListCallback = (message: any) => {\n if (message.body) {\n const json = JSON.parse(message.body);\n\n emitter({\n type: websocketEmitterType.update,\n payload: json,\n });\n }\n };\n\n client.subscribe('/user/event/restaurant/reservation/update', updateBookingListCallback, {});\n\n const connectRestaurantCallback = (message: any) => {\n if (message.body) {\n const json = JSON.parse(message.body);\n\n emitter({\n type: websocketEmitterType.connectRestaurant,\n payload: json,\n });\n }\n };\n\n client.subscribe('/user/event/restaurant/registered/cashbox', connectRestaurantCallback);\n\n\n // Call\n // @todo Может перенести разбор статусов в сагу, как для резервов или резервы сюда?\n\n const connectRestaurantCallsCallback = (message: any) => {\n if (message.body) {\n const call: IRestaurantCall = JSON.parse(message.body);\n let emitterType: string | null = null;\n\n switch (call.state) {\n case 'ACTIVE':\n case 'ALERTING':\n emitterType = websocketEmitterType.newCall;\n break;\n\n case 'MISSED':\n case 'COMPLETED':\n emitterType = websocketEmitterType.callEnded;\n break;\n\n default:\n Sentry.captureMessage(`Unknown call state \"${call.state}\"`);\n console.log(`Unknown call state \"${call.state}\"`);\n break;\n }\n\n if (emitterType) {\n emitter({\n type: emitterType,\n payload: call,\n });\n }\n }\n };\n\n client.subscribe('/user/event/restaurant/call', connectRestaurantCallsCallback);\n };\n\n const errorCallback = (error: any) => {\n const isInvalidToken = error.headers && error.headers.message.search(websocketError.invalidToken);\n emitter({\n type: websocketEmitterType.error,\n error: isInvalidToken ? websocketError.invalidToken : websocketError.unknownError,\n payload: error,\n });\n };\n\n client.connect({ Authorization: `Bearer ${token}` }, connectCallback, errorCallback);\n\n return () => client.disconnect();\n };\n\n return eventChannel(subscribe);\n}\n\nfunction* watchChannelEvents(channel: EventChannel) {\n while (true) {\n const event = yield take(channel);\n\n console.info('---socket_event---', event);\n\n const currentRestaurant = yield select(selectorRestaurant);\n const currentRestaurantId = yield select(selectorRestaurantId);\n\n const date = yield select(\n (state: IAppStore) => state.booking.currentStatisticDate,\n );\n\n switch (event.type) {\n case websocketEmitterType.connect:\n yield put(setSocketConnectStatus(true));\n break;\n\n case websocketEmitterType.close:\n yield put(setSocketConnectStatus(false));\n channel.close();\n return false;\n\n case websocketEmitterType.error:\n if (event.error === websocketError.invalidToken) {\n const refreshToken = getRefreshToken();\n try {\n if (refreshToken) {\n const res = yield Api.refreshTokenReq(refreshToken);\n if (res.status === 200) {\n setTokens(res.data.access_token, res.data.refresh_token);\n } else {\n yield put(signOut());\n }\n }\n } catch (e) {\n yield put(signOut());\n }\n }\n\n yield put(setSocketConnectStatus(false));\n channel.close();\n return false;\n\n case websocketEmitterType.connectRestaurant:\n yield put(connectRestaurantSuccess());\n yield put(getCashBoxConnectStatus(currentRestaurantId));\n yield put(getCashBoxPluginsStatus(currentRestaurantId));\n break;\n\n case websocketEmitterType.confirmReserve:\n // Когда поступает новый резерв через виджет\n\n yield put(newNotification('reserve_confirmation'));\n yield put(socketEventReserveConfirmation());\n\n yield put(addOpenReserve(event.payload));\n\n break;\n\n case websocketEmitterType.newReserve:\n // yield put(customSnackBart({\n // message: 'Создан новый резерв',\n // }));\n\n yield put(socketEventReserveCreated());\n break;\n\n case websocketEmitterType.update:\n yield put(getBookingList(currentRestaurant, date));\n\n if (['CANCELED'].indexOf(event.payload.bookingState) !== -1) {\n yield put(outerChangeTypeAppReserve('CANCELED', event.payload.id));\n yield put(removeOpenReserve(event.payload.id));\n }\n\n break;\n\n case websocketEmitterType.newCall:\n yield put(addRestaurantCall(event.payload));\n break;\n\n case websocketEmitterType.callEnded:\n yield put(removeRestaurantCall(event.payload.id, false));\n break;\n\n default:\n break;\n }\n }\n}\n\nexport function* websocketSaga({ type }: IInitStarting) {\n const isAuthorized = yield select(selectorIsAuthorized);\n\n if (type !== INIT_START || !isAuthorized) {\n try {\n // make a query, if user is not authorized, token renewal mechanic\n // will be triggered.\n yield queryWithRetry(Api.getAccountReq, {}, Infinity, 5000);\n } catch (err) {\n const isCancelled = yield cancelled();\n\n if (isCancelled) {\n return false;\n }\n if (err && err.response && String(err.response.status) === '404') {\n return false;\n }\n yield delay(5000);\n yield put(socketReconnect());\n return false;\n }\n }\n\n const channel = yield call(createSocketChannel);\n\n try {\n return yield watchChannelEvents(channel);\n } finally {\n if (yield cancelled()) {\n channel.close();\n }\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest([\n INIT_START,\n SOCKET_RECONNECT,\n ], websocketSaga),\n ]);\n}\n","import { INewNotification } from './INotificationActions';\nimport { NEW_NOTIFICATION } from './NotificationActionsTypes';\n\nexport function newNotification(type: 'reserve_confirmation'): INewNotification {\n return {\n type: NEW_NOTIFICATION,\n payload: {\n type,\n },\n };\n}\n","const audio = require('../audio/GuestMe-Bell.wav');\n\n// type notification = 'new_reserve' | 'new_call';\ntype notification = 'new_reserve';\n\nclass Sound {\n sound: HTMLAudioElement;\n\n constructor(src: string) {\n this.sound = document.createElement('audio');\n this.sound.src = src;\n this.sound.setAttribute('preload', 'auto');\n this.sound.setAttribute('controls', 'none');\n this.sound.style.display = 'none';\n\n document.body.appendChild(this.sound);\n }\n\n play() {\n return this.sound.play();\n }\n\n stop() {\n this.sound.pause();\n }\n\n destroy() {\n document.body.removeChild(this.sound);\n }\n}\n\n/** @description Аудио оповещение */\nexport function audioNotification(type: notification) {\n switch (type) {\n // case 'new_call':\n case 'new_reserve': {\n const ring = new Sound(audio);\n const playPromise:Promise = ring.play();\n\n if (playPromise !== undefined) {\n playPromise\n .then(() => setTimeout(() => ring.destroy(), 3000))\n .catch(() => ring.destroy());\n }\n\n break;\n }\n default: break;\n }\n}\n","import { all, takeEvery, select } from 'redux-saga/effects';\n\nimport { IAppStore } from '../types/IAppStore';\nimport { audioNotification } from '../helpers/notificationHelpers';\n\nimport logo from '../images/logo.svg';\nimport { NEW_NOTIFICATION } from '../actions/notification/NotificationActionsTypes';\nimport { INewNotification } from '../actions/notification/INotificationActions';\n\nfunction* reservesNotificationsSaga(action: INewNotification) {\n const isActive = yield select((state: IAppStore) => state.cabinet.audioNotification);\n\n switch (action.payload.type) {\n case 'reserve_confirmation': {\n if (isActive) {\n audioNotification('new_reserve');\n }\n\n try {\n Notification.requestPermission((result:any) => {\n if (result === 'granted') {\n new Notification('Новый запрос на резерв.', {\n icon : logo,\n });\n }\n });\n } catch (e) {\n console.error('notification error');\n }\n\n break;\n }\n\n default: break;\n }\n}\n\nexport default function* saga() {\n yield all([\n takeEvery([NEW_NOTIFICATION], reservesNotificationsSaga),\n ]);\n}\n","import * as ActionsTypes from './RestaurantsWidgetsTypes';\nimport { IRestaurantsWidgetsActions } from './IRestaurantsWidgetsActions';\nimport {\n IWidgetAdapt,\n IWidgetDataAdapt,\n} from '../../types/IRestaurantWidgetsStore';\n\n/** @description Создание виджета */\nexport function createWidget(data: IWidgetDataAdapt): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.CREATE_WIDGET_REQUEST,\n payload: data,\n };\n}\n\n/** @description Обработка успешного оздание виджета */\nexport function createWidgetSuccess(newWidget: IWidgetAdapt): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.CREATE_WIDGET_SUCCESS,\n payload: {\n newWidget,\n },\n message: 'Создан новый виджет',\n };\n}\n\n/** @description Обработка ошибки при создании виджета */\nexport function createWidgetError(): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.CREATE_WIDGET_ERROR,\n error: 'Не удалось создать виджет',\n };\n}\n\n/** @description Редактирования выбранного виджета */\nexport function updateWidget(\n widgetId: number,\n data: IWidgetDataAdapt,\n): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.UPDATE_WIDGET_REQUEST,\n payload: {\n widgetId,\n data,\n },\n };\n}\n\n/** @description Обработка успешного редактирования виджета */\nexport function updateWidgetSuccess(widget: IWidgetAdapt): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.UPDATE_WIDGET_SUCCESS,\n payload: {\n widget,\n },\n message: 'Виджет отредактирован',\n };\n}\n\n/** @description Обработка ошибки при попытке отредактировать виджет */\nexport function updateWidgetError(): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.UPDATE_WIDGET_ERROR,\n error: 'Не удалось отредактировать виджет',\n };\n}\n\n/** @description Запрос на получение всех виджетов */\nexport function getAllWidgets(): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.GET_ALL_WIDGETS_REQUEST,\n };\n}\n\n/** @description Обработка успешного получения всех виджетов */\nexport function getAllWidgetsSuccess(widgets: Array): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.GET_ALL_WIDGETS_SUCCESS,\n payload: {\n widgets,\n },\n };\n}\n\n/** @description Обработка ошибки при получении всех виджетов */\nexport function getAllWidgetsError(): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.GET_ALL_WIDGETS_ERROR,\n error: 'Не удалось получить список виджетов',\n };\n}\n\n/** @description Удаление выбранного виджета */\nexport function deleteWidget(widgetId: number): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.DELETE_WIDGET_REQUEST,\n payload: {\n widgetId,\n },\n };\n}\n\n/** @description Обработка успешного удаление выбранного виджета */\nexport function deleteWidgetSuccess(widgetId: number): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.DELETE_WIDGET_SUCCESS,\n payload: {\n widgetId,\n },\n message: 'Виджет удален',\n };\n}\n\n/** @description Обработка ошибки при удаление выбранного виджета */\nexport function deleteWidgetError(): IRestaurantsWidgetsActions {\n return {\n type: ActionsTypes.DELETE_WIDGET_ERROR,\n error: 'Не удалось удалить виджет',\n };\n}\n","import {\n all, takeLatest, select, call, put,\n} from 'redux-saga/effects';\n\nimport * as ActionTypes from '../actions/restaurantsWidgets/RestaurantsWidgetsTypes';\nimport {\n ICreateWidget,\n IDeleteWidget,\n IUpdateWidget,\n} from '../actions/restaurantsWidgets/IRestaurantsWidgetsActions';\nimport { IAppStore } from '../types/IAppStore';\nimport {\n createWidgetError,\n createWidgetSuccess,\n deleteWidgetError,\n deleteWidgetSuccess,\n getAllWidgetsError,\n getAllWidgetsSuccess, updateWidgetError, updateWidgetSuccess,\n} from '../actions/restaurantsWidgets/RestaurantsWidgetsActions';\nimport {\n createWidgetReq,\n deleteWidgetReq,\n getAllWidgetsReq,\n updateWidgetReq,\n} from '../api';\nimport { IWidgetAdapt } from '../types/IRestaurantWidgetsStore';\n\n/** @description Сага для получения всех виджетов ресторана */\nfunction* getAllWidgetsSaga() {\n const currentRestaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n\n try {\n const allWidgets = yield call(getAllWidgetsReq, currentRestaurant.id);\n yield put(getAllWidgetsSuccess(allWidgets.filter((w: IWidgetAdapt) => w.status === 'ACTIVE')));\n } catch (e) {\n yield put(getAllWidgetsError());\n }\n}\n\n/** @description Сага для создания нового виджета */\nfunction* createWidgetSaga(action: ICreateWidget) {\n const currentRestaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n\n try {\n const newWidget = yield call(createWidgetReq, currentRestaurant.id, action.payload);\n yield put(createWidgetSuccess(newWidget));\n } catch (e) {\n yield put(createWidgetError());\n }\n}\n\n/** @description Сага для редактирования выбранного виджета по id */\nfunction* updateWidgetSaga(action: IUpdateWidget) {\n const { widgetId, data } = action.payload;\n\n try {\n const updatedWidget = yield call(updateWidgetReq, widgetId, data);\n yield put(updateWidgetSuccess(updatedWidget));\n } catch (e) {\n yield put(updateWidgetError());\n }\n}\n\n/** @description Сага для редактирования выбранного виджета по id */\nfunction* deleteWidgetSaga(action: IDeleteWidget) {\n try {\n yield call(deleteWidgetReq, action.payload.widgetId);\n yield put(deleteWidgetSuccess(action.payload.widgetId));\n } catch (e) {\n yield put(deleteWidgetError());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(ActionTypes.GET_ALL_WIDGETS_REQUEST, getAllWidgetsSaga),\n takeLatest(ActionTypes.CREATE_WIDGET_REQUEST, createWidgetSaga),\n takeLatest(ActionTypes.UPDATE_WIDGET_REQUEST, updateWidgetSaga),\n takeLatest(ActionTypes.DELETE_WIDGET_REQUEST, deleteWidgetSaga),\n ]);\n}\n","import {\n put,\n takeLatest,\n // takeLeading,\n all,\n call,\n select,\n // delay,\n} from 'redux-saga/effects';\n\nimport * as Sentry from '@sentry/react';\n\nimport {\n GET_RESTAURANT_LIST_SUCCESS,\n SET_CURRENT_RESTAURANT,\n} from '../actions/cabinet/CabinetActionsTypes';\n\nimport {\n FETCH_RESTAURANT_CALLS,\n REMOVE_RESTAURANT_CALL,\n // ADD_RESTAURANT_CALL,\n // NOTIFY_RESTAURANT_CALL,\n // INCREASE_NOTIFICATION_INTERVAL_RESTAURANT_CALL,\n} from '../actions/restaurantsCalls/RestaurantsCallsActionsTypes';\n\nimport {\n IFetchRestaurantCalls,\n IRemoveRestaurantCall,\n} from '../actions/restaurantsCalls/IRestaurantsCallsActions';\n\n// import { IRestaurantCall, TCalls } from '../types/IRestaurantCallsStore';\nimport { getRestaurantCallsReq } from '../api';\n// import { audioNotification } from '../helpers/notificationHelpers';\n// import { isDismissed } from '../helpers/callHelpers';\n\nimport {\n fetchRestaurantCalls,\n fetchRestaurantCallsSuccess,\n fetchRestaurantCallsError,\n resetRestaurantCalls,\n // notifyRestaurantCall,\n // increaseCallNotificationInterval,\n} from '../actions/restaurantsCalls/RestaurantsCallsActions';\n\n// import { callsMockSliced } from '../api/mocks/calls';\n\nimport { removeNotification } from '../actions/notifications/NotificationsActions';\nimport { TNotification } from '../types/INotificationsStore';\nimport { selectorRestaurantId } from '../selectors/RestaurantSelectors';\n\nfunction* fetchRestaurantCallsSaga(action: IFetchRestaurantCalls) {\n try {\n const {\n restaurantId,\n states,\n page,\n perPage,\n } = action.payload;\n\n const response = yield call(getRestaurantCallsReq, restaurantId, states, page, perPage);\n if (!response || !response.content) {\n Sentry.captureMessage('Unexpected response');\n yield put(fetchRestaurantCallsError('Unexpected response'));\n return;\n }\n\n // // @todo Убрать после тестирования\n // if (process.env.NODE_ENV === 'development' && response.content.length === 0) {\n // response.content = callsMockSliced;\n // }\n\n yield put(fetchRestaurantCallsSuccess(response.content));\n\n // if (relevantCalls.length) {\n // yield put(notifyRestaurantCall());\n // }\n } catch (e) {\n Sentry.captureException(e);\n yield put(fetchRestaurantCallsError(e.message));\n }\n}\n\nfunction* removeRestaurantCallSaga(action: IRemoveRestaurantCall) {\n const notification = yield select(state => state.notifications.items.find(\n (x: TNotification) => x.type === 'CALL' && x.payload.id === action.id,\n ));\n\n if (notification) {\n yield put(removeNotification(notification.getKey(), action.manually));\n }\n}\n\nfunction* updateCurrentRestaurantCallsSaga() {\n const restaurantId = yield select(selectorRestaurantId);\n if (restaurantId) {\n yield put(\n fetchRestaurantCalls({\n restaurantId: restaurantId,\n states: ['ALERTING', 'ACTIVE'],\n }),\n );\n } else {\n yield put(resetRestaurantCalls());\n }\n}\n\nexport default function* saga() {\n yield all([\n takeLatest(FETCH_RESTAURANT_CALLS, fetchRestaurantCallsSaga),\n takeLatest(REMOVE_RESTAURANT_CALL, removeRestaurantCallSaga),\n\n takeLatest([\n GET_RESTAURANT_LIST_SUCCESS,\n SET_CURRENT_RESTAURANT,\n ], updateCurrentRestaurantCallsSaga),\n ]);\n}\n","// @todo Назвать типы и интерфейсы без путаницы\n\nimport moment, { Moment } from 'moment';\n\nimport { IRestaurantCall } from './IRestaurantCallsStore';\nimport { TOpenReserve } from './IBookingStore';\nimport { ITable } from './IRestaurantTablesStore';\n\nexport type TNotificationType = 'CALL' | 'RESERVE';\nexport type TNotificationPayload = IRestaurantCall | TOpenReserve;\n\nexport interface INotification {\n type: TNotificationType;\n payload: TNotificationPayload;\n open: boolean;\n offset?: number;\n fiftyFiftyOffset?: number;\n // maxOffset?: number;\n}\n\nexport interface IWindowSize {\n width: number;\n height: number;\n}\n\nclass Notification implements INotification {\n type: TNotificationType;\n\n payload: TNotificationPayload;\n\n open: boolean;\n\n offset: number | undefined;\n\n fiftyFiftyOffset: number | undefined;\n\n getKey = (): string => `${this.type}_${this.payload.id}`;\n\n getDate = (): Date => (this.payload.createdDate ? new Date(this.payload.createdDate) : new Date());\n\n getFoldHeight = (size?: IWindowSize): number => 158;\n\n getUnfoldHeight = (size?: IWindowSize): number => this.getFoldHeight(size) + 53;\n\n getLastVisit = (): Moment | undefined => (\n 'guestLastVisitDate' in this.payload\n && this.payload.guestLastVisitDate\n && moment(this.payload.guestLastVisitDate)\n ) || undefined;\n\n getTotalVisits = (): number => ('guestTotalVisits' in this.payload && this.payload.guestTotalVisits) || 0;\n\n constructor(type: TNotificationType, payload: TNotificationPayload) {\n this.type = type;\n this.open = false;\n this.payload = payload;\n this.offset = undefined;\n this.fiftyFiftyOffset = undefined;\n }\n}\n\nexport class CallNotification extends Notification {\n constructor(payload: IRestaurantCall) {\n super('CALL', payload);\n }\n\n getSortOrder = (): string => [\n // Активный звонок показывается самым первым\n this.payload.state === 'ACTIVE' ? '0' : '2',\n this.getDate().valueOf(),\n ].join(' ');\n\n getFirstName = (): string | undefined => (\n 'guestFirstName' in this.payload && this.payload.guestFirstName\n ) || undefined;\n\n getLastName = (): string | undefined => (\n 'guestLastName' in this.payload && this.payload.guestLastName\n ) || undefined;\n}\n\nexport class ReserveNotification extends Notification {\n constructor(payload: TOpenReserve) {\n super('RESERVE', payload);\n }\n\n getSortOrder = (): string => ['1', this.getDate().valueOf()].join(' ');\n\n getFirstName = (): string | undefined => ('firstName' in this.payload && this.payload.firstName) || undefined;\n\n getLastName = (): string | undefined => ('lastName' in this.payload && this.payload.lastName) || undefined;\n\n getComment = (): string => {\n if ('comment' in this.payload && this.payload.comment) {\n const { comment } = this.payload;\n const noTailSpaces = comment.replace(/\\s+$/, '');\n\n if (noTailSpaces.length > 140) {\n const clippedComment = noTailSpaces\n .substr(0, 136)\n .replace(/\\s+$/, '');\n\n return `${clippedComment}...`;\n }\n\n return comment;\n }\n\n return '';\n }\n\n // @todo Длина строки подобрана на глаз. Можно лучше, так как будут варианты\n // ширины окна и кол-ва текста, при которых будет рассчитываться неправильно?\n getCommentLines = (size?: IWindowSize): number => Math.ceil(\n this.getComment().length / (size && size.width < 600 && size.width > 520 ? 80 : 60),\n );\n\n getFoldHeight = (size?: IWindowSize): number => {\n const lines = this.getCommentLines(size);\n const baseHeight = 255;\n\n if (lines) {\n const indent = 16;\n const lineHeight = 16;\n\n // Если комментариев на одну строку, то высота иконки больше, чем высота строки,\n // поэтому нужно отступить дополнительно\n return baseHeight + lines * lineHeight + indent + (lines === 1 ? 2 : 0);\n }\n\n return baseHeight;\n };\n\n // getUnfoldHeight = (size?: IWindowSize): number => this.getFoldHeight(size) + 53 + 17;\n getUnfoldHeight = (size?: IWindowSize): number => this.getFoldHeight(size) + 53 + 1;\n\n getVisitDate = (): Moment | undefined => {\n if ('date' in this.payload && this.payload.date) {\n return moment(this.payload.date);\n }\n\n return undefined;\n };\n\n isTable = (): boolean => !!(\n 'tables' in this.payload\n && this.payload.tables\n && this.payload.tables.length > 0\n && this.payload.tables[0]\n );\n\n // isTable = (): boolean => {\n // const payload:TOpenReserve = this.payload as TOpenReserve;\n //\n // if (!payload) {\n // return false;\n // }\n //\n // const { tables } = payload;\n //\n // return !!(tables && tables.length && tables[0]);\n // };\n\n getTable = (): string => {\n if (this.isTable()) {\n // @ts-ignore\n return this.payload.tables.map((table: ITable) => `${table.hall}, ${table.number}`).join('; ');\n }\n\n return '';\n };\n}\n\nexport type TNotification = CallNotification | ReserveNotification;\n\nexport type TNotifications = Array;\n\nexport interface INotificationsStore {\n items: TNotifications;\n open: boolean;\n}\n","import {\n all,\n put,\n takeEvery,\n takeLatest,\n select,\n} from 'redux-saga/effects';\n\nimport {\n FETCH_RESTAURANT_CALLS_SUCCESS,\n ADD_RESTAURANT_CALL,\n} from '../actions/restaurantsCalls/RestaurantsCallsActionsTypes';\n\nimport {\n IFetchRestaurantCallsSuccess,\n IAddRestaurantCall,\n} from '../actions/restaurantsCalls/IRestaurantsCallsActions';\n\nimport {\n FETCH_OPEN_RESERVES_SUCCESS,\n ADD_OPEN_RESERVE,\n} from '../actions/reservationsPage/ReservationsPageActionsTypes';\n\nimport { CallNotification, ReserveNotification, TNotification } from '../types/INotificationsStore';\nimport { addNotification, openNotifications } from '../actions/notifications/NotificationsActions';\n\nimport {\n IFetchOpenReservesSuccess,\n IAddOpenReserve,\n} from '../actions/reservationsPage/IReservationsPageActions';\n\nimport {\n ADD_NOTIFICATION,\n IDLE,\n} from '../actions/notifications/NotificationsActionsTypes';\n\n// import { dismiss } from '../helpers/callHelpers';\nimport { audioNotification } from '../helpers/notificationHelpers';\nimport Reserve from '../types/IAppReservesStore';\n\n\n// Notifications\n\nfunction* addNotificationSaga() {\n const isNotificationsOpen: boolean = yield select(state => state.notifications.open);\n const isAppReserveOpen: boolean = yield select(state => state.appReserves.items.some(\n (x: Reserve) => x.open,\n ));\n\n if (!isAppReserveOpen && !isNotificationsOpen) {\n yield put(openNotifications());\n }\n}\n\n// function removeNotificationSaga(action: IRemoveNotification) {\n// if (action.manually) {\n// dismiss(action.key);\n// }\n// }\n\nfunction* playNotificationSaga() {\n const notify: boolean = yield select(state => state.notifications.items.some(\n (n: TNotification) => !n.open,\n ));\n\n if (notify) {\n audioNotification('new_reserve');\n }\n}\n\n\n// Calls\n\nfunction* fetchCalls(action: IFetchRestaurantCallsSuccess) {\n for (let i = 0; i < action.calls.length; i += 1) {\n yield put(addNotification(new CallNotification(action.calls[i])));\n }\n}\n\nfunction* addCall(action: IAddRestaurantCall) {\n yield put(addNotification(new CallNotification(action.call)));\n}\n\n// function* removeCall(action: IRemoveRestaurantCall) {\n// // @todo Вынести повторяющуюся часть removeCall и removeReserve в общую функцию\n//\n// // const notifications = yield select(state => state.notifications.items.filter(\n// // (x: TNotification) => !(x.type === 'CALL' && x.payload.id === action.id),\n// // ));\n// //\n// // yield put(setNotifications(notifications));\n//\n// const notification = yield select(state => state.notifications.items.find(\n// (x: TNotification) => x.type === 'CALL' && x.payload.id === action.id,\n// ));\n//\n// if (notification) {\n// yield put(removeNotification(notification.getKey(), action.manually));\n// }\n// }\n\n\n// Reserves\n\nfunction* fetchReserves(action: IFetchOpenReservesSuccess) {\n for (let i = 0; i < action.reserves.length; i += 1) {\n yield put(addNotification(new ReserveNotification(action.reserves[i])));\n }\n}\n\nfunction* addReserve(action: IAddOpenReserve) {\n yield put(addNotification(new ReserveNotification(action.reserve)));\n}\n\n// function* removeReserve(action: IRemoveOpenReserve) {\n// // @todo Вынести повторяющуюся часть removeCall и removeReserve в общую функцию\n//\n// if (action.manually) {\n// dismiss(action.notificationKey);\n// }\n//\n// const notifications = yield select(state => state.notifications.items.filter(\n// (x: TNotification) => !(x.type === 'RESERVE' && x.payload.id === action.id),\n// ));\n//\n// yield put(setNotifications(notifications));\n// }\n\n\n// Gather all & export\n\nexport default function* saga() {\n yield all([\n // takeEvery(REMOVE_NOTIFICATION, removeNotificationSaga),\n\n takeEvery(IDLE, playNotificationSaga),\n\n takeEvery(FETCH_RESTAURANT_CALLS_SUCCESS, fetchCalls),\n takeEvery(ADD_RESTAURANT_CALL, addCall),\n // takeEvery(REMOVE_RESTAURANT_CALL, removeCall),\n\n takeEvery(FETCH_OPEN_RESERVES_SUCCESS, fetchReserves),\n takeEvery(ADD_OPEN_RESERVE, addReserve),\n // takeEvery(REMOVE_OPEN_RESERVE, removeReserve),\n\n takeLatest(ADD_NOTIFICATION, addNotificationSaga),\n ]);\n}\n","export const getRandomInt = (min: number, max: number) => {\n const mn = Math.ceil(min);\n const mx = Math.floor(max);\n return Math.floor(Math.random() * (mx - mn + 1) + mn);\n};\n","// import moment from 'moment';\n\nimport { TOpenReserve, TReserve } from './IBookingStore';\nimport { getRandomInt } from '../api/mocks/helpers';\nimport { ITable } from './IRestaurantTablesStore';\n// import { getNextTime } from '../helpers/dateHelpers';\n\n\nexport type TAppReserveType = 'APP' | 'WIDGET';\nexport type TAppReserveFormType = 'CREATE' | 'CONFIRM' | 'EDIT';\n\n// Изменения кроме отмены решили пока не отрабатывать. Работа с этим будет в отдельной задаче\n// export type TAppReserveOuterChangeType = 'CANCELED' | 'CHANGED';\nexport type TAppReserveOuterChangeType = 'CANCELED';\n\nexport type TNewReserveFields = {\n id?: number;\n date?: string;\n time?: string;\n hours?: string;\n minutes?: number;\n persons?: number;\n firstName?: string;\n lastName?: string;\n comment?: string;\n phone?: string;\n isBanquet?: boolean;\n section?: number;\n\n tables?: Array;\n // Для хранения локального по отношению к ЛК промежуточного\n // статуса объединения столов без сохранения на сервере\n isMergeTables?: boolean;\n\n duration?: number;\n};\n\nexport type TAppReserve = {\n type: TAppReserveType;\n payload?: TOpenReserve | TReserve | TNewReserveFields;\n originPayload?: TOpenReserve | TReserve | TNewReserveFields;\n open: boolean;\n key: string;\n changed: boolean;\n\n // По резерву могут приходить изменения извне. Сейчас достаточно понимать\n // отменили или изменили резерв, чтобы удалить его или заблокировать для редактирования.\n // В следующих работах планируется более развернутая реализация\n outerChangeType?: TAppReserveOuterChangeType;\n};\n\nexport default class Reserve implements TAppReserve {\n key: string;\n\n open: boolean;\n\n payload: TOpenReserve | TReserve | TNewReserveFields;\n\n originPayload: TOpenReserve | TReserve | TNewReserveFields | undefined;\n\n type: TAppReserveType;\n\n changed: boolean;\n\n outerChangeType: TAppReserveOuterChangeType | undefined;\n\n makeKey = (): string => {\n const prefix = this.getFormType();\n\n if (this.payload && this.payload.id) {\n return `${prefix}_${this.payload.id}`;\n }\n\n return `${prefix}_${getRandomInt(1, 1000)}_${getRandomInt(1, 1000)}`;\n };\n\n getFormType = (): TAppReserveFormType => {\n if (!this.payload || !this.payload.id) {\n return 'CREATE';\n }\n\n if (this.type === 'WIDGET') {\n return 'CONFIRM';\n }\n\n return 'EDIT';\n };\n\n constructor(type: TAppReserveType, payload?: TOpenReserve | TReserve | TNewReserveFields) {\n this.type = type;\n this.open = false;\n this.changed = false;\n this.outerChangeType = undefined;\n this.payload = payload || {};\n this.originPayload = payload || undefined;\n\n // if (!this.payload.date) {\n // this.payload.date = moment(getNextTime()).format('YYYY-MM-DDTHH:mm:00');\n // }\n\n if (!this.payload.persons) {\n this.payload.persons = 2;\n }\n\n if (!this.payload.duration) {\n this.payload.duration = 120;\n }\n\n this.key = this.makeKey();\n }\n}\n\nexport type TAppReserves = Array;\n\nexport interface IAppReservesStore {\n items: TAppReserves;\n lastKey?: string;\n}\n","import {\n all,\n put,\n takeEvery,\n select,\n} from 'redux-saga/effects';\n\nimport { reset } from 'redux-form';\nimport * as Sentry from '@sentry/react';\n\nimport {\n // FETCH_OPEN_RESERVES_SUCCESS,\n // ADD_OPEN_RESERVE,\n REMOVE_OPEN_RESERVE,\n} from '../actions/reservationsPage/ReservationsPageActionsTypes';\n\nimport Reserve, {TAppReserves, TNewReserveFields} from '../types/IAppReservesStore';\n\nimport {\n IFetchOpenReservesSuccess,\n // IAddOpenReserve,\n IRemoveOpenReserve,\n} from '../actions/reservationsPage/IReservationsPageActions';\n\nimport {\n openReserveEditModal,\n closeReserveEditModal,\n openReserveCreateModal,\n closeReserveCreateModal,\n openReserveConfirmModal,\n closeReserveConfirmModal,\n} from '../actions/reservationsPage/ReservationsPageActions';\n\nimport {\n setAppReserves,\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n} from '../actions/appReserves/AppReservesActions';\n\nimport { TOpenReserve, TReserve } from '../types/IBookingStore';\n\nimport {\n ADD_APP_RESERVE,\n OPEN_APP_RESERVE,\n CLOSE_APP_RESERVE,\n TOGGLE_APP_RESERVES,\n} from '../actions/appReserves/AppReservesActionsTypes';\n\nimport {\n IAddAppReserve,\n ICloseAppReserve,\n IOpenAppReserve,\n} from '../actions/appReserves/IAppReservesActions';\n\nimport {\n selectorLastAppReserve,\n selectorOpenModal,\n selectorSelectedAppReserve,\n} from '../containers/Reservation/selectors';\nimport { closeNotifications } from '../actions/notifications/NotificationsActions';\nimport { getReserveFormName } from '../containers/Reservation/constants';\n\n\nfunction* setAppReservesSaga(action: IFetchOpenReservesSuccess) {\n const reserves: TAppReserves = action.reserves.map(\n (reserve: TOpenReserve) => new Reserve('WIDGET', reserve),\n );\n\n yield put(setAppReserves(reserves));\n}\n\n// function* addOpenReserveSaga(action: IAddOpenReserve) {\n// yield put(addAppReserve(new Reserve('WIDGET', action.reserve)));\n// }\n\nfunction* addAppReserveSaga(action: IAddAppReserve) {\n const selectedReserve = yield select(selectorSelectedAppReserve);\n\n if (selectedReserve) {\n yield put(closeAppReserve(\n selectedReserve.key,\n { openNextKey: action.reserve.key },\n ));\n } else {\n yield put(openAppReserve(action.reserve.key));\n }\n}\n\nfunction* removeOpenReserveSaga(action: IRemoveOpenReserve) {\n const reserve = yield select(state => state.appReserves.items.find(\n (x: Reserve) => x.payload && x.payload.id === action.id,\n ));\n\n if (reserve && !reserve.open) {\n yield put(removeAppReserve(reserve.key));\n }\n}\n\nfunction* openAppReserveSaga(action: IOpenAppReserve) {\n let reserve: Reserve | undefined;\n if (action.key) {\n reserve = yield select(state => state.appReserves.items.find(\n (x: Reserve) => x.key === action.key,\n ));\n }\n\n if (!reserve) {\n reserve = yield select(selectorLastAppReserve);\n }\n\n if (!reserve) {\n reserve = yield select(state =>\n state.appReserves.items && state.appReserves.items[0],\n );\n }\n\n if (!reserve) {\n Sentry.captureMessage('No reserve to open');\n throw new Error('No reserve to open');\n }\n\n const formType = reserve.getFormType();\n\n switch (formType) {\n case 'CREATE':\n yield put(openReserveCreateModal(reserve.payload as TNewReserveFields));\n break;\n\n case 'CONFIRM':\n if (reserve.payload && reserve.payload.id) {\n yield put(openReserveConfirmModal(reserve.payload.id));\n }\n\n break;\n\n case 'EDIT':\n if (reserve.payload) {\n yield put(openReserveEditModal(reserve.payload as TReserve));\n }\n\n break;\n\n default:\n Sentry.captureMessage(`Unknown reserve form type \"${formType}\"`);\n throw new Error(`Unknown reserve form type \"${formType}\"`);\n }\n\n const isNotificationsOpen: boolean = yield select(state => state.notifications.open);\n if (isNotificationsOpen) {\n yield put(closeNotifications());\n }\n}\n\nfunction* closeAppReserveSaga(action: ICloseAppReserve) {\n let reserve: Reserve;\n\n if (action.key) {\n reserve = yield select(state => state.appReserves.items.find(\n (x: Reserve) => x.key === action.key,\n ));\n } else {\n reserve = yield select(selectorLastAppReserve);\n }\n\n if (!reserve) {\n Sentry.captureMessage('No reserve to close');\n throw new Error('No reserve to close');\n }\n\n if (!action.options || !action.options.skipModalClosing) {\n switch (reserve.getFormType()) {\n case 'CREATE':\n yield put(reset(getReserveFormName('CREATE')));\n yield put(closeReserveCreateModal());\n break;\n\n case 'CONFIRM':\n if (reserve.payload && reserve.payload.id) {\n yield put(reset(getReserveFormName('CONFIRM')));\n yield put(closeReserveConfirmModal(reserve.payload.id));\n }\n break;\n\n case 'EDIT':\n yield put(reset(getReserveFormName('EDIT')));\n yield put(closeReserveEditModal());\n break;\n }\n }\n\n // Удаление черновиков пустого или неизмененного резерва при скрытии формы\n // резерва через интерфейс (иконка в шапке или кнопка назад в навигации)\n const removed: Array = [];\n\n if (!action.key) {\n const reserves: Array = yield select(state => state.appReserves && state.appReserves.items);\n\n for (let i = 0; i < reserves.length; i++) {\n if (\n !reserves[i].changed && (\n reserves[i].type !== 'WIDGET' ||\n reserves[i].outerChangeType === 'CANCELED'\n )\n ) {\n removed.push(reserves[i].key);\n yield put(removeAppReserve(reserves[i].key));\n }\n }\n }\n\n\n // Обработка дополнительных событий\n if (action.options) {\n if (action.options.openNext) {\n if (!action.key) {\n Sentry.captureMessage('Unknown reserve key to open next');\n throw new Error('Unknown reserve key to open next');\n }\n\n const nextAppReserve = yield select(state => {\n const { items } = state.appReserves;\n if (!items || items.length <= 1) {\n return undefined;\n }\n\n const openIndex = items.findIndex((reserve: Reserve) => reserve.key === action.key);\n if (openIndex + 1 <= items.length - 1) {\n return items[openIndex + 1];\n }\n\n return items[openIndex - 1];\n });\n\n if (nextAppReserve) {\n yield put(openAppReserve(nextAppReserve.key));\n }\n }\n\n if (action.options.openNextKey) {\n yield put(openAppReserve(action.options.openNextKey));\n }\n\n if (action.options.openNewReserve) {\n yield put(addAppReserve(action.options.openNewReserve));\n }\n\n if (action.options.remove && removed.indexOf(reserve.key) === -1) {\n yield put(removeAppReserve(reserve.key));\n }\n }\n}\n\nfunction* toggleAppReservesSaga() {\n const openModal = yield select(selectorOpenModal);\n\n if (openModal) {\n yield put(closeAppReserve());\n } else {\n yield put(openAppReserve());\n }\n}\n\nexport default function* saga() {\n yield all([\n // takeEvery(FETCH_OPEN_RESERVES_SUCCESS, setAppReservesSaga),\n // takeEvery(ADD_OPEN_RESERVE, addOpenReserveSaga),\n takeEvery(REMOVE_OPEN_RESERVE, removeOpenReserveSaga),\n\n takeEvery(ADD_APP_RESERVE, addAppReserveSaga),\n takeEvery(OPEN_APP_RESERVE, openAppReserveSaga),\n takeEvery(CLOSE_APP_RESERVE, closeAppReserveSaga),\n takeEvery(TOGGLE_APP_RESERVES, toggleAppReservesSaga),\n ]);\n}\n","import { all } from 'redux-saga/effects';\n\nimport authSaga from './AuthSagas';\nimport restorePasswordSaga from './RestorePasswordSagas';\nimport reservationsPageSagas from './ReservationsPageSagas';\nimport bookingSaga from './BookingSagas';\nimport cardSettingsSaga from './RestaurantsTables';\nimport cabinetSaga from './CabinetSagas';\nimport homeSaga from './HomeSagas';\nimport menuSaga from './MenuSagas';\nimport promotionSaga from './PromoSagas';\nimport statisticSaga from './StatisticSagas';\nimport userStatistic from './UserStatisticSagas';\nimport restaurantSaga from './RestaurantSaga';\nimport restaurantsInfoSagas from './RestaurantsInfoSagas';\nimport restaurantsSettingsSaga from './RestaurantsSettingsSaga';\nimport restaurantsSectionsSaga from './RestaurantsSectionsSaga';\nimport sourceStatistic from './SourceStatisticSaga';\nimport snackbarsSaga from './SnackbarsSagas';\nimport schedulesSaga from './SchedulesSaga';\nimport photoSaga from './PhotoSagas';\nimport websocketSaga from './WebSocketSaga';\nimport notification from './NotificationSaga';\nimport widgetsSaga from './WidgetsSaga';\nimport restaurantsCallsSaga from './RestaurantsCallsSagas';\nimport NotificationsSaga from './NotificationsSaga';\nimport AppReservesSaga from './AppReservesSaga';\n\nexport default function* rootSaga() {\n yield all([\n authSaga(),\n cabinetSaga(),\n reservationsPageSagas(),\n homeSaga(),\n restaurantSaga(),\n restaurantsInfoSagas(),\n restaurantsSettingsSaga(),\n restaurantsSectionsSaga(),\n cardSettingsSaga(),\n bookingSaga(),\n snackbarsSaga(),\n statisticSaga(),\n sourceStatistic(),\n restorePasswordSaga(),\n menuSaga(),\n promotionSaga(),\n userStatistic(),\n schedulesSaga(),\n photoSaga(),\n websocketSaga(),\n notification(),\n widgetsSaga(),\n restaurantsCallsSaga(),\n NotificationsSaga(),\n AppReservesSaga(),\n ]);\n}\n","import { applyMiddleware, createStore, compose } from 'redux';\nimport { routerMiddleware } from 'connected-react-router';\nimport createSagaMiddleware from 'redux-saga';\nimport * as Sentry from '@sentry/react';\nimport reducer from '../reducers';\nimport history from './history';\nimport rootSaga from '../sagas';\n\nconst sagaMiddleware = createSagaMiddleware();\n\nconst composeEnhancers = typeof window === 'object'\n// @ts-ignore\n && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\n // @ts-ignore\n ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({\n // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...\n }) : compose;\n\nconst sentryReduxEnhancer = Sentry.createReduxEnhancer();\n\nconst enhancer = composeEnhancers(\n applyMiddleware(\n sagaMiddleware,\n routerMiddleware(history),\n ),\n sentryReduxEnhancer,\n);\n\nconst store = createStore(\n reducer(history),\n enhancer,\n);\n\nsagaMiddleware.run(rootSaga);\n\nexport default store;\n","import { createMuiTheme } from '@material-ui/core/styles';\n\nexport const primaryColor = '#6ae9c5';\nexport const primarySelectedColor = 'rgb(0, 150, 136, 0.15)';\nexport const primaryHoverColor = 'rgb(0, 150, 136, 0.1)';\nexport const primaryPostHoverColor = 'rgb(0, 150, 136, 0.05)';\nexport const errorColor = '#f45858';\nexport const errorHoverColor = '#c24949';\nexport const errorContrastText = '#323232';\n\nexport default createMuiTheme({\n typography: {\n h4: {\n fontFamily: ['GolosTextWebMedium', 'Roboto'],\n fontSize: 29,\n lineHeight: '32pt',\n },\n h5: {\n fontFamily: ['GolosTextWebMedium', 'Roboto'],\n fontSize: 24,\n lineHeight: '28pt',\n },\n h6: {\n fontFamily: ['GolosTextWebMedium', 'Roboto'],\n fontSize: 20,\n lineHeight: '24pt',\n },\n subtitle1: {\n fontSize: 16,\n lineHeight: '16pt',\n },\n subtitle2: {\n fontFamily: ['GolosTextWebMedium', 'Roboto'],\n fontSize: 14,\n lineHeight: '14pt',\n },\n body1: {\n fontSize: 14,\n lineHeight: '1.4',\n },\n caption: {\n color: '#AAAAAA',\n fontSize: 12,\n lineHeight: '14pt',\n },\n button: {\n textTransform: 'none',\n },\n useNextVariants: true,\n fontFamily: [\n 'GolosTextWebRegular',\n 'Roboto',\n ],\n },\n palette: {\n primary: {\n main: primaryColor,\n contrastText: '#323232',\n },\n secondary: {\n main: '#c0c0c0',\n contrastText: '#323232',\n },\n grey: {\n main: '#898989',\n },\n buttonGrey: {\n main: '#c5c5c5',\n hover: '#bbbbbb',\n contrastText: '#323232',\n },\n error: {\n main: errorColor,\n hover: errorHoverColor,\n contrastText: '#323232',\n },\n },\n overrides: {\n MuiButton: {\n root: {\n fontFamily: ['GolosTextWebMedium', 'Roboto'],\n },\n },\n MuiInput: {\n underline: {\n '&:hover:not($disabled):not($focused):not($error):before': { borderBottomColor: primaryColor },\n },\n },\n MuiTooltip: {\n tooltip: {\n fontSize: 12,\n maxWidth: 360,\n padding: '16px 15px 17px 24px',\n },\n },\n MuiMenuItem: {\n root: {\n '&$selected': {\n backgroundColor: primarySelectedColor,\n fontWeight: 500,\n '&:focus': {\n backgroundColor: primarySelectedColor,\n },\n '&:hover': {\n backgroundColor: primaryHoverColor,\n },\n },\n '&:hover': {\n backgroundColor: primaryHoverColor,\n },\n '&:focus': {\n backgroundColor: primaryPostHoverColor,\n },\n },\n },\n MuiListItem: {\n button: {\n '&:hover': {\n backgroundColor: primaryHoverColor,\n },\n '&:focus': {\n backgroundColor: primaryPostHoverColor,\n },\n },\n },\n\n MuiTouchRipple: {\n rippleVisible: {\n color: 'rgb(0, 150, 136, 0.25) !important',\n },\n },\n\n MuiTableCell: {\n root: {\n padding: 12,\n },\n head: {\n color: '#AAAAAA',\n fontSize: 12,\n lineHeight: '14pt',\n backgroundColor: '#f7f8fb',\n },\n },\n },\n});\n","import {\n createStyles, Theme,\n} from '@material-ui/core/styles';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n },\n content: {\n flexGrow: 1,\n marginTop: 64,\n [theme.breakpoints.down('xs')]: {\n marginTop: 54,\n },\n },\n});\n\nexport default styles;\n","import React from 'react';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\n\nconst styles = () => createStyles({\n toolbarWrap: {\n display: 'flex',\n flex: 1,\n padding: '0 24px',\n height: 64,\n background: '#F6F9F9',\n justifyContent: 'space-between',\n alignItems: 'center',\n boxShadow: '0 2px 6px 0 rgba(31, 48, 63, 0.5)',\n },\n});\n\ninterface IProps extends WithStyles {\n children: React.ReactNode;\n}\n\nconst PageHeaderWrap: React.FC = ({ classes, children }) => (\n
\n { children }\n
\n);\n\nexport default withStyles(styles)(PageHeaderWrap);\n","import React from 'react';\nimport ClassNames from 'classnames';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\nimport { Grid } from '@material-ui/core';\n\nconst styles = () => createStyles({\n wrap: {\n padding: 24,\n width: '100%',\n },\n maxWidth: {\n maxWidth: 1055,\n },\n});\n\ninterface IProps extends WithStyles {\n children: React.ReactNode;\n fullWidth?: boolean;\n direction?: 'column' | 'column-reverse' | 'row' | 'row-reverse';\n spacing?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;\n}\n\nconst PageContentWrap: React.FC = ({\n classes,\n children,\n fullWidth,\n direction,\n spacing,\n}) => (\n
\n \n {children}\n \n
\n);\n\nexport default withStyles(styles)(PageContentWrap);\n","import React from 'react';\nimport { SvgIcon } from '@material-ui/core';\n\nconst wrapSvgPath = (path, viewBox = '0 0 24 24') => props => (\n {path}\n);\n\nexport default wrapSvgPath;\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst helpPath = (\n \n \n \n \n \n);\n\nexport default wrapWithPath(helpPath, '0 0 52 52');\n","import React from 'react';\nimport _ from 'lodash';\nimport classNames from 'classnames';\n\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\n\nimport HelpIcon from './Icons/HelpIcon';\n\nconst styles = createStyles({\n tooltip: {\n paddingBottom: 10,\n '&:last-child': {\n paddingBottom: 0,\n },\n },\n icon: {\n cursor: 'help',\n fontSize: 16,\n },\n marginLeft: {\n marginLeft: 10,\n },\n});\n\ninterface IProps extends WithStyles {\n content: string | Array;\n marginLeft: boolean;\n}\n\n/**\n * @param classes {Object}\n * @param content {string || Array } - Текст тултипа\n * @param marginLeft {boolean} - Маржин с лева 10px\n */\nconst CustomTooltip: React.FC = ({\n content, classes, marginLeft,\n}) => {\n if (typeof content === 'string' || _.isEmpty(content)) {\n return (\n \n
\n \n
\n \n );\n }\n\n return (\n (\n \n ))\n }\n >\n
\n \n
\n \n );\n};\n\nexport default withStyles(styles)(CustomTooltip);\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\n\nimport CustomTooltip from './CustomTooltip';\n\nconst styles = {\n wrap: {\n padding: '16px 24px',\n display: 'flex',\n width: '100%',\n alignItems: 'center',\n },\n borderBottom: {\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\n },\n spaceBetween: {\n justifyContent: 'space-between',\n },\n title: {\n margin: 0,\n },\n};\n\ninterface Props extends WithStyles{\n text?: string;\n subTitle?: string;\n borderBottom?: boolean;\n helps?: string | Array;\n padding?: any;\n spaceBetween?: boolean;\n}\n\nconst TitleComp: React.FC = ({\n classes, padding, text, borderBottom, helps, spaceBetween, children, subTitle,\n}) => {\n const styles = {\n padding,\n };\n\n return (\n \n
\n \n { text }\n \n {subTitle && (\n \n )}\n
\n { children }\n { helps && }\n \n );\n};\n\nexport default withStyles(styles)(TitleComp);\n","import React, { Component } from 'react';\nimport * as PropTypes from 'prop-types';\nimport _ from 'lodash';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport InputAdornment from '@material-ui/core/InputAdornment';\nimport Typography from '@material-ui/core/Typography';\nimport TextField from '@material-ui/core/TextField';\n\nconst styles = {\n formTextInput: {\n textAlign: 'center',\n },\n numberFiled: {\n '& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button': {\n opacity: 1,\n },\n },\n};\n\n/**\n * classes {Object}\n * label {string} - лейбл поля\n * disabled {boolean} - блокировка поля\n * fieldType {string} - название поля в редактируемой сущности, для ресторана ./config/constants - cardFieldType\n * alignCenter {boolean} - центрирование текста в инпуте\n * handleChangeList {func} - колбек для редактирования сущности\n * maxLength {number} - максимальная длинна строки, по дефолту 255\n * prefix {string} - префикс\n * suffix {string} - окончание\n */\nclass EditField extends Component {\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n type: '',\n initValue: null,\n };\n }\n\n componentDidMount() {\n const {\n value, type, prefix, suffix,\n } = this.props;\n\n if (!_.isNull(value)) {\n this.setState({\n value: `${prefix}${value}${suffix}`,\n initValue: `${prefix}${value}${suffix}`,\n });\n } else {\n this.setState({\n value: `${prefix} ${suffix}`,\n });\n }\n\n this.setState({\n type,\n });\n }\n\n componentWillReceiveProps({ value, type }) {\n if (!_.isNull(value)) {\n this.setState({\n value,\n });\n } else {\n this.setState({\n value: ' ',\n });\n }\n\n this.setState({\n type,\n });\n }\n\n handleChange = (event) => {\n this.setState({ value: event.target.value });\n };\n\n handleSetNewChange = () => {\n const { initValue, value } = this.state;\n const { handleChangeList } = this.props;\n\n if (initValue !== value) {\n handleChangeList(this.state);\n this.setState({\n initValue: value,\n });\n }\n };\n\n render() {\n const { value } = this.state;\n const {\n classes,\n label,\n disabled,\n fieldType,\n alignCenter,\n maxLength,\n endAdornment,\n } = this.props;\n\n const EndAdornmentComp = endAdornment && (\n \n \n { endAdornment }\n \n \n );\n\n return (\n this.handleSetNewChange()}\n onKeyPress={(ev) => {\n if (ev.key === 'Enter') {\n this.handleSetNewChange();\n }\n }}\n InputProps={{\n endAdornment: EndAdornmentComp,\n classes: {\n input: alignCenter && classes.formTextInput,\n },\n inputProps: {\n maxLength,\n min: 0,\n },\n }}\n disabled={disabled}\n />\n );\n }\n}\n\nEditField.propTypes = {\n classes: PropTypes.shape({\n formTextInput: PropTypes.string,\n }).isRequired,\n value: PropTypes.any,\n fieldType: PropTypes.string,\n handleChangeList: PropTypes.func.isRequired,\n endAdornment: PropTypes.any,\n alignCenter: PropTypes.bool,\n disabled: PropTypes.bool,\n maxLength: PropTypes.number,\n label: PropTypes.string,\n type: PropTypes.string,\n prefix: PropTypes.string,\n suffix: PropTypes.string,\n};\n\nEditField.defaultProps = {\n prefix: '',\n suffix: '',\n};\n\nexport default withStyles(styles)(EditField);\n","import React from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport classNames from 'classnames';\n\nconst styles = createStyles({\n section: {\n display: 'flex',\n flex: 1,\n padding: '12px 24px',\n justifyContent: 'space-between',\n alignItems: 'baseline',\n },\n borderBottom: {\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\n },\n});\n\ninterface IProps extends WithStyles {\n children: React.ReactNode;\n borderBottom?: boolean;\n}\n\n/**\n * @param classes {Object}\n * @param children {Object} - Дочерний элемент\n * @param borderBottom - Граница с низу\n */\nconst FieldWrap: React.FC = ({ classes, children, borderBottom }) => (\n
\n { children }\n
\n);\n\nexport default withStyles(styles)(FieldWrap);\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst TrashIcon = (\n \n \n \n \n \n \n);\n\nexport default wrapWithPath(TrashIcon, '-2 -2 22 24');\n","import React from 'react';\n\nimport {\n withStyles,\n createStyles,\n WithStyles,\n Theme,\n} from '@material-ui/core/styles';\nimport Input from '@material-ui/core/Input';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport FormControl from '@material-ui/core/FormControl';\n\nimport locales from '../../../locales';\nimport {\n IFreeDay,\n IScheduleRow,\n TWeekDay,\n} from '../../../types/IScheduleStore';\nimport { sortWeekdays } from '../../../helpers/scheduleHelpers';\nimport TrashIcon from '../Icons/TrashIcon';\n\nconst styles = (theme: Theme) => createStyles({\n formControl: {\n width: '100%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n noLabel: {\n marginTop: theme.spacing(3),\n },\n timeFieldsWrap: {\n width: 120,\n marginLeft: 20,\n },\n timeFields: {\n width: 80,\n },\n});\n\nconst ITEM_HEIGHT = 48;\nconst ITEM_PADDING_TOP = 8;\nconst MenuProps = {\n PaperProps: {\n style: {\n maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP,\n width: 250,\n },\n },\n};\n\ninterface IProps extends WithStyles{\n onChange: (value: string | Array | unknown, type: 'start' | 'end' | 'days') => void;\n onUpdate: () => void;\n onDelete: () => void;\n schedule: IScheduleRow;\n freeDays: Array;\n state: {\n days: Array;\n start: string;\n end: string;\n };\n workTimes: Array;\n}\n\nconst ScheduleRow: React.FC = (props) => {\n const {\n classes,\n schedule,\n freeDays,\n state,\n onChange,\n onUpdate,\n onDelete,\n workTimes,\n } = props;\n\n return (\n
\n \n onChange(e.target.value, 'days')}\n input={}\n renderValue={selected => (\n
\n {sortWeekdays((selected as string[])) // сортируем список дней\n .map((day: string, index: number) => (\n \n {(index !== (selected as string[]).length - 1) // если индекс элемента меньше длины, ставим запятую\n ? `${locales.t(`common.scheduleDays.${day}`)},` // - здесь ставим запятую после дня\n : locales.t(`common.scheduleDays.${day}`)}\n \n ))}\n
\n )}\n inputProps={{\n name: 'days',\n }}\n MenuProps={MenuProps}\n >\n {freeDays.map(day => (\n \n { locales.t(`common.scheduleDays.${day.day}`) }\n \n ))}\n \n
\n \n onChange(e.target.value, 'start')}\n >\n { workTimes.map(time => ({ time })) }\n \n \n \n onChange(e.target.value, 'end')}\n >\n { workTimes.map(time => (\n \n { time === '23:59' ? '00:00' : time }\n )\n ) }\n \n \n \n
\n \n
\n
\n
\n );\n};\n\nexport default withStyles(styles, { withTheme: true })(ScheduleRow);\n","import React, { useState } from 'react';\nimport _ from 'lodash';\n\nimport {\n IFreeDay,\n IScheduleRow,\n TWeekDay,\n} from '../../../types/IScheduleStore';\nimport ScheduleRow from './ScheduleRow';\nimport { workTimes } from '../../../config/constants';\n\ninterface IProps {\n handelUpdateSchedule: (row: IScheduleRow) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: (days: {\n activate: Array,\n deactivate: Array\n }) => void;\n schedule: IScheduleRow;\n freeDays: Array;\n}\n\ninterface IState {\n days: Array;\n start: string;\n end: string;\n}\n\nconst SchedulePeriodRow: React.FC = (props) => {\n const {\n schedule,\n handleUpdateFreeDays,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n freeDays,\n } = props;\n\n const [state, changeState] = useState({\n days: schedule.days,\n start: schedule.start,\n end: schedule.end,\n });\n\n /** @description Отправка экшена на апдейт */\n const onUpdate = () => {\n const initValue = {\n end: schedule.end, start: schedule.start, days: schedule.days,\n };\n const newValue = {\n end: state.end, start: state.start, days: state.days,\n };\n const fieldEmpty = (state.days.length === 0) || !state.start || !state.end;\n\n if (!_.isEqual(initValue, newValue) && !fieldEmpty) {\n handelUpdateSchedule({\n start: state.start,\n end: state.end,\n id: schedule.id,\n days: state.days,\n });\n }\n };\n\n /** @description Редактирование полей время и дни недели */\n const onChange = (value: string | Array | unknown, type: 'start' | 'end' | 'days') => {\n if (type === 'days' && Array.isArray(value)) {\n handleUpdateFreeDays({\n activate: value,\n deactivate: state.days.filter(day => value.indexOf(day) < 0),\n });\n\n changeState({\n ...state,\n [type]: value,\n });\n } else {\n changeState({\n ...state,\n [type]: value,\n });\n }\n };\n\n /** @description Отпарвка экшена на удаление строки и всех выбранных дней */\n const onDelete = () => {\n const { days } = state;\n\n handleUpdateFreeDays({\n activate: [], // В случае удаления периода проставлям выбранным дням что они свободны.\n deactivate: days,\n });\n handleDeleteScheduleRow(schedule);\n };\n\n return (\n \n );\n};\n\nexport default SchedulePeriodRow;\n","import React, { useState, useEffect } from 'react';\nimport _ from 'lodash';\n\nimport {\n IFreeDay,\n IRestaurantWorkTimes,\n IScheduleRow,\n TWeekDay,\n} from '../../../types/IScheduleStore';\nimport { getWorkTimeForAutoBooking, parseTimeToInt } from '../../../helpers/scheduleHelpers';\nimport ScheduleRow from './ScheduleRow';\n\ninterface IProps {\n handelUpdateSchedule: (row: IScheduleRow) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: (days: {\n activate: Array,\n deactivate: Array\n }) => void;\n schedule: IScheduleRow;\n freeDays: Array;\n restaurantWorkTimes?: IRestaurantWorkTimes;\n}\n\ninterface IState {\n days: Array;\n start: string;\n end: string;\n freeDays: Array;\n}\n\nfunction getFreeDays(freeDays: Array, restaurantWorkTimes?: IRestaurantWorkTimes): Array {\n return freeDays.map((d) => {\n if (d.free && restaurantWorkTimes) {\n return {\n ...d,\n free: !!restaurantWorkTimes[d.day] && !!restaurantWorkTimes[d.day].start,\n };\n }\n\n return d;\n });\n}\n\nconst SchedulePeriodRow: React.FC = (props) => {\n const {\n schedule,\n handleUpdateFreeDays,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n freeDays,\n restaurantWorkTimes,\n } = props;\n\n const [workTimes, changeWorkTime] = useState>([schedule.start, schedule.end]);\n const [state, changeState] = useState({\n days: schedule.days,\n start: schedule.start,\n end: schedule.end,\n freeDays: getFreeDays(freeDays, restaurantWorkTimes),\n });\n\n useEffect(() => {\n if (restaurantWorkTimes && !_.isEmpty(restaurantWorkTimes)) {\n const workTimeList = getWorkTimeForAutoBooking(state.days, restaurantWorkTimes);\n\n if (workTimeList.length > 0) {\n const currentStart = parseTimeToInt(state.start);\n const currentEnd = parseTimeToInt(state.end);\n const workStart = parseTimeToInt(workTimeList[0]);\n const workEnd = parseTimeToInt(workTimeList[workTimeList.length - 1]);\n\n changeState({\n ...state,\n freeDays: getFreeDays(freeDays, restaurantWorkTimes),\n start: currentStart > workStart ? state.start : workTimeList[0],\n end: currentEnd < workEnd ? state.end : workTimeList[workTimeList.length - 1],\n });\n } else {\n changeState({\n ...state,\n freeDays: getFreeDays(freeDays, restaurantWorkTimes),\n });\n }\n\n changeWorkTime(workTimeList);\n }\n }, [state.days, restaurantWorkTimes, freeDays]);\n\n /** @description Отправка экшена на апдейт */\n const onUpdate = () => {\n const initValue = {\n end: schedule.end, start: schedule.start, days: schedule.days,\n };\n const newValue = {\n end: state.end, start: state.start, days: state.days,\n };\n const fieldEmpty = (state.days.length === 0) || !state.start || !state.end;\n\n if (!_.isEqual(initValue, newValue) && !fieldEmpty) {\n handelUpdateSchedule({\n start: state.start,\n end: state.end,\n id: schedule.id,\n days: state.days,\n });\n }\n };\n\n /** @description Редактирование полей время и дни недели */\n const onChange = (value: string | Array | unknown, type: 'start' | 'end' | 'days') => {\n if (type === 'days' && Array.isArray(value)) {\n handleUpdateFreeDays({\n activate: value,\n deactivate: state.days.filter(day => value.indexOf(day) < 0),\n });\n\n changeState({\n ...state,\n [type]: value,\n });\n } else {\n changeState({\n ...state,\n [type]: value,\n });\n }\n };\n\n /** @description Отпарвка экшена на удаление строки и всех выбранных дней */\n const onDelete = () => {\n const { days } = state;\n\n handleUpdateFreeDays({\n activate: [], // В случае удаления периода проставлям выбранным дням что они свободны.\n deactivate: days,\n });\n handleDeleteScheduleRow(schedule);\n };\n\n return (\n
\n \n
\n );\n};\n\nexport default SchedulePeriodRow;\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core';\nimport Button from '@material-ui/core/Button';\n\nimport SchedulePeriodRow from './SchedulePeriodRow';\nimport BookingPeriodRow from './BookingPeriodRow';\nimport {\n IFreeDay, IRestaurantWorkTimes,\n IScheduleRow,\n TWeekDay,\n} from '../../../types/IScheduleStore';\nimport locales from '../../../locales';\n\nconst styles = createStyles({\n wrap: {\n padding: '12px 24px',\n },\n marginButton: {\n paddingBottom: 12,\n },\n label: {\n fontSize: 11,\n paddingBottom: 2,\n margin: 0,\n color: 'rgba(0, 0, 0, 0.38)',\n },\n});\n\ninterface IProps extends WithStyles {\n handleAddScheduleRow: () => void;\n handelUpdateSchedule: (row: IScheduleRow) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: (days: {\n activate: Array,\n deactivate: Array\n }) => void;\n scheduleList: Array;\n label?: string;\n freeDays: Array;\n restaurantWorkTimes?: IRestaurantWorkTimes; // Необходим только для расписания приёма автоброни\n}\n\n// TODO Переделать лейбл у компонента, у дефолтного InputLabel не корректные шрифты и паддинги\nconst ScheduleTableComp: React.FC = (props) => {\n const {\n classes,\n label,\n handleAddScheduleRow,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n handleUpdateFreeDays,\n scheduleList,\n freeDays,\n restaurantWorkTimes,\n } = props;\n\n return (\n
\n
\n \n { label }\n \n {\n scheduleList.map(schedule => (\n restaurantWorkTimes ? (\n \n ) : (\n \n )\n ))\n }\n
\n \n { locales.t('reservesSystem.basicInformation.addNewSchedule') }\n \n
\n );\n};\n\nexport default withStyles(styles)(ScheduleTableComp);\n","import React from 'react';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\n\nimport locales from '../../../locales';\nimport Title from '../../Common/Title';\nimport EditField from '../../Common/SelfSavingFields/EditField';\nimport FieldWrap from '../../Common/FieldWrap';\nimport { cardFieldType } from '../../../config/constants';\nimport ScheduleTable from '../../Common/ScheduleTable';\nimport { TRestaurant } from '../../../types/ICabinetStore';\nimport { IFreeDay, IScheduleRow, TWeekDay } from '../../../types/IScheduleStore';\n\nconst styles = () => createStyles({\n contentWrap: {\n padding: '12px 0',\n },\n});\n\ninterface IProps extends WithStyles{\n scheduleList: Array;\n freeDays: Array;\n currentRestaurant: TRestaurant;\n updateRestaurant: (arg: {\n value: string | number, initValue: string, type: any\n }) => void;\n handleAddScheduleRow: () => void;\n handelUpdateSchedule: (newScheduleInfo: any) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: (days: {\n activate: Array,\n deactivate: Array\n }) => void;\n}\n\nconst Index: React.FC = ({\n classes,\n currentRestaurant,\n updateRestaurant,\n scheduleList,\n handleAddScheduleRow,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n handleUpdateFreeDays,\n freeDays,\n}) => (\n \n \n <div className={classes.contentWrap}>\n <FieldWrap>\n <EditField\n label={locales.t('reservesSystem.basicInformation.name')}\n value={currentRestaurant.name}\n handleChangeList={updateRestaurant}\n type={cardFieldType.name}\n maxLength={255}\n />\n </FieldWrap>\n <FieldWrap>\n <EditField\n label={locales.t('reservesSystem.basicInformation.address')}\n value={`${currentRestaurant.address.country}, ${currentRestaurant.address.city}, ${currentRestaurant.address.street}, ${currentRestaurant.address.home}`}\n handleChangeList={updateRestaurant}\n type={cardFieldType.about}\n disabled\n />\n </FieldWrap>\n <ScheduleTable\n label={locales.t('reservesSystem.basicInformation.scheduleList')}\n scheduleList={scheduleList}\n handleAddScheduleRow={handleAddScheduleRow}\n handelUpdateSchedule={handelUpdateSchedule}\n handleDeleteScheduleRow={handleDeleteScheduleRow}\n handleUpdateFreeDays={handleUpdateFreeDays}\n freeDays={freeDays}\n />\n </div>\n </Paper>\n);\n\nexport default withStyles(styles)(Index);\n","import React, { PureComponent } from 'react';\nimport _ from 'lodash';\n\nimport ReservesSystemInfo from '../../components/ReservesSystem/ReservesSystemInfo';\nimport { IProps } from './IReservesSystemInfo';\nimport { IScheduleRow, TWeekDay } from '../../types/IScheduleStore';\n\nclass ReservesSystemInfoCont extends PureComponent<IProps, any> {\n /** @description Запрос расписания ресторана */\n componentDidMount() {\n const { currentRestaurant, getScheduleList } = this.props;\n if (currentRestaurant) {\n getScheduleList(currentRestaurant.id);\n }\n }\n\n /** @description Запрос расписания ресторана в случае изменения текущего ресторана */\n componentDidUpdate(prevProps: any) {\n const { currentRestaurant, getScheduleList } = this.props;\n\n if (currentRestaurant && _.isUndefined(prevProps.currentRestaurant)) {\n getScheduleList(currentRestaurant.id);\n } else if (currentRestaurant && currentRestaurant.id !== prevProps.currentRestaurant.id) {\n getScheduleList(currentRestaurant.id);\n }\n }\n\n /** @description Ручка для экшена для редактирования информации у выбранного ресторана */\n handleUpdateRestaurant = (info: {\n value: string | number, initValue: string, type: any\n }) => {\n const { currentRestaurant, updateRestaurantInfo } = this.props;\n\n if (currentRestaurant) {\n const updateData = {\n ...info,\n currentRestaurant,\n };\n\n updateRestaurantInfo(updateData);\n }\n };\n\n /** @description Ручка экшена для добавления новой строки в расписание */\n handleAddScheduleRow = () => {\n const { addNewScheduleRow } = this.props;\n addNewScheduleRow('restaurant');\n };\n\n /** @description Ручка экшена для редактирования строки расписания */\n handelUpdateSchedule = (newScheduleInfo: any) => {\n const { updateSchedule } = this.props;\n updateSchedule(newScheduleInfo, 'restaurant');\n };\n\n /** @description Ручка экшена для удаления строки расписания */\n handleDeleteScheduleRow = (row: IScheduleRow) => {\n const { deleteScheduleRow } = this.props;\n deleteScheduleRow(row, 'restaurant');\n };\n\n /** @description Ручка для изменения свободных дней в расписании */\n handleUpdateFreeDays = (days: {\n activate: Array<TWeekDay>,\n deactivate: Array<TWeekDay>\n }) => {\n const { updateFreeDays } = this.props;\n updateFreeDays(days, 'restaurant');\n };\n\n render() {\n const {\n currentRestaurant,\n scheduleList,\n freeDays,\n } = this.props;\n\n if (!currentRestaurant) {\n return null;\n }\n\n return (\n <ReservesSystemInfo\n currentRestaurant={currentRestaurant}\n scheduleList={scheduleList}\n freeDays={freeDays}\n updateRestaurant={this.handleUpdateRestaurant}\n handleAddScheduleRow={this.handleAddScheduleRow}\n handelUpdateSchedule={this.handelUpdateSchedule}\n handleDeleteScheduleRow={this.handleDeleteScheduleRow}\n handleUpdateFreeDays={this.handleUpdateFreeDays}\n />\n );\n }\n}\n\nexport default ReservesSystemInfoCont;\n","import { createSelector } from 'reselect';\nimport { IAppStore } from '../../types/IAppStore';\nimport { sortWeekdays } from '../../helpers/scheduleHelpers';\n\nexport const freeDaysSelectors = createSelector([\n (state: IAppStore) => state.schedule.restaurantFreeDays,\n], freeDays => (Object.keys(freeDays).map(d => ({\n day: d,\n free: freeDays[d],\n}))\n));\n\nexport const rowsSelector = createSelector([\n (state: IAppStore) => state.schedule.restaurantRows,\n], rows => rows.map(r => ({ ...r, days: sortWeekdays(r.days) })));\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport {\n updateRestaurantInfo,\n} from '../../actions/restaurantsInfo/RestaurantsInfoActions';\nimport ReservesSystemInfoCont from './ReservesSystemInfoCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IDispatchProps, IStateProps } from './IReservesSystemInfo';\nimport {\n addNewScheduleRow,\n deleteScheduleRow,\n getScheduleList,\n updateFreeDays,\n updateSchedule,\n} from '../../actions/schedules/SchedulesAction';\nimport { freeDaysSelectors, rowsSelector } from './selectors';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n restaurantList: state.cabinet.restaurantList,\n currentRestaurant: state.cabinet.currentRestaurant,\n scheduleList: rowsSelector(state),\n freeDays: freeDaysSelectors(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n updateRestaurantInfo,\n getScheduleList,\n addNewScheduleRow,\n updateSchedule,\n deleteScheduleRow,\n updateFreeDays,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemInfoCont);\n","import React, { Component } from 'react';\nimport * as PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport { withStyles } from '@material-ui/core';\n\nconst styles = {\n formTextInput: {\n textAlign: 'center',\n },\n};\n\n/**\n * @classes {Object}\n * @value {string || number} - текущее значение\n * @items {Array<any>} - список доступных зачений\n * @disabled {boolean} - блокировка поля\n * @fieldType {string} - название поля в редактируемой сущности, для ресторана ./config/constants - cardFieldType\n * @handleChangeList {func} - колбек для редактирования сущности\n * @alignCenter {boolean} - центровка текста в поле\n*/\nclass SelectItemLIst extends Component {\n constructor(props) {\n super(props);\n this.state = {\n value: '',\n type: '',\n initValue: null,\n };\n }\n\n componentDidMount() {\n const { active, type } = this.props;\n\n if (!_.isNull(active)) {\n this.setState({\n value: active,\n initValue: active,\n });\n } else {\n this.setState({\n value: ' ',\n });\n }\n\n this.setState({\n type,\n });\n }\n\n componentWillReceiveProps(nextProps) {\n if (!_.isNull(nextProps.active)) {\n this.setState({\n value: nextProps.active,\n });\n } else {\n this.setState({\n value: '',\n });\n }\n\n this.setState({\n type: nextProps.type,\n });\n }\n\n handleChange = (event) => {\n this.setState({ value: event.target.value });\n };\n\n handleSetNewChange = () => {\n if (this.state.initValue !== this.state.value) {\n this.props.handleChangeList(this.state);\n this.setState({\n initValue: this.state.value,\n });\n }\n };\n\n render() {\n const {\n classes, label, items, disabled, alignCenter,\n } = this.props;\n\n return (\n <FormControl fullWidth>\n { label && <InputLabel htmlFor=\"age-simple\">{label}</InputLabel> }\n <Select\n className={alignCenter && classes.formTextInput}\n disabled={!!disabled}\n onBlur={() => this.handleSetNewChange()}\n fullWidth\n value={this.state.value}\n onChange={this.handleChange}\n >\n {items.map((items, i) => (\n <MenuItem key={i} value={items}>\n {items}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n }\n}\n\nSelectItemLIst.propTypes = {\n value: PropTypes.any,\n type: PropTypes.any,\n handleChangeList: PropTypes.func.isRequired,\n disabled: PropTypes.bool,\n fieldType: PropTypes.string,\n alignCenter: PropTypes.bool,\n label: PropTypes.string,\n active: PropTypes.string,\n items: PropTypes.array,\n};\n\nexport default withStyles(styles)(SelectItemLIst);\n","import React, { Fragment } from 'react';\nimport _ from 'lodash';\n\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport FormControl from '@material-ui/core/FormControl';\n\nimport FieldWrap from '../../Common/FieldWrap';\nimport ScheduleTable from '../../Common/ScheduleTable';\nimport locales from '../../../locales';\nimport { IFreeDay, IRestaurantWorkTimes, IScheduleRow } from '../../../types/IScheduleStore';\nimport CustomTooltip from '../../Common/CustomTooltip';\n\ninterface IProps {\n isActiveRestaurantSchedule?: boolean;\n scheduleList: Array<IScheduleRow>;\n label?: string;\n freeDays: Array<IFreeDay>;\n handleAddScheduleRow: () => void;\n handelUpdateSchedule: (row: IScheduleRow) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: any;\n handleSwitchReserveSchedule: any;\n restaurantWorkTimes: IRestaurantWorkTimes;\n}\n\n/**\n * @param classes\n * @param handleAddScheduleRow - Ручка для добавления строки расписания\n * @param handelUpdateSchedule - Ручка для редактирования строки расписания\n * @param handleDeleteScheduleRow - Ручка для удаления строки расписания\n * @param handleUpdateFreeDays - Ручка для обновления списка дней для которых нету расписания\n * @param handleSwitchReserveSchedule - Ручка для переключения типа приёма расписания приёма резервов\n */\nconst AutoBookingSwitch: React.FC<IProps> = ({\n scheduleList,\n freeDays,\n label,\n isActiveRestaurantSchedule,\n handleAddScheduleRow,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n handleUpdateFreeDays,\n handleSwitchReserveSchedule,\n restaurantWorkTimes,\n}) => {\n const activeType = isActiveRestaurantSchedule === undefined ? ''\n : isActiveRestaurantSchedule\n ? locales.t('settings.reserveSchedule.restaurantSchedule')\n : locales.t('settings.reserveSchedule.customSettings');\n\n const disable = _.isEmpty(restaurantWorkTimes);\n\n return (\n <Fragment>\n <FieldWrap>\n <FormControl fullWidth>\n <InputLabel>{ label }</InputLabel>\n <Select\n disabled={isActiveRestaurantSchedule === undefined}\n onChange={handleSwitchReserveSchedule}\n value={activeType}\n >\n {\n [\n locales.t('settings.reserveSchedule.restaurantSchedule'),\n locales.t('settings.reserveSchedule.customSettings'),\n ]\n .map((items, i) => (\n <MenuItem\n disabled={disable ? i === 1 : false}\n key={i}\n value={items}\n >\n {items}\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n <CustomTooltip marginLeft content=\"\" />\n </FieldWrap>\n {\n (isActiveRestaurantSchedule === false)\n && (\n <ScheduleTable\n scheduleList={scheduleList}\n handleAddScheduleRow={handleAddScheduleRow}\n handelUpdateSchedule={handelUpdateSchedule}\n handleDeleteScheduleRow={handleDeleteScheduleRow}\n handleUpdateFreeDays={handleUpdateFreeDays}\n freeDays={freeDays}\n restaurantWorkTimes={restaurantWorkTimes}\n />\n )\n }\n </Fragment>\n );\n};\n\nexport default AutoBookingSwitch;\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper/Paper';\n\nimport SettingField from '../../Common/FieldWrap';\nimport SelectItemLIst from '../../Common/SelfSavingFields/SelectItemLIst';\nimport { autoBooking, cardFieldType } from '../../../config/constants';\nimport locales from '../../../locales';\nimport CustomTooltip from '../../Common/CustomTooltip';\nimport EditField from '../../Common/SelfSavingFields/EditField';\nimport ReserveSchedule from './ReserveSchedule';\nimport { TRestaurant } from '../../../types/ICabinetStore';\nimport { TNewInfo } from '../../../types/IRestaurantInfoStore';\nimport {\n IFreeDay,\n IRestaurantWorkTimes,\n IScheduleRow,\n TWeekDay,\n} from '../../../types/IScheduleStore';\nimport Title from '../../Common/Title';\n\ninterface IProps {\n currentRestaurant: TRestaurant;\n isActiveRestaurantSchedule?: boolean;\n handleSwitchBookingProcessor: (data: TNewInfo) => void;\n handleUpdateRestaurantSettings: (data: TNewInfo) => void;\n handleAddScheduleRow: () => void;\n handelUpdateSchedule: (newScheduleInfo: any) => void;\n handleDeleteScheduleRow: (row: IScheduleRow) => void;\n handleUpdateFreeDays: (days: {\n activate: Array<TWeekDay>,\n deactivate: Array<TWeekDay>\n }) => void;\n handleSwitchReserveSchedule: () => void;\n scheduleList: Array<IScheduleRow>;\n freeDays: Array<IFreeDay>;\n restaurantWorkTimes: IRestaurantWorkTimes;\n}\n\nconst index: React.FC<IProps> = ({\n currentRestaurant,\n handleSwitchBookingProcessor,\n handleUpdateRestaurantSettings,\n handleAddScheduleRow,\n handelUpdateSchedule,\n handleDeleteScheduleRow,\n handleUpdateFreeDays,\n handleSwitchReserveSchedule,\n freeDays,\n isActiveRestaurantSchedule,\n scheduleList,\n restaurantWorkTimes,\n}) => {\n const bookingProcessorText = currentRestaurant.settings.bookingProcessor === autoBooking.api\n ? locales.t('settings.api')\n : locales.t('settings.cashBox');\n return (\n <Paper elevation={3}>\n <Title borderBottom text={locales.t('settings.title')} />\n <div style={{ padding: '12px 0' }}>\n <SettingField>\n <SelectItemLIst\n type={cardFieldType.bookingProcessor}\n label={locales.t('settings.autoBookingSwitchTitle')}\n active={bookingProcessorText}\n items={[locales.t('settings.api'), locales.t('settings.cashBox')]}\n handleChangeList={handleSwitchBookingProcessor}\n />\n <CustomTooltip marginLeft content=\"\" />\n </SettingField>\n <SettingField>\n <EditField\n label={locales.t('settings.bookingDuration.title')}\n value={Math.floor(currentRestaurant.settings.bookingDuration / 60)}\n handleChangeList={handleUpdateRestaurantSettings}\n type={cardFieldType.bookingDuration}\n fieldType=\"number\"\n />\n <CustomTooltip marginLeft content=\"\" />\n </SettingField>\n <ReserveSchedule\n label={locales.t('settings.reserveSchedule.title')}\n isActiveRestaurantSchedule={isActiveRestaurantSchedule}\n freeDays={freeDays}\n scheduleList={scheduleList}\n handleAddScheduleRow={handleAddScheduleRow}\n handelUpdateSchedule={handelUpdateSchedule}\n handleDeleteScheduleRow={handleDeleteScheduleRow}\n handleUpdateFreeDays={handleUpdateFreeDays}\n handleSwitchReserveSchedule={handleSwitchReserveSchedule}\n restaurantWorkTimes={restaurantWorkTimes}\n />\n </div>\n </Paper>\n );\n};\n\nexport default index;\n","import React, { Component } from 'react';\n\nimport locales from '../../locales';\nimport { autoBooking } from '../../config/constants';\nimport { IProps } from './IReservesSystemSettings';\nimport { TNewInfo } from '../../types/IRestaurantInfoStore';\nimport { IScheduleRow, TWeekDay } from '../../types/IScheduleStore';\nimport ReservesSystemSettings from '../../components/ReservesSystem/ReservesSystemSettings';\n\nclass ReservesSystemSettingsCont extends Component<IProps> {\n /** @description Ручка для переключения приёма брони */\n handleSwitchBookingProcessor = (data: TNewInfo) => {\n const { currentRestaurant, switchBookingProcessor } = this.props;\n const processorType = data.value === locales.t('settings.api')\n ? autoBooking.api\n : autoBooking.cashBox;\n\n if (currentRestaurant) {\n switchBookingProcessor({\n restaurantId: currentRestaurant.id,\n processorType,\n });\n }\n };\n\n /** @description Ручка для редактирования полей ресторана */\n handleUpdateRestaurantSettings = (data: TNewInfo) => {\n const { currentRestaurant, updateRestaurantInfo } = this.props;\n\n if (currentRestaurant) {\n const updateData = {\n ...data,\n currentRestaurant,\n };\n\n updateRestaurantInfo(updateData);\n }\n };\n\n /** @description Ручка экшена для добавления новой строки в расписание */\n handleAddScheduleRow = () => {\n const { addNewScheduleRow } = this.props;\n addNewScheduleRow('booking');\n };\n\n /** @description Ручка экшена для редактирования строки расписания */\n handelUpdateSchedule = (newScheduleInfo: any) => {\n const { updateSchedule } = this.props;\n updateSchedule(newScheduleInfo, 'booking');\n };\n\n /** @description Ручка экшена для удаления строки расписания */\n handleDeleteScheduleRow = (row: IScheduleRow) => {\n const { deleteScheduleRow } = this.props;\n deleteScheduleRow(row, 'booking');\n };\n\n /** @description Ручка для изменения свободных дней в расписании */\n handleUpdateFreeDays = (days: {\n activate: Array<TWeekDay>,\n deactivate: Array<TWeekDay>\n }) => {\n const { updateFreeDays } = this.props;\n updateFreeDays(days, 'booking');\n };\n\n /** @description Ручка для переключение типа графика приёма резервов */\n handleSwitchReserveSchedule = () => {\n const { switchReserveSchedule, isActiveRestaurantSchedule } = this.props;\n switchReserveSchedule(!isActiveRestaurantSchedule);\n };\n\n render() {\n const {\n freeDays,\n scheduleList,\n isActiveRestaurantSchedule,\n currentRestaurant,\n restaurantWorkTimes,\n } = this.props;\n\n if (!currentRestaurant) {\n return null;\n }\n\n return (\n <ReservesSystemSettings\n currentRestaurant={currentRestaurant}\n isActiveRestaurantSchedule={isActiveRestaurantSchedule}\n handleSwitchBookingProcessor={this.handleSwitchBookingProcessor}\n handleUpdateRestaurantSettings={this.handleUpdateRestaurantSettings}\n handleAddScheduleRow={this.handleAddScheduleRow}\n handelUpdateSchedule={this.handelUpdateSchedule}\n handleDeleteScheduleRow={this.handleDeleteScheduleRow}\n handleUpdateFreeDays={this.handleUpdateFreeDays}\n handleSwitchReserveSchedule={this.handleSwitchReserveSchedule}\n freeDays={freeDays}\n scheduleList={scheduleList}\n restaurantWorkTimes={restaurantWorkTimes}\n />\n );\n }\n}\n\nexport default ReservesSystemSettingsCont;\n","import { createSelector } from 'reselect';\nimport { IAppStore } from '../../types/IAppStore';\nimport { sortWeekdays } from '../../helpers/scheduleHelpers';\n\nexport const freeDaysSelectors = createSelector([\n (state: IAppStore) => state.schedule.bookingFreeDays,\n], freeDays => (Object.keys(freeDays).map(d => ({\n day: d,\n free: freeDays[d],\n}))\n));\n\nexport const rowsSelector = createSelector([\n (state: IAppStore) => state.schedule.bookingRows,\n], rows => rows.map(r => ({ ...r, days: sortWeekdays(r.days) })));\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport { IAppActions } from '../../types/IAppActions';\nimport { IDispatchProps, IStateProps } from './IReservesSystemSettings';\nimport { IAppStore } from '../../types/IAppStore';\nimport {\n addNewScheduleRow,\n deleteScheduleRow,\n getScheduleList,\n updateFreeDays,\n updateSchedule,\n} from '../../actions/schedules/SchedulesAction';\nimport { switchBookingProcessor } from '../../actions/home/HomeActions';\nimport { updateRestaurantInfo } from '../../actions/restaurantsInfo/RestaurantsInfoActions';\nimport { switchReserveSchedule } from '../../actions/restaurantsSettings/RestaurantsSettingsActions';\nimport ReservesSystemSettingsCont from './ReservesSystemSettingsCont';\nimport { freeDaysSelectors, rowsSelector } from './selectors';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n isActiveRestaurantSchedule: state.reservesSystemSettings.isActiveRestaurantSchedule,\n currentRestaurant: state.cabinet.currentRestaurant,\n scheduleList: rowsSelector(state),\n freeDays: freeDaysSelectors(state),\n restaurantWorkTimes: state.schedule.restaurantWorkTimes,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n getScheduleList,\n switchBookingProcessor,\n updateRestaurantInfo,\n addNewScheduleRow,\n updateSchedule,\n deleteScheduleRow,\n updateFreeDays,\n switchReserveSchedule,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemSettingsCont);\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst flashActive = (\n <Fragment>\n <g id=\"_x30_27---Flash\">\n <circle fill=\"#6ae9c5\" cx=\"256\" cy=\"256\" r=\"256\" />\n <path fill=\"#323232\" d=\"M200.5,78.7L133.4,280c-0.5,1.6-0.3,3.3,0.7,4.6c1,1.3,2.5,2.1,4.2,2.1h88.3\n\t\t\tc1.6,0,3.2,0.8,4.1,2.1s1.2,3,0.8,4.6l-42.2,140.3c-0.7,2.3,0.3,4.8,2.3,6c2.1,1.2,4.7,0.8,6.3-1l179.6-204.8\n\t\t\tc1.3-1.5,1.7-3.6,0.9-5.5s-2.6-3-4.7-3h-81.5c-1.7,0-3.3-0.8-4.2-2.3s-1.1-3.2-0.5-4.8l53-132.5c1.3-3.2,0.9-6.7-1-9.5\n\t\t\ts-5.1-4.5-8.5-4.5H210.2C205.8,71.7,201.9,74.5,200.5,78.7L200.5,78.7z\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapSvgPath(flashActive, '0 0 512 512');\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst flashInactive = (\n <Fragment>\n <g id=\"_x30_27---Flash\">\n <circle fill=\"#B3B5B5\" cx=\"256\" cy=\"256\" r=\"256\" />\n <path fill=\"#919191\" d=\"M200.5,78.7L133.4,280c-0.5,1.6-0.3,3.3,0.7,4.6c1,1.3,2.5,2.1,4.2,2.1h88.3\n\t\t\tc1.6,0,3.2,0.8,4.1,2.1s1.2,3,0.8,4.6l-42.2,140.3c-0.7,2.3,0.3,4.8,2.3,6c2.1,1.2,4.7,0.8,6.3-1l179.6-204.8\n\t\t\tc1.3-1.5,1.7-3.6,0.9-5.5s-2.6-3-4.7-3h-81.5c-1.7,0-3.3-0.8-4.2-2.3s-1.1-3.2-0.5-4.8l53-132.5c1.3-3.2,0.9-6.7-1-9.5\n\t\t\ts-5.1-4.5-8.5-4.5H210.2C205.8,71.7,201.9,74.5,200.5,78.7L200.5,78.7z\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapSvgPath(flashInactive, '0 0 512 512');\n","import React, { Fragment, useState } from 'react';\n\nimport {\n TableRow,\n TableCell,\n Typography,\n IconButton,\n} from '@material-ui/core';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core/styles';\nimport Circle from '@material-ui/icons/FiberManualRecord';\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox';\nimport DropUp from '@material-ui/icons/ArrowDropUp';\nimport DropDown from '@material-ui/icons/ArrowDropDown';\n\nimport EditField from '../Common/SelfSavingFields/EditField';\nimport { parseTableHall } from '../../helpers/bookingHelpers';\nimport { ITable, THall } from '../../types/IRestaurantTablesStore';\nimport FlashActive from '../Common/Icons/FlashActive';\nimport FlashInactive from '../Common/Icons/FlashInactive';\nimport { customErrorShackBar } from '../../actions/snackbars/SnackBarsActions';\nimport locales from '../../locales';\n\nconst styles = createStyles({\n hallRow: {\n backgroundColor: '#f6f9f9',\n },\n tableListItemCheckBox: {\n padding: 0,\n },\n});\n\ninterface OwnProps extends WithStyles<typeof styles> {\n first: boolean;\n hall: THall;\n handleUpdateTable: (item: ITable | Array<ITable>) => void;\n customErrorShackBar: typeof customErrorShackBar;\n isAutoBookingEnabled: boolean;\n}\n\ntype Props = OwnProps;\n\n/**\n * @param hallList Список столов ресторана\n * @param handleUpdateTable Ручка для редактирования колчества мест у стола\n */\nconst TableLIstItem: React.FC<Props> = ({\n classes,\n first,\n hall,\n handleUpdateTable,\n customErrorShackBar,\n isAutoBookingEnabled,\n}) => {\n const [open, changeList] = useState<boolean>(first);\n\n const handleOpenList = () => {\n changeList(!open);\n };\n\n const CircleActive = <Circle color=\"secondary\" style={{ fontSize: 28 }} />;\n const CircleInactive = <Circle color=\"primary\" style={{ fontSize: 28 }} />;\n const IconFlashActive = <FlashActive style={{ fontSize: 20 }} />;\n const IconFlashInactive = <FlashInactive style={{ fontSize: 20 }} />;\n\n /** @description Редактирование вместимости стола */\n const handleChangeCapacity = (newData: any, table: ITable) => {\n handleUpdateTable({\n ...table,\n capacity: parseInt(newData.value),\n });\n };\n\n /** @description Переключение типа бронирования для всех столов */\n const handleChangeAllBooking = (type: 'isBookingAllowed' | 'isAutoBookingAllowed') => {\n const newState = !hall[type];\n\n if (type === 'isAutoBookingAllowed' && !isAutoBookingEnabled) {\n customErrorShackBar(locales.t('settings.errors.updateTables.booking'));\n } else if (type === 'isBookingAllowed' && !newState) {\n const updatedTables = hall.tables.map(i => ({\n ...i,\n [type]: newState,\n isAutoBookingAllowed: false,\n }));\n\n handleUpdateTable(updatedTables);\n } else {\n const updatedTables = hall.tables.map((i) => {\n if (type === 'isAutoBookingAllowed' && newState) {\n return {\n ...i,\n [type]: i.isBookingAllowed ? newState : false,\n };\n }\n\n return {\n ...i,\n [type]: newState,\n };\n });\n\n handleUpdateTable(updatedTables);\n }\n };\n\n /** @description Переключение типа брониварования для выбранного стола */\n const handleChangeBooking = (\n bookingType: 'isAutoBookingAllowed' | 'isBookingAllowed', table: ITable,\n ) => {\n const newState = !table[bookingType];\n\n if (bookingType === 'isAutoBookingAllowed' && !isAutoBookingEnabled) {\n customErrorShackBar(locales.t('settings.errors.updateTables.booking'));\n } else if (bookingType === 'isBookingAllowed' && !newState) {\n handleUpdateTable({\n ...table,\n [bookingType]: !table[bookingType],\n isAutoBookingAllowed: false,\n });\n } else {\n handleUpdateTable({\n ...table,\n [bookingType]: !table[bookingType],\n });\n }\n };\n\n return (\n <Fragment>\n <TableRow className={classes.hallRow}>\n <TableCell colSpan={2}>\n <Typography variant=\"subtitle2\">\n { hall.hall }\n </Typography>\n </TableCell>\n <TableCell align=\"center\" padding=\"none\">\n <Checkbox\n className={classes.tableListItemCheckBox}\n onClick={event => event.stopPropagation()}\n icon={CircleActive}\n checkedIcon={CircleInactive}\n checked={hall.isBookingAllowed}\n onChange={() => handleChangeAllBooking('isBookingAllowed')}\n />\n </TableCell>\n <TableCell align=\"right\" padding=\"none\">\n <div style={{ display: 'flex', justifyContent: 'center' }}>\n <Checkbox\n className={classes.tableListItemCheckBox}\n onClick={event => event.stopPropagation()}\n icon={IconFlashInactive}\n checkedIcon={IconFlashActive}\n checked={hall.isAutoBookingAllowed}\n onChange={() => handleChangeAllBooking('isAutoBookingAllowed')}\n />\n <div style={{ position: 'relative' }}>\n <IconButton\n style={{ position: 'absolute', left: 10, top: -12 }}\n onClick={handleOpenList}\n >\n { open ? <DropUp /> : <DropDown /> }\n </IconButton>\n </div>\n </div>\n </TableCell>\n </TableRow>\n {\n open && hall.tables.map(item => (\n <TableRow key={item.hall + item.number} tabIndex={-1}>\n <TableCell padding=\"default\">\n {`${parseTableHall(item.hall)} ${item.number}`}\n </TableCell>\n <TableCell padding=\"default\" align=\"center\">\n <EditField\n type={item.number}\n value={item.capacity}\n handleChangeList={(newTableData: any) => handleChangeCapacity(newTableData, item)}\n alignCenter\n />\n </TableCell>\n <TableCell align=\"center\" padding=\"none\">\n <Checkbox\n className={classes.tableListItemCheckBox}\n icon={CircleActive}\n checkedIcon={CircleInactive}\n checked={item.isBookingAllowed}\n onChange={() => handleChangeBooking('isBookingAllowed', item)}\n />\n </TableCell>\n <TableCell align=\"center\" padding=\"none\">\n <Checkbox\n className={classes.tableListItemCheckBox}\n disabled={!item.isBookingAllowed}\n icon={IconFlashInactive}\n checkedIcon={IconFlashActive}\n checked={item.isAutoBookingAllowed}\n onChange={() => handleChangeBooking('isAutoBookingAllowed', item)}\n />\n </TableCell>\n </TableRow>\n ))\n }\n </Fragment>\n );\n};\n\nexport default withStyles(styles)(TableLIstItem);\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableHead from '@material-ui/core/TableHead';\n\nimport TableLIstItem from './TableLIstItem';\nimport locales from '../../locales';\nimport Title from '../Common/Title';\nimport { ITable, THallList } from '../../types/IRestaurantTablesStore';\nimport { customErrorShackBar } from '../../actions/snackbars/SnackBarsActions';\n\ninterface IProps {\n hallList: THallList;\n handleUpdateTable: (item: ITable | Array<ITable>) => void;\n customErrorShackBar: typeof customErrorShackBar;\n isAutoBookingEnabled: boolean;\n}\n\n/**\n * @param classes\n * @param hallList Список столов ресторана\n * @param handleUpdateTable Ручка для редактирования колчества мест у стола\n */\nconst Index: React.FC<IProps> = ({\n handleUpdateTable,\n hallList,\n customErrorShackBar,\n isAutoBookingEnabled,\n}) => (\n <Paper elevation={3}>\n <Title\n text={locales.t('settings.tableList.title')}\n borderBottom\n helps={locales.t('settings.tableList.tooltip')}\n />\n <Table>\n <TableHead>\n <TableRow>\n <TableCell style={{ width: '30%' }} padding=\"default\">\n {locales.t('settings.tableList.number')}\n </TableCell>\n <TableCell padding=\"default\" align=\"center\">\n {locales.t('settings.tableList.capacity')}\n </TableCell>\n <TableCell padding=\"default\" align=\"center\">\n {locales.t('settings.tableList.availableForBooking')}\n </TableCell>\n <TableCell padding=\"none\" align=\"center\">\n {locales.t('settings.tableList.autoBooking')}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {\n hallList.map((h, i) => (\n <TableLIstItem\n key={h.hall}\n hall={h}\n first={i === 0}\n handleUpdateTable={handleUpdateTable}\n customErrorShackBar={customErrorShackBar}\n isAutoBookingEnabled={isAutoBookingEnabled}\n />\n ))\n }\n <TableRow>\n <TableCell style={{ height: 54 }}>...</TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Paper>\n);\n\nexport default Index;\n","import React, { PureComponent } from 'react';\n\nimport TableList from '../../components/Tables';\nimport { IProps } from './IResevesSystemTables';\nimport { ITable } from '../../types/IRestaurantTablesStore';\n\nclass SettingsCont extends PureComponent<IProps> {\n componentDidMount() {\n const { currentRestaurant } = this.props;\n if (currentRestaurant) {\n this.handleGetAllTablesList(currentRestaurant.id);\n }\n }\n\n /** @description Запрос списка столов для в случае изменения выбранного рестоарана */\n componentDidUpdate(prevProps: IProps): void {\n const { currentRestaurant } = this.props;\n if (currentRestaurant && prevProps.currentRestaurant !== currentRestaurant) {\n this.handleGetAllTablesList(currentRestaurant.id);\n }\n }\n\n /** @description Ручка для экшена для получения всех столов для выбранного ресторана */\n handleGetAllTablesList = (id: number) => {\n const { getTablesForSettings } = this.props;\n getTablesForSettings(id);\n };\n\n /** @description Ручка для экшена для редактирования количества мест у выбранного стола */\n handleUpdateTable = (table: ITable | Array<ITable>) => {\n const {\n currentRestaurant, updateRestaurantTable,\n } = this.props;\n\n if (currentRestaurant && table) {\n updateRestaurantTable(table);\n }\n };\n\n render() {\n const {\n hallList,\n customErrorShackBar,\n isAutoBookingEnabled,\n } = this.props;\n\n return (\n <TableList\n hallList={hallList}\n handleUpdateTable={this.handleUpdateTable}\n customErrorShackBar={customErrorShackBar}\n isAutoBookingEnabled={isAutoBookingEnabled}\n />\n );\n }\n}\n\nexport default SettingsCont;\n","import { createSelector } from 'reselect';\nimport _ from 'lodash';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { ITable, THallList } from '../../types/IRestaurantTablesStore';\n\n/** @description Получение списко залов и столов */\nexport const selectorGetHallList = createSelector([\n (state: IAppStore) => state.tables.tableList,\n], (tables) => {\n const sortTables = _.sortBy(tables, ['hall', i => parseInt(i.number)]);\n const groupToHall = sortTables.reduce((hallList: THallList, table: ITable) => {\n if (table && table.hall) {\n const hallIndex = _.findIndex(hallList, i => i.hall === table.hall);\n\n if (hallIndex !== -1) {\n return hallList.map(\n (hall, i) => {\n if (i === hallIndex) {\n return {\n ...hall,\n tables: hall.tables.concat(table),\n isBookingAllowed: hall.isBookingAllowed && table.isBookingAllowed\n ? table.isBookingAllowed\n : false,\n };\n }\n\n return hall;\n },\n );\n }\n\n return hallList.concat([{\n hall: table.hall,\n tables: [table],\n isAutoBookingAllowed: table.isAutoBookingAllowed,\n isBookingAllowed: table.isBookingAllowed,\n }]);\n }\n\n return [];\n }, []);\n\n return groupToHall.map((hall) => {\n const allBookingAndAutoBooking = hall.tables.filter(\n t => t.isBookingAllowed && t.isAutoBookingAllowed,\n );\n const onlyBooking = hall.tables.filter(t => t.isBookingAllowed);\n\n return {\n ...hall,\n isAutoBookingAllowed: allBookingAndAutoBooking.length > 0\n && _.isEqual(allBookingAndAutoBooking, onlyBooking),\n };\n });\n});\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport ReservesSystemTablesCont from './ReservesSystemTablesCont';\n\nimport {\n getTablesForSettings,\n updateRestaurantTable,\n} from '../../actions/restaurantsTables/RestaurantsTables';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './IResevesSystemTables';\nimport { IAppActions } from '../../types/IAppActions';\nimport { customErrorShackBar } from '../../actions/snackbars/SnackBarsActions';\nimport { selectorGetHallList } from './selectors';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const { currentRestaurant } = state.cabinet;\n const isAutoBookingEnabled = currentRestaurant\n ? currentRestaurant.settings.isAutoBookingEnabled\n : false;\n\n return {\n currentRestaurant,\n hallList: selectorGetHallList(state),\n isAutoBookingEnabled,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n getTablesForSettings,\n updateRestaurantTable,\n customErrorShackBar,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemTablesCont);\n","import React, { useState, useEffect, ChangeEvent } from 'react';\n\nimport {\n Grid,\n makeStyles,\n TextField,\n Switch,\n Paper,\n Typography,\n} from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport { TRestaurantSettings } from '../../../types/ICabinetStore';\nimport { TNewInfo } from '../../../types/IRestaurantInfoStore';\nimport { cardFieldType } from '../../../config/constants';\nimport Title from '../../Common/Title';\n\ninterface IProps {\n settings: TRestaurantSettings;\n onUpdate: (data: TNewInfo) => void;\n}\n\nconst useStyles = makeStyles((theme) => {\n const spacing = theme.spacing(3);\n\n return {\n paperContent: {\n padding: `0 ${spacing}px ${spacing}px ${spacing}px`,\n },\n blockLabelContainer: {\n display: 'flex',\n alignItems: 'center',\n },\n blockLabel: {\n flexGrow: 1,\n marginRight: spacing,\n },\n description: {\n margin: 0,\n fontSize: 12,\n '& li': {\n paddingBottom: theme.spacing(1),\n },\n },\n tgLabel: {\n display: 'block',\n marginBottom: theme.spacing(2),\n },\n counter: {\n textAlign: 'right',\n },\n };\n});\n\nconst ReservesSystemAdditionalNotificationsComponent: React.FC<IProps> = ({\n settings,\n onUpdate,\n}) => {\n const { isEnabled, usernames } = settings.telegramNotificationSettings;\n const classes = useStyles();\n const tgRules = locales.t('settings.additionalNotifications.tg.rules').split('\\n');\n // const inputRef = React.createRef<HTMLInputElement>();\n\n const [inputValue, setInputValue] = useState<string>('');\n const [accounts, setAccounts] = useState<Array<string>>([]);\n const [accountCounter, setAccountCounter] = useState<number>(0);\n const accountsLimit = 50;\n\n const toggleTg = () => {\n onUpdate({\n type: cardFieldType.isTelegramNotificationEnabled,\n value: !isEnabled,\n });\n };\n\n // useEffect(() => {\n // if (inputRef.current) {\n // inputRef.current.focus();\n // }\n // }, [isEnabled]);\n\n const normalizeAccounts = (value_: string|Array<string>): Array<string> => {\n const value: Array<string> = (typeof value_ === 'string')\n ? value_.split('\\n')\n : value_;\n return value\n .map(x => x.trim())\n .filter(x => x)\n .map(x => x.startsWith('@') ? x : `@${x}`);\n };\n\n useEffect(() => {\n const accounts = changeAccounts(usernames);\n setInputValue(accounts.join('\\n'));\n }, [usernames]);\n\n const changeAccounts = (value: undefined | string | Array<string>): Array<string> => {\n const accounts = (value && normalizeAccounts(value)) || [];\n setAccounts(accounts);\n setAccountCounter(accounts.length);\n\n return accounts;\n };\n\n const changeInputValue = (event: ChangeEvent<HTMLInputElement|HTMLTextAreaElement>) => {\n const { value } = event.target;\n setInputValue(value);\n changeAccounts(value);\n };\n\n const submitAccounts = () => {\n const usernames_ = (usernames && usernames.join('\\n')) || '';\n const accounts_ = accounts\n .map(x => x.replace(/^@/, '').trim())\n .filter(x => x);\n\n if (usernames_ === accounts_.join('\\n')) {\n return;\n }\n\n if (accounts_.length > accountsLimit) {\n return;\n }\n\n onUpdate({\n type: cardFieldType.telegramNotificationUsernames,\n value: accounts_,\n });\n };\n\n return (\n <Paper elevation={3}>\n <Title\n text={locales.t('settings.additionalNotifications.title')}\n subTitle={locales.t('settings.additionalNotifications.desc')}\n />\n <div className={classes.paperContent}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <div className={classes.blockLabelContainer}>\n <Typography variant=\"subtitle2\" className={classes.blockLabel}>\n Telegram\n </Typography>\n <Switch\n color=\"primary\"\n onChange={toggleTg}\n checked={isEnabled}\n />\n </div>\n </Grid>\n {isEnabled && (<>\n <Grid item xs={12} sm={6}>\n <Typography variant=\"caption\" className={classes.tgLabel}>\n {locales.t('settings.additionalNotifications.tg.title')}\n </Typography>\n <TextField\n // inputRef={inputRef}\n // rows={accountCounter > 7 ? 7 : undefined}\n rows={7}\n multiline\n placeholder={locales.t('settings.additionalNotifications.tg.desc')}\n fullWidth\n helperText={`${accountCounter}/${accountsLimit}`}\n FormHelperTextProps={{\n className: classes.counter,\n error: accountCounter > accountsLimit,\n }}\n onChange={changeInputValue}\n onBlur={submitAccounts}\n value={inputValue}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <ol className={classes.description}>{tgRules.map((rule: string, i: number) =>\n <li key={i} dangerouslySetInnerHTML={{__html: rule}} />\n )}</ol>\n </Grid>\n </>)}\n </Grid>\n </div>\n </Paper>\n )\n};\n\nexport default ReservesSystemAdditionalNotificationsComponent;\n","import React, { PureComponent } from 'react';\n\nimport ReservesSystemAdditionalNotificationsComponent from '../../components/ReservesSystem/ReservesSystemAdditionalNotifications';\nimport { IProps } from './IReservesSystemAdditionalNotifications';\nimport { TNewInfo } from '../../types/IRestaurantInfoStore';\n\nclass ReservesSystemAdditionalNotificationsContainer extends PureComponent<IProps> {\n onUpdate = (data: TNewInfo) => {\n const { currentRestaurant, updateRestaurantInfo } = this.props;\n if (!currentRestaurant) {\n return;\n }\n\n updateRestaurantInfo({\n ...data,\n currentRestaurant,\n });\n };\n\n render() {\n const { currentRestaurant } = this.props;\n if (!currentRestaurant) {\n return null;\n }\n\n return (\n <ReservesSystemAdditionalNotificationsComponent\n settings={currentRestaurant.settings}\n onUpdate={this.onUpdate}\n />\n );\n }\n}\n\nexport default ReservesSystemAdditionalNotificationsContainer;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IStateProps, IDispatchProps } from './IReservesSystemAdditionalNotifications';\nimport ReservesSystemAdditionalNotificationsContainer from './ReservesSystemAdditionalNotificationsContainer';\nimport { updateRestaurantInfo } from '../../actions/restaurantsInfo/RestaurantsInfoActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const { currentRestaurant } = state.cabinet;\n return { currentRestaurant };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({ updateRestaurantInfo }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemAdditionalNotificationsContainer);\n","import React from 'react';\n\nimport EditField from '../../Common/SelfSavingFields/EditField';\nimport {\n cardFieldType,\n} from '../../../config/constants';\nimport { TRestaurantSettings } from '../../../types/ICabinetStore';\nimport { TNewInfo } from '../../../types/IRestaurantInfoStore';\nimport FieldWrap from '../../Common/FieldWrap';\nimport CustomTooltip from '../../Common/CustomTooltip';\nimport locales from '../../../locales';\n\ninterface IProps {\n currentRestaurantSettings: TRestaurantSettings;\n handleUpdateRestaurantSettings: (data: TNewInfo) => void;\n}\n\n/**\n * @param classes {Object}\n * @param handleUpdateRestaurantSettings {Function} - Ручка для редактирования полей в ресторане\n * @param currentRestaurantSettings {Object} - Настройки ресторана\n */\nconst AutoBookingFields: React.FC<IProps> = ({\n handleUpdateRestaurantSettings,\n currentRestaurantSettings,\n}) => (\n <div style={{ padding: '12px 0' }}>\n <FieldWrap>\n <EditField\n label={locales.t('settings.isAutoBookingEnabled.disableBooking.title')}\n endAdornment={locales.t('settings.isAutoBookingEnabled.disableBooking.desc')}\n value={currentRestaurantSettings.autoBookingMinFreeTables}\n handleChangeList={handleUpdateRestaurantSettings}\n type={cardFieldType.autoBookingMinFreeTables}\n fieldType=\"number\"\n />\n <CustomTooltip marginLeft content=\"\" />\n </FieldWrap>\n\n <FieldWrap>\n <EditField\n label={locales.t('settings.isAutoBookingEnabled.maxSizeBookingTable.title')}\n endAdornment={locales.t('settings.isAutoBookingEnabled.maxSizeBookingTable.desc')}\n value={currentRestaurantSettings.autoBookingMaxNumberEmptySeats}\n handleChangeList={handleUpdateRestaurantSettings}\n type={cardFieldType.autoBookingMaxNumberEmptySeats}\n fieldType=\"number\"\n />\n <CustomTooltip marginLeft content=\"\" />\n </FieldWrap>\n\n <FieldWrap>\n <EditField\n label={locales.t('settings.isAutoBookingEnabled.table.title')}\n endAdornment={locales.t('settings.isAutoBookingEnabled.table.desc')}\n value={currentRestaurantSettings.autoBookingMinTimeElapsed}\n handleChangeList={handleUpdateRestaurantSettings}\n type={cardFieldType.autoBookingMinTimeElapsed}\n fieldType=\"number\"\n />\n <CustomTooltip marginLeft content=\"\" />\n </FieldWrap>\n </div>\n);\n\nexport default AutoBookingFields;\n","import React from 'react';\n\nimport Switch from '@material-ui/core/Switch';\nimport Paper from '@material-ui/core/Paper';\n\nimport { cardFieldType } from '../../../config/constants';\nimport AutoBookingFields from './AutoBookingFields';\nimport locales from '../../../locales';\nimport { TRestaurantSettings } from '../../../types/ICabinetStore';\nimport { TNewInfo } from '../../../types/IRestaurantInfoStore';\nimport Title from '../../Common/Title';\n\ninterface IProps {\n currentRestaurantSettings: TRestaurantSettings;\n handleUpdateRestaurantSettings: (data: TNewInfo) => void;\n}\n\nconst AutoBookingEnabledComp: React.FC<IProps> = ({\n currentRestaurantSettings,\n handleUpdateRestaurantSettings,\n}) => (\n <Paper\n elevation={3}\n style={{ background: 'linear-gradient(110deg, rgba(252,245,234,1) 0%, rgba(255,255,255,1) 100%)' }}\n >\n <div>\n <Title\n spaceBetween\n text={locales.t('settings.isAutoBookingEnabled.title')}\n subTitle={locales.t('settings.isAutoBookingEnabled.desc')}\n >\n <Switch\n color=\"primary\"\n checked={currentRestaurantSettings.isAutoBookingEnabled}\n onChange={() => handleUpdateRestaurantSettings({\n value: !currentRestaurantSettings.isAutoBookingEnabled,\n type: cardFieldType.isAutoBookingEnabled,\n })}\n />\n \n \n {\n currentRestaurantSettings.isAutoBookingEnabled\n && (\n \n )\n }\n \n);\n\nexport default AutoBookingEnabledComp;\n","import React, { PureComponent } from 'react';\n\nimport AutoBookingEnabled from '../../components/ReservesSystem/AutoBookingEnabled';\nimport { IProps, IState } from './IReservesSystemAutoBooking';\nimport { TNewInfo } from '../../types/IRestaurantInfoStore';\n\nclass SettingsCont extends PureComponent {\n /** @description Ручка для редактирования полей ресторана */\n handleUpdateRestaurantSettings = (data: TNewInfo) => {\n const { currentRestaurant, updateRestaurantInfo } = this.props;\n\n if (currentRestaurant) {\n const updateData = {\n ...data,\n currentRestaurant,\n };\n\n updateRestaurantInfo(updateData);\n }\n };\n\n render() {\n const {\n currentRestaurant,\n } = this.props;\n\n // TODO Убрать после правки в роутах, этот раздел должен быть заблокирован если нет ресторана\n if (!currentRestaurant) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default SettingsCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IStateProps, IDispatchProps } from './IReservesSystemAutoBooking';\nimport ReservesSystemAutoBookingCont from './ReservesSystemAutoBookingCont';\nimport {\n updateRestaurantInfo,\n} from '../../actions/restaurantsInfo/RestaurantsInfoActions';\nimport { switchBookingProcessor } from '../../actions/home/HomeActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const { currentRestaurant } = state.cabinet;\n const isAutoBookingEnabled = currentRestaurant\n ? currentRestaurant.settings.isAutoBookingEnabled\n : false;\n\n return {\n currentRestaurant,\n isAutoBookingEnabled,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n updateRestaurantInfo,\n switchBookingProcessor,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemAutoBookingCont);\n","import Konva from 'konva';\n// Source: https://konvajs.org/docs/posts/Position_vs_Offset.html\n\nconst rotatePoint = ({ x, y }: { x: number; y: number }, rad: number) => {\n const rcos = Math.cos(rad);\n const rsin = Math.sin(rad);\n return { x: x * rcos - y * rsin, y: y * rcos + x * rsin };\n};\n\n/**\n * Rotate node around it center, instead of top-left.\n * will work for shapes with top-left origin, like rectangle\n * Note: don't use `rotation` property, otherwise you can't get difference\n * @param node\n * @param rotation\n */\nexport default function rotateAroundCenter(\n node: Konva.Node | null,\n rotation: number,\n) {\n if (!node) return;\n\n // current rotation origin (0, 0) relative to\n // desired origin - center (node.width() / 2, node.height() / 2)\n const topLeft = { x: -node.width() / 2, y: -node.height() / 2 };\n // @ts-ignore\n const current = rotatePoint(topLeft, Konva.getAngle(node.rotation()));\n // @ts-ignore\n const rotated = rotatePoint(topLeft, Konva.getAngle(rotation));\n const dx = rotated.x - current.x;\n const dy = rotated.y - current.y;\n\n node.rotation(rotation);\n node.x(node.x() + dx);\n node.y(node.y() + dy);\n}\n","import Konva from 'konva';\n\nconst getOffset = (height: number, textHeight: number): number => -(height / 2) + textHeight / 2;\n\n\n/**\n * Center text within { width, height }\n * @param textNode\n * @param { width: number, height : number }\n */\nexport function textCenterBox(\n textNode: Konva.Text | null,\n { width, height }: {\n width: number, height : number\n },\n) {\n if (!textNode || !width || !height) return;\n\n const offsetX = getOffset(width, textNode.width());\n const offsetY = getOffset(height, textNode.height());\n textNode.offsetX(offsetX);\n textNode.offsetY(offsetY);\n}\n/**\n * Center text within Shape\n * @param textNode\n * @param shapeNode\n */\nexport function textCenter(\n textNode: Konva.Text | null,\n shapeNode: Konva.Node | null,\n) {\n if (!textNode || !shapeNode) return;\n\n const offsetX = getOffset(shapeNode.width(), textNode.width());\n const offsetY = getOffset(shapeNode.height(), textNode.height());\n textNode.offsetX(offsetX);\n textNode.offsetY(offsetY);\n}\n\nexport default {\n textCenterBox,\n textCenter,\n};\n","import Konva from 'konva';\nimport { reduce } from 'lodash';\n\nimport { TSectionAdaptSchema } from '../../../../types/IRestaurantTablesSchemaStore';\nimport { ITable } from '../../../../types/IRestaurantTablesStore';\n\nexport const SCALE_MAX: number = 4;\nexport const SCALE_MIN: number = 0.5;\nexport const SCALE_STEP: number = 1.1;\n\nexport const getScaleToFit = (\n data: TSectionAdaptSchema,\n width: number,\n height: number,\n): number => {\n const bgImage: any = data.elements.find(d => d.type === 'image');\n if (!width) return 1;\n const getScale = (imageWidth: number, imageHeight: number) => {\n const scaleX = width / imageWidth;\n const scaleY = height / imageHeight;\n return scaleY < scaleX ? scaleY : scaleX;\n };\n if (bgImage) {\n return getScale(bgImage.element.width, bgImage.element.height);\n }\n return getScale(data.width, data.height);\n};\n\nexport const scaleUp = (scale: number) => scale * SCALE_STEP;\nexport const scaleDown = (scale: number) => scale / SCALE_STEP;\n\nexport const handleZoomChange = (stage: Konva.Stage, scaleTo: (scale: number) => void) => {\n const onWheel = (e: any) => {\n e.evt.preventDefault();\n const currentScale = stage.scaleX();\n const pointer = stage.getPointerPosition();\n\n if (pointer) {\n const scale = e.evt.deltaY > 0 ? scaleUp(currentScale) : scaleDown(currentScale);\n\n // prevent further upscale/downscale\n if (e.evt.deltaY > 0 ? currentScale > SCALE_MAX : currentScale < SCALE_MIN) return;\n\n\n const mousePointTo = {\n x: pointer.x / currentScale - stage.x() / currentScale,\n y: pointer.y / currentScale - stage.y() / currentScale,\n };\n const newPos = {\n x: -(mousePointTo.x - pointer.x / scale) * scale,\n y: -(mousePointTo.y - pointer.y / scale) * scale,\n };\n\n scaleTo(scale);\n stage.position(newPos);\n stage.batchDraw();\n }\n };\n stage.on('wheel', onWheel);\n\n return () => {\n stage.off('wheel', onWheel);\n };\n};\n\n/**\n * @description: get distance between 2 points, e.g. for multi touch event\n * original source https://konvajs.org/docs/sandbox/Multi-touch_Scale_Stage.html\n * @param p1\n * @param p2\n */\nexport function getDistance(p1: Konva.Vector2d | null, p2: Konva.Vector2d | null): number {\n if (!p1 || !p2) return 0;\n return Math.sqrt(((p2.y - p1.y) ** 2) + ((p2.x - p1.x) ** 2));\n}\n\n/**\n * original source https://konvajs.org/docs/sandbox/Multi-touch_Scale_Stage.html\n * @param p1\n * @param p2\n */\nexport function getCenter(p1: Konva.Vector2d | null, p2: Konva.Vector2d | null): Konva.Vector2d {\n if (!p1 || !p2) return { x: 0, y: 0 };\n\n return {\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n };\n}\n\n/**\n * @description: resize Stage via touch events\n * @param stage\n * @param scaleTo\n */\nexport const handleTouchMove = (stage: Konva.Stage, scaleTo: (scale: number) => void) => {\n let lastCenter: Konva.Vector2d | null = null;\n let lastDist = 0;\n\n const setDefaults = () => {\n lastDist = 0;\n lastCenter = null;\n };\n\n /**\n * original source https://konvajs.org/docs/sandbox/Multi-touch_Scale_Stage.html\n * @param e\n */\n const onTouchMove = (e: any) => {\n e.evt.preventDefault();\n const [touch1, touch2] = e.evt.touches || [];\n\n if (touch1 && touch2) {\n // if the stage was under Konva's drag&drop\n // we need to stop it, and implement our own pan logic with two pointers\n if (stage.isDragging()) {\n stage.stopDrag();\n }\n\n const p1 = {\n x: touch1.clientX,\n y: touch1.clientY,\n };\n const p2 = {\n x: touch2.clientX,\n y: touch2.clientY,\n };\n\n if (!lastCenter) {\n lastCenter = getCenter(p1, p2);\n return;\n }\n const newCenter = getCenter(p1, p2);\n const dist = getDistance(p1, p2);\n\n if (!lastDist) {\n lastDist = dist;\n }\n\n // local coordinates of center point\n const pointTo = {\n x: (newCenter.x - stage.x()) / stage.scaleX(),\n y: (newCenter.y - stage.y()) / stage.scaleX(),\n };\n\n const scale: number = stage.scaleX() * (dist / lastDist);\n stage.scaleX(scale);\n stage.scaleY(scale);\n\n // calculate new position of the stage\n const dx = newCenter.x - lastCenter.x;\n const dy = newCenter.y - lastCenter.y;\n\n const newPos = {\n x: newCenter.x - pointTo.x * scale + dx,\n y: newCenter.y - pointTo.y * scale + dy,\n };\n\n stage.position(newPos);\n stage.batchDraw();\n\n lastDist = dist;\n lastCenter = newCenter;\n }\n };\n\n const onTouchMoveEnd = () => {\n const currentScale = stage.scaleX();\n scaleTo(currentScale);\n setDefaults();\n };\n\n stage.on('touchmove', onTouchMove);\n stage.on('touchend', onTouchMoveEnd);\n\n return () => {\n stage.off('touchmove', onTouchMove);\n stage.off('touchend', onTouchMoveEnd);\n };\n};\n\nexport const setCursor = (type: string) => (e: Konva.KonvaEventObject) => {\n const stage = e.target.getStage();\n if (stage) {\n const container = stage.container();\n container.style.cursor = type;\n }\n};\n\nexport const genAvailableTableMap = (tables: ITable[]) => reduce(tables, (result: {\n [key: string]: ITable\n}, value) => ({\n ...result,\n [String(value.id)]: value,\n}), {});\n\nexport const hasCapacity = (table: ITable, persons?: number): boolean => (!persons ? true : table.capacity >= persons);\n","import React from 'react';\nimport { Group, Rect, Text } from 'react-konva';\n\nimport Konva from 'konva';\nimport {\n TSectionTableScheme,\n} from '../../../../types/IRestaurantTablesSchemaStore';\nimport { ITable } from '../../../../types/IRestaurantTablesStore';\nimport rotateAroundCenter from './rotateHelper';\nimport { textCenter } from './textCenterHelper';\nimport { setCursor } from './utils';\n\nconst colorsMap = {\n selected: '#6ae9c5',\n disabled: '#707070',\n regular: '#ffffff',\n};\n\ninterface IProps {\n data: TSectionTableScheme;\n handleSelect: (table: ITable) => void;\n active?: boolean;\n disabled?: boolean;\n}\n\nfunction TableElement(props: IProps) {\n const {\n handleSelect, data, active, disabled,\n } = props;\n const {\n x, y, angle, width, height,\n } = data;\n const text = String(data.table.number);\n\n const shapeRef = React.useRef(null);\n const textRef = React.useRef(null);\n React.useEffect(() => {\n textCenter(textRef.current, shapeRef.current);\n }, [\n textRef, shapeRef,\n ]);\n React.useEffect(() => {\n rotateAroundCenter(shapeRef.current, angle);\n }, [shapeRef, angle]);\n\n const onClick = (e: Konva.KonvaEventObject) => {\n e.evt.preventDefault();\n handleSelect(data.table);\n };\n\n const getFill = (): string => {\n if (active) return colorsMap.selected;\n if (disabled) return colorsMap.disabled;\n\n return colorsMap.regular;\n };\n\n const setCursorPointer = (e: Konva.KonvaEventObject) => {\n if (disabled) {\n setCursor('default')(e);\n } else {\n setCursor('pointer')(e);\n }\n };\n\n return (\n \n \n \n \n );\n}\n\nexport default TableElement;\n","import React from 'react';\nimport { Image } from 'react-konva';\nimport useImage from 'use-image';\nimport rotateAroundCenter from './rotateHelper';\n\nimport { TSectionImageScheme } from '../../../../types/IRestaurantTablesSchemaStore';\n\ninterface IProps {\n data: TSectionImageScheme;\n}\n\nfunction ImageElement(props: IProps) {\n const {\n data,\n } = props;\n const {\n x, y, angle, image, ...imageProps\n } = data;\n if (!image) return null;\n\n const [imageData] = useImage(image.accessUrl);\n const shapeRef = React.useRef(null);\n React.useEffect(() => {\n rotateAroundCenter(shapeRef.current, angle);\n }, [shapeRef, angle]);\n\n return (\n \n );\n}\n\nexport default ImageElement;\n","import React from 'react';\nimport { Rect } from 'react-konva';\n\nimport { TSectionElementScheme } from '../../../../types/IRestaurantTablesSchemaStore';\nimport { getColor } from '../../../../helpers/scheme/schemeHelpers';\nimport rotateAroundCenter from './rotateHelper';\n\ninterface IProps {\n data: TSectionElementScheme;\n handleSelect?: (data: TSectionElementScheme) => void;\n}\n\nfunction RectElement(props: IProps) {\n const { handleSelect, data } = props;\n const {\n x, y, angle, width, height, color,\n } = data;\n\n const shapeRef = React.useRef(null);\n React.useEffect(() => {\n rotateAroundCenter(shapeRef.current, angle);\n }, [shapeRef, angle]);\n\n const onClick = () => {\n if (typeof handleSelect === 'function') handleSelect(data);\n };\n\n return (\n \n );\n}\n\nexport default RectElement;\n","import React from 'react';\nimport { Ellipse } from 'react-konva';\n\nimport { TSectionElementScheme } from '../../../../types/IRestaurantTablesSchemaStore';\nimport { getColor } from '../../../../helpers/scheme/schemeHelpers';\nimport rotateAroundCenter from './rotateHelper';\n\ninterface IProps {\n data: TSectionElementScheme;\n handleSelect?: (data: TSectionElementScheme) => void;\n}\n\nfunction EllipseElements(props: IProps) {\n const {\n handleSelect, data,\n } = props;\n const {\n x, y, angle, width, height, color,\n } = data;\n\n const shapeRef = React.useRef(null);\n React.useEffect(() => {\n rotateAroundCenter(shapeRef.current, angle);\n }, [shapeRef, angle]);\n\n const onClick = () => {\n if (typeof handleSelect === 'function') handleSelect(data);\n };\n\n return (\n \n );\n}\n\nexport default EllipseElements;\n","import React from 'react';\nimport { Text } from 'react-konva';\nimport { getColor } from '../../../../helpers/scheme/schemeHelpers';\n\nimport {\n TSectionMarkScheme,\n} from '../../../../types/IRestaurantTablesSchemaStore';\nimport rotateAroundCenter from './rotateHelper';\nimport { textCenterBox } from './textCenterHelper';\n\ninterface IProps {\n data: TSectionMarkScheme;\n}\n\nfunction TableElement(props: IProps) {\n const { data } = props;\n const {\n x, y, text, angle, color, font, width, height,\n } = data;\n\n const textRef = React.useRef(null);\n React.useEffect(() => {\n rotateAroundCenter(textRef.current, angle);\n }, [textRef, angle]);\n React.useEffect(() => {\n textCenterBox(textRef.current, { width, height });\n }, [textRef, width, height]);\n\n return (\n \n );\n}\n\nexport default TableElement;\n","import { createStyles } from '@material-ui/core/styles';\n\nconst styles = createStyles({\n wrap: {\n position: 'relative',\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n width: '100%',\n height: '100%',\n backgroundColor: 'white',\n overflow: 'hidden',\n },\n buttonRight: {\n position: 'absolute',\n display: 'flex',\n flexDirection: 'column',\n top: '16px',\n right: '16px',\n },\n buttonGroup: {\n marginTop: '4px',\n },\n buttonShadow: {\n boxShadow: '0 -3px 6px 0 rgba(0, 0, 0, 0.16)',\n },\n button: {\n '&:disabled': {\n color: 'rgba(50, 50, 50, 0.4)',\n },\n '&:hover': {\n backgroundColor: '#ffffff',\n },\n zIndex: 10,\n backgroundColor: '#ffffff',\n border: 'solid 0.5px #c5c5c5',\n color: '#323232',\n },\n});\n\nexport default styles;\n","import React, {\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Layer, Stage } from 'react-konva';\nimport Konva from 'konva';\nimport classNames from 'classnames';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport Increase from '@material-ui/icons/Add';\nimport Decrease from '@material-ui/icons/Remove';\nimport FilterCenterFocusIcon from '@material-ui/icons/FilterCenterFocus';\nimport { withStyles, WithStyles } from '@material-ui/core/styles';\n\nimport TableElement from './TableElement';\nimport ImageElement from './ImageElement';\nimport RectElement from './RectElement';\nimport EllipseElement from './EllipseElement';\nimport TextElement from './TextElement';\n\nimport {\n genAvailableTableMap,\n getScaleToFit,\n handleTouchMove,\n handleZoomChange,\n hasCapacity,\n SCALE_MAX,\n SCALE_MIN,\n scaleDown,\n scaleUp,\n} from './utils';\n\nimport { TActiveTables } from '../../../../types/IReserveModalStore';\nimport { ITable } from '../../../../types/IRestaurantTablesStore';\nimport {\n TSectionAdaptSchema,\n TSectionElementScheme,\n TSectionImageScheme,\n TSectionMarkScheme,\n TSectionTableScheme,\n} from '../../../../types/IRestaurantTablesSchemaStore';\n\nimport styles from './styles';\n\n// to avoid issue with multi-touch scaling\nKonva.hitOnDragEnabled = true;\n\nconst StyledButton = withStyles({\n root: {\n minWidth: 38,\n maxWidth: 38,\n },\n})(Button);\n\ninterface IProps extends WithStyles {\n handleSelect?: (table: ITable) => void;\n tables: ITable[],\n activeTables: TActiveTables;\n data: TSectionAdaptSchema;\n customWidthOffset?: boolean;\n persons: number;\n readOnly?: boolean;\n}\n\nfunction RestaurantSchema(props: IProps) {\n const {\n classes, data, tables, activeTables, handleSelect, customWidthOffset, persons,\n readOnly,\n } = props;\n\n const [width, setWidth] = useState(0);\n const [height, setHeight] = useState(0);\n const [scale, setScale] = useState(0.5);\n const [offsetWidth, setOffsetWidth] = useState(250);\n\n const availableTables = useMemo(() => genAvailableTableMap(tables), [tables]);\n\n const divEl = useRef(null);\n const shapeRef = useRef(null);\n\n const scaleTo = (scale: number) => {\n setScale(scale);\n if (shapeRef.current) {\n const stage = shapeRef.current;\n // reset position after dragging/scaling\n stage.setPosition({ x: 0, y: 0 });\n stage.batchDraw();\n }\n };\n\n const scaleToFit = () => {\n scaleTo(getScaleToFit(data, width, height));\n };\n\n const onTableSelect = (data: ITable) => {\n const table = tables.find(t => t.id === data.id);\n if (table && typeof handleSelect === 'function') handleSelect(table);\n };\n\n // on mount\n useLayoutEffect(() => {\n if (divEl.current) {\n const { width, height } = divEl.current.getBoundingClientRect();\n scaleTo(getScaleToFit(data, width, height));\n }\n\n const resize = () => {\n // Determine rectangle on screen\n if (divEl.current) {\n const { width, height } = divEl.current.getBoundingClientRect();\n setHeight(height);\n setWidth(width);\n setOffsetWidth(divEl.current.offsetLeft);\n }\n };\n\n resize();\n\n window.addEventListener('resize', resize);\n return () => window.removeEventListener('resize', resize);\n }, []);\n\n\n // handle zoom change\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n if (shapeRef.current) {\n return handleZoomChange(shapeRef.current, setScale);\n }\n }, [shapeRef.current]);\n // handle touch move\n // eslint-disable-next-line consistent-return\n useEffect(() => {\n if (shapeRef.current) {\n return handleTouchMove(shapeRef.current, setScale);\n }\n }, [shapeRef.current]);\n\n // handle data change\n useEffect(scaleToFit, [data, width]);\n\n\n return (\n \n
\n \n \n \n \n scaleTo(scaleUp(scale))}\n disabled={scale >= SCALE_MAX}\n >\n \n \n scaleTo(scaleDown(scale))}\n disabled={scale <= SCALE_MIN}\n >\n \n \n \n
\n \n \n { data.elements.map(({ type, element }: any, i: number) => {\n switch (type) {\n case 'table': {\n const data: TSectionTableScheme = element;\n const { table }: { table: ITable } = element;\n // checking for enough capacity behind a table\n const isCapable = hasCapacity(table, persons);\n const selected = !!activeTables[table.id];\n return (\n \n );\n }\n case 'rect': {\n const data: TSectionElementScheme = element;\n return (\n \n );\n }\n case 'ellipse': {\n const data: TSectionElementScheme = element;\n return (\n \n );\n }\n case 'image': {\n const data: TSectionImageScheme = element;\n return (\n \n );\n }\n case 'text': {\n const data: TSectionMarkScheme = element;\n return ;\n }\n default: {\n return null;\n }\n }\n }) }\n \n \n \n );\n}\n\nexport default withStyles(styles)(RestaurantSchema);\n","import React from 'react';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport Switch from '@material-ui/core/Switch';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport Grid from '@material-ui/core/Grid/Grid';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\n\nimport locales from '../../../locales';\nimport { cardFieldType } from '../../../config/constants';\nimport { TRestaurant } from '../../../types/ICabinetStore';\nimport { TNewInfo } from '../../../types/IRestaurantInfoStore';\nimport { TSectionAdaptSchema } from '../../../types/IRestaurantTablesSchemaStore';\nimport { IPropsSelectOption } from '../../../reducers/selectors';\nimport RestaurantSchema from '../../Reservations/View/RestaurantSchema';\nimport FieldWrap from '../../Common/FieldWrap';\n\n\nconst styles = () => createStyles({\n contentMap: {\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n height: 'calc(100vh - 226px)',\n overflow: 'hidden',\n padding: '0 24px',\n },\n contentWrap: {\n padding: '16px 0',\n flexGrow: 1,\n },\n fieldBlock: {\n padding: '0 12px',\n },\n fieldWrap: {\n padding: '12px',\n },\n fieldLabelStart: {\n marginLeft: '0',\n },\n msgWrap: {\n height: '85%',\n width: '100%',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n});\n\ninterface IProps extends WithStyles {\n currentRestaurant: TRestaurant;\n handleUpdateRestaurantSettings: (arg: TNewInfo) => void;\n handleSwitchSection: any;\n sectionId?: number;\n sections: Array;\n schema?: TSectionAdaptSchema;\n}\n\nconst Index: React.FC = ({\n classes,\n currentRestaurant,\n handleUpdateRestaurantSettings,\n handleSwitchSection,\n sectionId,\n sections,\n schema,\n}) => (\n \n
\n \n \n \n \n \n { locales.t('common.reserveModal.sections') }\n \n \n {\n sections.map((t, i) => (\n \n { t.label }\n \n ))\n }\n \n \n \n \n \n \n {\n handleUpdateRestaurantSettings({\n value: checked,\n type: cardFieldType.isSchemasEnabled,\n });\n }}\n name={cardFieldType.isSchemasEnabled}\n color=\"primary\"\n />\n )}\n label={locales.t('restaurantSchema.note.updateInfo')}\n style={{ color: '#aaaaaa' }}\n />\n \n \n \n \n \n { (schema && currentRestaurant.settings.isSchemasEnabled) ? (\n \n ) : (\n
\n { currentRestaurant.settings.isSchemasEnabled\n ? {locales.t('restaurantSchema.note.empty')}\n : {locales.t('restaurantSchema.note.schemasDisabled')} }\n
\n ) }\n
\n
\n
\n
\n);\n\nexport default withStyles(styles)(Index);\n","import React, { PureComponent } from 'react';\n\nimport ReservesSystemSchema\n from '../../components/ReservesSystem/ReservesSystemSchema';\nimport { IProps } from './IReservesSystemInfo';\nimport { TNewInfo } from '../../types/IRestaurantInfoStore';\n\nclass ReservesSystemSchemaCont extends PureComponent {\n componentDidMount() {\n const { currentRestaurant } = this.props;\n if (currentRestaurant) {\n this.handleGetSectionsList(currentRestaurant.id);\n }\n }\n\n /** @description Запрос списка столов для в случае изменения выбранного рестоарана */\n componentDidUpdate(prevProps: IProps): void {\n const { currentRestaurant } = this.props;\n if (currentRestaurant && prevProps.currentRestaurant !== currentRestaurant) {\n this.handleGetSectionsList(currentRestaurant.id);\n }\n }\n\n /** @description Ручка для экшена для получения всех залов для выбранного ресторана */\n handleGetSectionsList = (id: number) => {\n const { getSections } = this.props;\n getSections(id);\n };\n\n /** @description Ручка для редактирования полей ресторана */\n handleUpdateRestaurantSettings = (data: TNewInfo) => {\n const { currentRestaurant, updateRestaurantInfo } = this.props;\n\n if (currentRestaurant) {\n const updateData = {\n ...data,\n currentRestaurant,\n };\n\n updateRestaurantInfo(updateData);\n }\n };\n\n handleSwitchSection = (\n event: React.ChangeEvent<{ name?: string; value: number }>,\n ) => {\n const { switchSectionId } = this.props;\n if (event && event.target) {\n switchSectionId(event.target.value);\n }\n };\n\n render() {\n const {\n currentRestaurant, sections,\n sectionId, schema,\n } = this.props;\n\n if (!currentRestaurant) {\n return null;\n }\n\n return (\n \n );\n }\n}\n\nexport default ReservesSystemSchemaCont;\n","import { createSelector } from 'reselect';\nimport { selectorTableSections, selectorTableSectionsAvailable } from '../../reducers/selectors';\nimport {\n TSectionAdaptSchema,\n TRestaurantSectionAdapt,\n} from '../../types/IRestaurantTablesSchemaStore';\nimport { IAppStore } from '../../types/IAppStore';\n\nexport const selectorId = (state: IAppStore) => state.reservesSystemSettings.sectionId;\n\n/** @description Текущая схема зала */\nexport const selectorSectionSchema = createSelector([\n selectorTableSectionsAvailable,\n selectorId,\n], (\n sections: Array | void,\n sectionId: number | void,\n): TSectionAdaptSchema | void => {\n if (typeof sectionId === 'number' && Number(sectionId) > 0) {\n const section = (sections || []).find(d => d.id === sectionId);\n return section ? section.schema : undefined;\n }\n return undefined;\n});\n\n/** @description Схема зала для настроек, где нужно ее показывать вне зависимости от доступности столов */\nexport const selectorSettingsSectionSchema = createSelector([\n selectorTableSections,\n selectorId,\n], (\n sections: Array | void,\n sectionId: number | void,\n): TSectionAdaptSchema | undefined => {\n if (sectionId) {\n const section = (sections || []).find(d => d.id === sectionId);\n if (section) {\n return section.schema;\n }\n }\n\n return undefined;\n});\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport {\n updateRestaurantInfo,\n} from '../../actions/restaurantsInfo/RestaurantsInfoActions';\nimport ReservesSystemSchemaCont from './ReservesSystemSchemaCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IDispatchProps, IStateProps } from './IReservesSystemInfo';\n\nimport { selectorSectionOptions } from '../../reducers/selectors';\nimport { selectorId, selectorSettingsSectionSchema } from './selectors';\nimport { getSections } from '../../actions/restaurant/RestaurantActions';\nimport { switchSectionId } from '../../actions/restaurantsSettings/RestaurantsSettingsActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n currentRestaurant: state.cabinet.currentRestaurant,\n sections: selectorSectionOptions(state),\n sectionId: selectorId(state),\n // schema: selectorSectionSchema(state),\n schema: selectorSettingsSectionSchema(state),\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n updateRestaurantInfo,\n getSections,\n switchSectionId,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemSchemaCont);\n","import React from 'react';\n\nimport Delete from '@material-ui/icons/Delete';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../../locales';\nimport { errorColor } from '../../../theme';\n\nconst styles = () => createStyles({\n paperStyle: {\n height: 224,\n justifyContent: 'center',\n alignItems: 'center',\n display: 'flex',\n },\n contentWrap: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n padding: '0 24px',\n textAlign: 'center',\n },\n icon: {\n width: 64,\n height: 64,\n boxShadow: '0 2px 2px 0 rgba(0, 0, 0, 0.24)',\n backgroundColor: '#f8dfe0',\n borderRadius: '50%',\n position: 'absolute',\n top: '-80px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n // TODO Оформить по людски\n button: {\n marginTop: 24,\n color: errorColor,\n border: '1px solid rgb(220, 0, 78)',\n '&:hover': {\n border: '1px solid #C42126',\n },\n '&:focus': {\n border: '1px solid #C42126',\n },\n },\n});\n\ninterface IProps extends WithStyles {\n handleDeleteRestaurant: () => void;\n}\n\nconst DeleteRestaurantMessages: React.FC = ({ classes, handleDeleteRestaurant }) => (\n \n
\n
\n \n
\n \n { locales.t('settings.deleteRestaurant.title') }\n \n \n { locales.t('settings.deleteRestaurant.desc') }\n \n \n { locales.t('settings.deleteRestaurant.deleteBtn') }\n \n
\n \n);\n\nexport default withStyles(styles)(DeleteRestaurantMessages);\n","import React from 'react';\n\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport IconButton from '@material-ui/core/IconButton/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n borderBottom: `1px solid ${theme.palette.divider}`,\n margin: 0,\n padding: '16px 16px 16px 24px',\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(),\n top: theme.spacing(),\n },\n});\n\ninterface IProps extends WithStyles {\n children: React.ReactChildren | string,\n onClose: (e: React.SyntheticEvent) => void,\n}\n\nconst DialogTitle: React.FC = ({\n classes,\n children,\n onClose,\n}) => (\n \n \n {children}\n \n\n {onClose ? (\n \n \n \n ) : null}\n \n);\n\nexport default withStyles(styles)(DialogTitle);\n","import React from 'react';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiDialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\nimport ErrorOutline from '@material-ui/icons/ErrorOutline';\n\nimport DialogTitle from '../../Common/DialogTitle';\nimport locales from '../../../locales';\nimport { errorColor } from '../../../theme';\n\nconst DialogContent = withStyles(() => ({\n root: {\n display: 'flex',\n padding: 24,\n },\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles(theme => ({\n root: {\n borderTop: `1px solid ${theme.palette.divider}`,\n margin: 0,\n padding: 24,\n },\n}))(MuiDialogActions);\n\ninterface IProps {\n isOpen: boolean;\n handleCloseModal: (props: any) => void;\n handleDeleteRestaurant: (props: any) => void;\n}\n\nconst DeleteRestaurantModal: React.FC = ({\n isOpen,\n handleCloseModal,\n handleDeleteRestaurant,\n}) => (\n \n \n { locales.t('settings.deleteRestaurantModal.title') }\n \n \n
\n \n
\n
\n \n { locales.t('settings.deleteRestaurantModal.firstText') }\n \n \n { locales.t('settings.deleteRestaurantModal.secondText') }\n \n
\n
\n \n \n { locales.t('settings.deleteRestaurantModal.rejectBtn') }\n \n \n { locales.t('settings.deleteRestaurantModal.confirmBtn') }\n \n \n \n);\n\nexport default DeleteRestaurantModal;\n","import React, { Fragment, PureComponent } from 'react';\n\nimport DeleteRestaurantMessages from '../../components/ReservesSystem/DeleteRestaurant/DeleteRestaurantMessages';\nimport DeleteRestaurantModal from '../../components/ReservesSystem/DeleteRestaurant/DeleteRestaurantModal';\nimport { IProps, IState } from './IDeleteRestaurantCont';\n\nclass DeleteRestaurant extends PureComponent {\n constructor(props: IProps) {\n super(props);\n this.state = {\n isOpen: false,\n };\n }\n\n /** @description Вкл/Выкл модального окна для удаления ресторана */\n handleSwitchModal = () => {\n const { isOpen } = this.state;\n this.setState({\n isOpen: !isOpen,\n });\n };\n\n /** @description Удаление выбранного ресторана */\n handleDeleteRestaurant = () => {\n const {\n currentRestaurant, deleteRestaurant,\n } = this.props;\n\n if (currentRestaurant) {\n deleteRestaurant(currentRestaurant.id);\n this.handleSwitchModal();\n }\n };\n\n render() {\n const { isOpen } = this.state;\n\n return (\n \n \n \n \n );\n }\n}\n\nexport default DeleteRestaurant;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport DeleteRestaurant from './DeleteRestaurant';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './IDeleteRestaurantCont';\nimport { IAppActions } from '../../types/IAppActions';\nimport { deleteRestaurant } from '../../actions/restaurant/RestaurantActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const { currentRestaurant } = state.cabinet;\n return {\n currentRestaurant,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n deleteRestaurant,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DeleteRestaurant);\n","import React from 'react';\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core/styles';\nimport locales from '../../locales';\n\n\nconst styles = (theme: Theme) => createStyles({\n toolbarWarning: {\n position: 'sticky',\n top: 64,\n [theme.breakpoints.down(600)]: {\n top: 56,\n },\n zIndex: 1000,\n width: '100%',\n overflowX: 'hidden',\n display: 'flex',\n flex: 1,\n flexBasis: 64,\n padding: '0 28px 0 16px',\n background: '#faca4e',\n alignItems: 'center',\n boxShadow: 'inset 0 2px 6px -2px rgb(31 48 63 / 50%)',\n color: '#323232',\n fontFamily: 'GolosTextWebMedium, Roboto',\n fontWeight: 'normal',\n fontStretch: 'normal',\n fontStyle: 'normal',\n },\n toolbarWarningBody: {\n alignItems: 'flex-start',\n flexGrow: 1,\n },\n toolbarWarningContent: {\n fontSize: '14px',\n fontWeight: 'inherit',\n fontStretch: 'inherit',\n fontStyle: 'inherit',\n lineHeight: 1,\n color: 'inherit',\n marginTop: 8,\n marginBottom: 20,\n opacity: 0.7,\n },\n toolbarWarningTitle: {\n fontSize: '16px',\n fontWeight: 500,\n fontStretch: 'inherit',\n fontStyle: 'inherit',\n lineHeight: 1.29,\n color: 'inherit',\n marginTop: 20,\n marginBottom: 8,\n },\n toolbarWarningButton: {\n fontSize: '12px',\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontStretch: 'inherit',\n fontStyle: 'inherit',\n lineHeight: 1.17,\n color: 'inherit',\n alignSelf: 'center',\n opacity: 0.5,\n background: 'transparent',\n border: 'none',\n cursor: 'pointer',\n\n '&:focus': {\n outline: 'none',\n },\n '&:hover': {\n outline: 'none',\n },\n },\n toolbarWarningDivider: {\n width: '0.5px',\n height: '100%',\n minHeight: '56px',\n margin: '16px 24px',\n opacity: 0.5,\n backgroundColor: '#323232',\n },\n});\n\ninterface IProps extends WithStyles {\n onClose?: () => void;\n title: string;\n message: string;\n actionLabel?: string;\n}\n\nconst PageHeaderWarning: React.FC = ({\n classes,\n onClose,\n title,\n message,\n actionLabel,\n}) => (\n
\n
\n

\n {title}\n

\n \n
\n {onClose && (\n <>\n
\n \n {actionLabel || locales.t('common.hide')}\n \n \n )}\n
\n);\n\nexport default withStyles(styles)(PageHeaderWarning);\n","import React from 'react';\n\nimport PageHeaderWarning from '../../components/Common/PageHeaderWarning';\nimport { ICashBoxWarningProps } from './ICashBoxWarning';\nimport locales from '../../locales';\n\nconst CashBoxWarning: React.FC = (props) => {\n const {\n isOpen,\n isInit,\n isVersionUpdateRequired,\n hideWarning,\n } = props;\n\n return isOpen && isInit ? (\n \n ) : null;\n};\n\nexport default CashBoxWarning;\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport CashBoxWarningComp from './CashBoxWarning';\nimport { hideWarning } from '../../actions/cabinet/CabinetActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './ICashBoxWarning';\nimport {\n isSubVersionUpdateRequired,\n isVersionUpdateRequired,\n} from './selectors';\n\nconst mapStateToProps = (state: IAppStore): StateProps => ({\n isOpen: state.cabinet.warningOpen,\n isInit: state.cabinet.isInit,\n isSubVersionUpdateRequired: isSubVersionUpdateRequired(state),\n isVersionUpdateRequired: isVersionUpdateRequired(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch): DispatchProps => bindActionCreators({\n hideWarning,\n}, dispatch);\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CashBoxWarningComp);\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst EditIcon = (\n \n \n \n \n \n \n);\n\nexport default wrapWithPath(EditIcon, '-2 -2 22 24');\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst CopyIcon = (\n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default wrapWithPath(CopyIcon, '-50 -50 550 550');\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport {\n withStyles,\n createStyles,\n WithStyles,\n} from '@material-ui/core';\nimport Button from '@material-ui/core/Button';\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport Table from '@material-ui/core/Table';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\n\nimport Title from '../../Common/Title';\nimport { IWidgetAdapt } from '../../../types/IRestaurantWidgetsStore';\nimport locales from '../../../locales';\nimport EditIcon from '../../Common/Icons/EditIcon';\nimport TrashIcon from '../../Common/Icons/TrashIcon';\nimport CopyIcon from '../../Common/Icons/CopyIcon';\n\nconst styles = createStyles({\n link: {\n padding: 8,\n backgroundColor: '#f7f8fb',\n borderRadius: 5,\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n },\n pL: {\n paddingLeft: 24,\n },\n bntWrap: {\n padding: '10px 24px 24px 24px',\n },\n icon: {\n cursor: 'pointer',\n },\n trashIcon: {\n marginLeft: 12,\n cursor: 'pointer',\n },\n deleteBorder: {\n borderBottom: 'none',\n },\n firstCln: {\n width: '30%',\n },\n secondCln: {\n width: '60%',\n },\n thirdCln: {\n paddingRight: 24,\n width: '10%',\n },\n});\n\ninterface Props extends WithStyles {\n widgets: Array;\n handleOpenWidgetModal: (type: 'create' | 'edit' | 'delete', widgetInfo?: IWidgetAdapt) => void;\n handleCustomMsg: () => void;\n}\n\n// TODO Поправить стили\nconst widgetsTable: React.FC = ({\n classes,\n widgets,\n handleOpenWidgetModal,\n handleCustomMsg,\n}) => {\n const copyLink = (link: string) => {\n handleCustomMsg();\n navigator.clipboard.writeText(link);\n };\n\n return (\n \n \n \n \n \n \n { locales.t('settings.widgets.table.name') }\n \n \n { locales.t('settings.widgets.table.link') }\n \n \n { locales.t('settings.widgets.table.action') }\n \n \n \n \n {\n widgets.map(w => (\n \n \n \n { w.name }\n \n \n \n
\n { w.url }\n copyLink(w.url)}\n />\n
\n
\n \n handleOpenWidgetModal('edit', w)}\n />\n handleOpenWidgetModal('delete', w)}\n />\n \n
\n ))\n }\n
\n
\n
\n handleOpenWidgetModal('create')}\n variant=\"contained\"\n color=\"primary\"\n >\n { locales.t('settings.widgets.btn') }\n \n
\n
\n );\n};\n\nexport default withStyles(styles)(widgetsTable);\n","import { every } from 'lodash';\n\nimport {\n IWidgetAdapt, IWidgetColorName,\n IWidgetDataAdapt,\n} from '../../../types/IRestaurantWidgetsStore';\nimport { fallbackValue } from '../../../helpers/widget/constants';\n\nexport function transformData(data?: IWidgetAdapt): IWidgetDataAdapt | null {\n if (!data) return null;\n const {\n id, url, status, refererUrl, createdDate, lastModifiedDate, ...settings\n } = data;\n return { ...settings };\n}\n\nexport function getDefaultColor(name: IWidgetColorName) {\n return fallbackValue.settings ? fallbackValue.settings.colors[name] : null;\n}\n\nexport function isValidColor(value?: string): boolean {\n const rule = new RegExp(/^#([a-f0-9]{3}){1,2}\\b$/i);\n return rule.test(value || '');\n}\n\nexport const isValidName = (value?: string | null) => String(value || '').trim().length > 0;\n\n/**\n * @description: Validates name and settings.colors\n */\nexport function isValid(values: IWidgetDataAdapt): boolean {\n const colorFields: IWidgetColorName[] = [\n 'mainColor',\n 'formBackground',\n 'pageBackground',\n 'formHeaderColor',\n 'formBaseColor',\n 'formFieldColor',\n ];\n if (isValidName(values.name)) {\n return every(colorFields.map(field => (values.settings ? values.settings.colors[field] : null)), isValidColor);\n }\n return false;\n}\n\n\n/**\n * @description: Add HEX character to the hex color\n * e.g.: 'ffffff' -> '#ffffff'\n */\nexport function parseHashSymbolIfNeeded(value: string): string {\n const parsedValue = String(value).startsWith('#') ? value : `#${value}`;\n return parsedValue.replace(/#+/mg, '#');\n}\n","import { createStyles } from '@material-ui/core';\n\nexport default createStyles({\n paper: {\n width: 370,\n height: 310,\n },\n paperEdit: {\n width: 630,\n height: 540,\n },\n desc: {\n margin: 0,\n },\n textFields: {\n flexGrow: 1,\n },\n textFiledGroup: {\n color: '#323232',\n },\n textFieldsGroup: {\n paddingBottom: 44,\n },\n textFieldsGroupName: {\n paddingTop: 15,\n },\n textFieldsGroupColors: {\n paddingBottom: 34,\n },\n textField: {\n paddingTop: 24,\n paddingBottom: 24,\n },\n colorField: {\n width: 120,\n },\n colorFieldIcon: {\n padding: 0,\n },\n dialogActionsWrap: {\n padding: '16px 24px',\n },\n btnWrap: {\n flexBasis: '50%',\n height: 36,\n '&:not(:first-child)': {\n marginLeft: 12,\n },\n '&:not(:last-child)': {\n marginRight: 12,\n },\n },\n});\n","import React from 'react';\nimport {\n Popover, withStyles, WithStyles,\n} from '@material-ui/core';\nimport styles from './styles';\n\n\ninterface IProps extends WithStyles {\n refPicker: any;\n handleClose: () => void,\n open: boolean;\n}\nconst CustomPopover: React.FC = ({\n refPicker, handleClose, open, children,\n}) => (\n \n {children}\n \n);\n\nexport default withStyles(styles)(CustomPopover);\n","import React, {\n useRef, useState, useCallback,\n} from 'react';\nimport {\n FormControl,\n InputLabel,\n Input,\n InputAdornment,\n IconButton,\n withStyles, WithStyles,\n} from '@material-ui/core';\nimport { Color, ColorBox } from 'material-ui-color';\n\nimport EditIcon from '../../Common/Icons/EditIcon';\n\nimport CustomPopover from './CustomPopover';\n\nimport { parseHashSymbolIfNeeded } from './utils';\n\nimport styles from './styles';\n\ninterface IProps extends WithStyles {\n onChange: (value: string) => void;\n value?: string;\n label: string;\n defaultValue?: string | null;\n error: boolean;\n id: string;\n}\n\nconst CustomField: React.FC = React.memo(({\n id,\n label,\n classes,\n value,\n defaultValue,\n onChange,\n error,\n}) => {\n const ref = useRef(null);\n const [colorPickerField, onColorPickerToggle] = useState(false);\n\n const handlePickerOpen = useCallback(() => onColorPickerToggle(true), []);\n const handlePickerHide = useCallback(() => onColorPickerToggle(false), []);\n const onColorPickerChange = useCallback((color: Color) => {\n /**\n * @description when format is unknown hex value may return default values\n * to handle user input whe need to parse raw value (e.g. `#0`, {r,g,b})\n */\n if (color.format === 'unknown' && typeof color.raw === 'string') {\n onChange(parseHashSymbolIfNeeded(color.raw));\n } else {\n onChange(parseHashSymbolIfNeeded(color.hex));\n }\n }, []);\n\n const onInputChange = useCallback((e: React.ChangeEvent) => {\n if (e && e.target) {\n const { value } = e.target;\n onChange(parseHashSymbolIfNeeded(value));\n }\n }, []);\n\n return (\n \n \n \n \n {label}\n \n \n \n \n \n )}\n />\n \n );\n});\n\nCustomField.displayName = 'CustomFieldMemo';\n\nexport default withStyles(styles)(CustomField);\n","// eslint-disable-next-line no-use-before-define\nimport React from 'react';\nimport { cloneDeep, set } from 'lodash';\nimport cl from 'classnames';\nimport {\n withStyles, WithStyles, Grid, TextField, Checkbox,\n} from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport FormControlLabel\n from '@material-ui/core/FormControlLabel/FormControlLabel';\nimport {\n IWidgetColorName,\n IWidgetSettingsNames,\n IWidgetDataAdapt,\n} from '../../../types/IRestaurantWidgetsStore';\n\nimport { fallbackValue } from '../../../helpers/widget/constants';\nimport { getDefaultColor, isValidColor, isValidName } from './utils';\n\nimport CustomField from './CustomField';\n\nimport locales from '../../../locales';\nimport styles from './styles';\n\nconst firstRow: IWidgetColorName[] = [\n 'mainColor',\n 'formBackground',\n 'pageBackground',\n];\n\nconst secondRow: IWidgetColorName[] = [\n 'formHeaderColor',\n 'formBaseColor',\n 'formFieldColor',\n];\n\nconst thirdRow: IWidgetSettingsNames[] = [\n 'isShowHeader',\n /*\n // TODO: uncomment for step 2\n 'isEmailRequired',\n 'isLastNameRequired',\n */\n];\n\nconst fieldLabelMap: {\n [f: string]: string\n} = {\n mainColor: 'settings.widgets.widgetHeaderAndButton',\n formBackground: 'settings.widgets.widgetFormBackground',\n pageBackground: 'settings.widgets.widgetBodyBackground',\n formHeaderColor: 'settings.widgets.widgetHeaderAndButton',\n formBaseColor: 'settings.widgets.widgetFontBaseColor',\n formFieldColor: 'settings.widgets.widgetFormFieldCaptions',\n isShowHeader: 'settings.widgets.widgetShowHeader',\n isEmailRequired: 'settings.widgets.widgetSetEmailRequired',\n isLastNameRequired: 'settings.widgets.widgetSetSurnameRequired',\n};\n\nconst setFieldState = (field: string, value: any) => (state: React.SetStateAction) => {\n const newState = cloneDeep(state);\n set(newState, field, value);\n return newState;\n};\n\ninterface IProps extends WithStyles {\n data: IWidgetDataAdapt;\n changeData: React.Dispatch>;\n}\n\nconst WidgetSettings: React.FC = ({\n classes,\n data,\n changeData,\n}) => {\n /** @description Состояние полей виджета */\n const {\n settings = {\n // TODO: upgrade react-scripts to support new babel features, e.g.:\n // @babel/plugin-proposal-optional-chaining\n // @ts-ignore: default settings is not empty,\n colors: fallbackValue.settings.colors,\n },\n } = data || fallbackValue;\n const { colors } = settings;\n\n\n /** @description Редактирование полей */\n const onChange = (field: string) => (e: React.ChangeEvent) => {\n if (e && e.target) {\n const { value } = e.target;\n changeData(setFieldState(field, value));\n }\n };\n\n const onChangeBoolean = (field: string) => (e: React.ChangeEvent, checked: boolean) => {\n changeData(setFieldState(field, checked));\n };\n\n /** @description Редактирование CustomField полей */\n const onChangeColor = (field: string) => (value: string) => {\n changeData(setFieldState(field, value));\n };\n\n const renderCustomField = (field: IWidgetColorName) => {\n const id = `settings.colors.${field}`;\n return (\n \n \n \n );\n };\n\n const renderCheckbox = (field: IWidgetSettingsNames) => {\n const id = `settings.${field}`;\n return (\n \n )}\n label={(\n \n {locales.t(fieldLabelMap[field])}\n \n )}\n />\n );\n };\n\n return (\n <>\n
\n \n
\n \n \n \n {locales.t('settings.widgets.widgetFormColor')}\n \n \n \n \n {firstRow.map(renderCustomField)}\n \n \n \n \n \n \n {locales.t('settings.widgets.widgetFontColor')}\n \n \n \n \n {secondRow.map(renderCustomField)}\n \n \n \n \n \n \n \n {thirdRow.map(renderCheckbox)}\n \n \n \n \n );\n};\n\nexport default withStyles(styles)(WidgetSettings);\n","import React, { useState } from 'react';\n\nimport {\n withStyles,\n WithStyles,\n} from '@material-ui/core';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography';\n\nimport DialogTitle from '../../Common/DialogTitle';\n\nimport WidgetSettings from './WidgetSettings';\n\nimport {\n IWidgetDataAdapt,\n} from '../../../types/IRestaurantWidgetsStore';\n\nimport { fallbackValue } from '../../../helpers/widget/constants';\nimport { isValid } from './utils';\n\nimport locales from '../../../locales';\nimport styles from './styles';\n\ninterface IProps extends WithStyles {\n isOpen: boolean;\n handleClose: () => void;\n handleCreateWidget: (widgetData: IWidgetDataAdapt) => void;\n}\n\nconst WidgetCreateModal: React.FC = ({\n classes,\n isOpen,\n handleClose,\n handleCreateWidget,\n}) => {\n /** @description Стейт полей виджета */\n const [data, changeData] = useState(fallbackValue);\n\n /** @description Создание виджета */\n const onClick = () => {\n if (isValid(data)) {\n handleCreateWidget(data);\n handleClose();\n }\n };\n\n return (\n \n \n { locales.t('settings.widgets.createModal.title') }\n \n \n \n \n { locales.t('settings.widgets.createModal.desc') }\n \n \n \n \n \n \n { locales.t('settings.widgets.createModal.declineBtn') }\n \n \n { locales.t('settings.widgets.createModal.saveBtn') }\n \n \n \n );\n};\n\nexport default withStyles(styles)(WidgetCreateModal);\n","import React, { useState } from 'react';\n\nimport { withStyles, WithStyles } from '@material-ui/core';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography';\n\nimport DialogTitle from '../../Common/DialogTitle';\n\nimport WidgetSettings from './WidgetSettings';\n\nimport {\n IWidgetAdapt,\n IWidgetDataAdapt,\n} from '../../../types/IRestaurantWidgetsStore';\n\nimport { fallbackValue } from '../../../helpers/widget/constants';\n\nimport { isValid, transformData } from './utils';\n\nimport locales from '../../../locales';\nimport styles from './styles';\n\ninterface IProps extends WithStyles {\n isOpen: boolean;\n handleClose: () => void;\n handleUpdateWidget: (widgetId: number, newWidgetData: IWidgetDataAdapt) => void;\n widgetInfo?: IWidgetAdapt;\n}\n\nconst WidgetEditModal: React.FC = ({\n classes,\n isOpen,\n widgetInfo,\n handleClose,\n handleUpdateWidget,\n}) => {\n /** @description Стейт полей виджета */\n const [data, changeData] = useState(transformData(widgetInfo) || fallbackValue);\n\n /** @description Создание виджета */\n const onClick = () => {\n if (isValid(data) && widgetInfo) {\n handleUpdateWidget(widgetInfo.id, data);\n handleClose();\n }\n };\n\n const onClose = () => {\n handleClose();\n };\n\n return (\n \n \n { locales.t('settings.widgets.editModal.title') }\n \n \n \n \n { locales.t('settings.widgets.editModal.attention') }\n \n \n { locales.t('settings.widgets.editModal.desc') }\n \n \n \n \n \n \n { locales.t('settings.widgets.editModal.declineBtn') }\n \n \n { locales.t('settings.widgets.editModal.saveBtn') }\n \n \n \n );\n};\n\nexport default withStyles(styles)(WidgetEditModal);\n","import React from 'react';\n\nimport {\n withStyles,\n WithStyles,\n} from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\n\nimport DialogTitle from '../../Common/DialogTitle';\nimport locales from '../../../locales';\nimport { IWidgetAdapt } from '../../../types/IRestaurantWidgetsStore';\nimport styles from './styles';\n\ninterface IProps extends WithStyles{\n isOpen: boolean;\n widgetInfo?: IWidgetAdapt;\n handleClose: () => void;\n handleDeleteWidget: (widgetId: number) => void;\n}\n\nconst WidgetDeleteModal: React.FC = ({\n classes,\n isOpen,\n widgetInfo,\n handleClose,\n handleDeleteWidget,\n}) => {\n /** @description Удаление виджета */\n const onClick = () => {\n if (widgetInfo) {\n handleDeleteWidget(widgetInfo.id);\n handleClose();\n }\n };\n\n return (\n \n \n { locales.t('settings.widgets.deleteModal.title') }\n \n \n \n \n { locales.t('settings.widgets.deleteModal.attention') }\n \n \n \n \n { locales.t('settings.widgets.deleteModal.desc') }\n \n \n \n \n \n { locales.t('settings.widgets.deleteModal.declineBtn') }\n \n \n { locales.t('settings.widgets.deleteModal.deleteBtn') }\n \n \n \n );\n};\n\nexport default withStyles(styles)(WidgetDeleteModal);\n","import React, { PureComponent, Fragment } from 'react';\n\nimport Widgets from '../../components/ReservesSystem/Widgets/WidgetsTable';\nimport { IProps, IState } from './IReservesSystemWidgets';\nimport {\n IWidgetAdapt,\n IWidgetDataAdapt,\n} from '../../types/IRestaurantWidgetsStore';\nimport WidgetCreateModal from '../../components/ReservesSystem/Widgets/WidgetCreateModal';\nimport WidgetEditModal from '../../components/ReservesSystem/Widgets/WidgetEditModal';\nimport WidgetDeleteModal from '../../components/ReservesSystem/Widgets/WidgetDeleteModal';\nimport locales from '../../locales';\n\nclass ReservesSystemWidgets extends PureComponent {\n constructor(props: IProps) {\n super(props);\n this.state = {\n createWidgetModalIsOpen: false,\n editWidgetModalIsOpen: false,\n deleteWidgetModalIsOpen: false,\n widgetInfo: undefined,\n };\n }\n\n componentDidMount(): void {\n const { getAllWidgets } = this.props;\n getAllWidgets();\n }\n\n /** @description Ручка для открытия модального окна для создания, редактирования или удаления виджета */\n handleOpenWidgetModal = (type: 'create' | 'edit' | 'delete', widgetInfo?: IWidgetAdapt) => {\n switch (type) {\n case 'create': {\n this.setState({\n createWidgetModalIsOpen: true,\n widgetInfo,\n });\n break;\n }\n\n case 'edit': {\n this.setState({\n editWidgetModalIsOpen: true,\n widgetInfo,\n });\n break;\n }\n\n case 'delete': {\n this.setState({\n deleteWidgetModalIsOpen: true,\n widgetInfo,\n });\n break;\n }\n\n default: break;\n }\n };\n\n /** @description Ручка для закрытия модального окна для создания, редактирования или удаления виджета */\n handleCloseModal = () => {\n this.setState({\n createWidgetModalIsOpen: false,\n editWidgetModalIsOpen: false,\n deleteWidgetModalIsOpen: false,\n widgetInfo: undefined,\n });\n };\n\n /** @description Ручка для создания виджета */\n handleCreateWidget = (data: IWidgetDataAdapt) => {\n const { createWidget } = this.props;\n\n if (data) {\n createWidget(data);\n this.setState({\n createWidgetModalIsOpen: false,\n });\n }\n };\n\n /** @description Ручка для редактирования виджета */\n handleUpdateWidget = (widgetId: number, newWidgetName: IWidgetDataAdapt) => {\n const { updateWidget } = this.props;\n\n if (widgetId && newWidgetName) {\n updateWidget(widgetId, newWidgetName);\n }\n };\n\n /** @description Ручка для удаления виджета */\n handleDeleteWidget = (widgetId: number) => {\n const { deleteWidget } = this.props;\n\n if (widgetId) {\n deleteWidget(widgetId);\n }\n };\n\n handleCustomMsg = () => {\n const { customMessageShackBar } = this.props;\n customMessageShackBar(locales.t('settings.widgets.copyLinkMsg'));\n };\n\n render() {\n const {\n widgets,\n isLoading,\n } = this.props;\n const {\n createWidgetModalIsOpen,\n editWidgetModalIsOpen,\n deleteWidgetModalIsOpen,\n widgetInfo,\n } = this.state;\n\n return (\n \n \n { createWidgetModalIsOpen && (\n \n ) }\n { editWidgetModalIsOpen && (\n \n ) }\n { deleteWidgetModalIsOpen && (\n \n ) }\n \n );\n }\n}\n\nexport default ReservesSystemWidgets;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport ReservesSystemWidgets from './ReservesSystemWidgets';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { IStateProps, IDispatchProps } from './IReservesSystemWidgets';\nimport { IAppActions } from '../../types/IAppActions';\nimport {\n createWidget,\n deleteWidget,\n getAllWidgets,\n updateWidget,\n} from '../../actions/restaurantsWidgets/RestaurantsWidgetsActions';\nimport { customMessageShackBar } from '../../actions/snackbars/SnackBarsActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const { widgets, isLoading } = state.widgets;\n\n return {\n widgets,\n isLoading,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n createWidget,\n getAllWidgets,\n deleteWidget,\n updateWidget,\n customMessageShackBar,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReservesSystemWidgets);\n","import React from 'react';\n\nimport {\n createStyles,\n Theme,\n withStyles,\n WithStyles,\n} from '@material-ui/core/styles';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\nimport MuiDialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogActions from '@material-ui/core/DialogActions';\nimport IconButton from '@material-ui/core/IconButton';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n },\n closeButton: {\n position: 'absolute',\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500],\n },\n});\n\nexport interface DialogTitleProps extends WithStyles {\n id: string;\n children: React.ReactNode;\n onClose: () => void;\n}\n\nconst DialogTitle = withStyles(styles)((props: DialogTitleProps) => {\n const {\n children,\n classes,\n onClose,\n ...other\n } = props;\n\n return (\n \n {children}\n\n {onClose && (\n \n \n \n )}\n \n );\n});\n\nconst DialogContent = withStyles((theme: Theme) => ({\n root: {\n padding: theme.spacing(2),\n },\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles((theme: Theme) => {\n const vSpace = theme.spacing(2);\n const hSpace = theme.spacing(3);\n\n return {\n root: {\n margin: 0,\n padding: `${vSpace}px ${hSpace}px`,\n justifyContent: 'space-evenly',\n },\n spacing: {\n '& > :not(:first-child)': {\n marginLeft: hSpace,\n },\n },\n };\n})(MuiDialogActions);\n\nconst DialogComponent: React.FC<{\n title: string;\n children: React.ReactNode;\n actions: React.ReactNode;\n onClose: () => void;\n}> = ({\n title,\n children,\n actions,\n onClose,\n}) => {\n const handleClose = () => {\n onClose();\n };\n\n return (\n \n \n {title}\n \n \n {children}\n \n \n {actions}\n \n \n );\n};\n\nexport default DialogComponent;\n","import React from 'react';\n\nimport { Button, withStyles } from '@material-ui/core';\n\nimport { IButtonProps } from './IProps';\n\n\nconst StyledButton = withStyles({\n root: {\n color: '#323232',\n backgroundColor: '#e7ebee',\n },\n})(Button);\n\n\nconst ButtonComponent: React.FC = ({\n onClick,\n startIcon,\n title,\n ...other\n}) => (\n \n {title}\n \n);\n\nexport default ButtonComponent;\n","import React from 'react';\n\nimport { Button, withStyles } from '@material-ui/core';\n\nimport { IButtonProps } from '../IProps';\n\n\nconst StyledButton = withStyles({\n root: {\n color: '#323232',\n backgroundColor: '#f65757',\n },\n})(Button);\n\n\nconst DangerButtonComponent: React.FC = ({\n onClick,\n startIcon,\n title,\n ...other\n}) => (\n \n {title}\n \n);\n\nexport default DangerButtonComponent;\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport DialogComponent from './index';\nimport ButtonComponent from '../../Common/Button';\nimport DangerButtonComponent from '../../Common/Button/Danger';\n\nexport default function DeleteDialog(props: {\n onClose: () => void;\n onDelete: () => void;\n}) {\n const { onClose, onDelete } = props;\n\n function onSubmit() {\n onClose();\n onDelete();\n }\n\n return (\n \n \n\n {/*\n \n */}\n\n \n \n )}\n >\n \n {locales.t('employees.deleteConfirmation')}\n \n \n );\n}\n","import { Employees } from '../../../entities';\n\nexport function mapResponseToEmployee(responseEntity: GM.Employees.Response.Employee): GM.Employees.Employee {\n return {\n ...responseEntity,\n createdDate: new Date(responseEntity.createdDate),\n lastModifiedDate: new Date(responseEntity.lastModifiedDate),\n };\n}\n\nexport function isAdmin(employee: GM.Employees.Employee) {\n return employee.authorities.indexOf('ADMINISTRATOR') !== -1;\n}\n\nexport function isHostess(employee: GM.Employees.Employee) {\n return employee.authorities.indexOf('HOSTESS') !== -1;\n}\n\nexport function isActive(employee: GM.Employees.Employee) {\n return employee.status === 'ACTIVE';\n}\n\n// @todo Использовать reselect\nexport function employeeCanBeDeleted(id: number, employees: GM.Employees.Employees | null): boolean {\n if (!employees || !employees[id]) {\n return false;\n }\n\n if (!isAdmin(employees[id]) || !isActive(employees[id])) {\n return true;\n }\n\n const activeAdmins = Object.values(employees).filter(\n (e: GM.Employees.Employee) => isAdmin(e) && isActive(e)\n );\n\n return activeAdmins.length > 1;\n}\n\nexport function hasActiveHostess(employees: GM.Employees.Employees | null): boolean {\n if (!employees) {\n return false;\n }\n\n const activeHostesses = Object.values(employees).filter(\n (e: GM.Employees.Employee) => isHostess(e) && isActive(e)\n );\n\n return activeHostesses.length >= 1;\n}\n\nexport function getEmployeeResources(employee: GM.Employees.Employee): Array {\n let employeeResources: Array = [];\n\n employee.authorities.forEach((authority: GM.Employees.Authority) => {\n if (Employees.employeeAuthorities.hasOwnProperty(authority)) {\n employeeResources = [\n ...employeeResources,\n // @ts-ignore\n ...Employees.employeeAuthorities[authority].resources,\n ]\n }\n });\n\n return employeeResources;\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useDispatch } from 'react-redux';\nimport { AxiosError } from 'axios';\n\nimport locales from '../../../locales';\nimport { customErrorShackBar, customMessageShackBar } from '../../../actions/snackbars/SnackBarsActions';\nimport { useAuthUserId } from '../../../selectors/AuthSelectors';\nimport { useRestaurantId } from '../../../selectors/RestaurantSelectors';\nimport { mapResponseToEmployee } from './selectors';\n\nimport {\n getActivateEmployeeRequest,\n getCreateEmployeeRequest,\n getCurrentEmployeeRequest,\n getDeleteEmployeeRequest,\n getEmployeeByActivationKeyRequest,\n getEmployeesRequest,\n getResetEmployeePasswordRequest,\n getSendActivationEmailEmployeeRequest,\n getUpdateEmployeeRequest,\n} from '../../../api';\n\nexport function useEmployeesQueryKey() {\n return [useAuthUserId(), 'employees', useRestaurantId()];\n}\n\nexport function useEmployees() {\n const restaurantId = useRestaurantId();\n\n const { data: response, isLoading, isFetching } = useQuery({\n // staleTime: Infinity,\n staleTime: 60 * 1000 * 10,\n enabled: !!restaurantId,\n queryKey: useEmployeesQueryKey(),\n queryFn: () => (restaurantId && getEmployeesRequest(restaurantId)) || undefined,\n });\n\n let employees: GM.Employees.Employees | null = null;\n if (response && response.data) {\n employees = response.data.reduce((employees, employee) => ({\n ...employees,\n [employee.id]: mapResponseToEmployee(employee),\n }), {});\n }\n\n return {\n isLoading: isLoading || isFetching,\n data: employees,\n };\n}\n\nexport function useCurrentEmployeeQueryKey() {\n return [useAuthUserId(), 'employees', 'current', useRestaurantId()];\n}\n\nexport function useCurrentEmployee() {\n const restaurantId = useRestaurantId();\n\n const { data: response, isLoading, isFetching } = useQuery({\n staleTime: 60 * 1000 * 5,\n enabled: !!restaurantId,\n queryKey: useCurrentEmployeeQueryKey(),\n queryFn: () => (restaurantId && getCurrentEmployeeRequest(restaurantId)) || undefined,\n });\n\n let employee = null;\n if (response && response.data) {\n employee = mapResponseToEmployee(response.data);\n }\n\n return {\n isLoading: isLoading || isFetching,\n data: employee,\n };\n}\n\nexport function useCreateMutation() {\n const queryClient = useQueryClient();\n const employeesQueryKey = useEmployeesQueryKey();\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: { requestData: GM.Employees.Form; restaurantId: number }) => {\n const { requestData, restaurantId } = payload;\n return getCreateEmployeeRequest(restaurantId, requestData);\n },\n\n onSuccess: (response: any) => {\n if (response.status === 200) {\n dispatch(customMessageShackBar(locales.t('employees.actions.create.success')));\n queryClient.invalidateQueries({ queryKey: employeesQueryKey });\n } else {\n dispatch(customErrorShackBar(locales.t('employees.actions.create.error')));\n }\n },\n\n onError: (error) => {\n if (error && error.response) {\n const { response } = error;\n\n if (response.data) {\n const { data } = response;\n\n if (Array.isArray(data)) {\n const errorMessages: Array = [];\n\n data.forEach((error: { code: string }) => {\n if (error.code === 'employee_already_exists') {\n errorMessages.push('Пользователь с таким адресом уже существует');\n }\n });\n\n if (errorMessages.length > 0) {\n dispatch(customErrorShackBar(errorMessages.join('. ')));\n return;\n }\n }\n\n if (data.errors && Array.isArray(data.errors)) {\n const fields = data.errors.map((error: { field: string }) => {\n let name = locales.t(`employees.properties.${error.field}`);\n if (!name) {\n name = error.field;\n }\n\n return name;\n });\n\n if (fields.length > 0) {\n const template = locales.t('employees.errors.placeholder');\n const errorMessage = template.replace('{fields}', fields.join(', ').toLowerCase());\n\n dispatch(customErrorShackBar(errorMessage));\n return;\n }\n }\n }\n }\n\n dispatch(customErrorShackBar(locales.t('employees.actions.create.error')));\n },\n });\n}\n\nexport function useUpdateMutation() {\n const queryClient = useQueryClient();\n const employeesQueryKey = useEmployeesQueryKey();\n const currentEmployeeQueryKey = useCurrentEmployeeQueryKey();\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: {\n requestData: GM.Employees.Form;\n id: number;\n isProfile?: boolean;\n }) => {\n const { requestData, id } = payload;\n\n const employeeDataToUpdate: GM.Employees.Request.Update = {\n ...requestData,\n id,\n };\n\n // Изменять email нельзя по дизайну\n delete employeeDataToUpdate.email;\n\n return getUpdateEmployeeRequest(employeeDataToUpdate);\n },\n\n onSuccess: (response: any, payload) => {\n if (response.status === 200) {\n dispatch(customMessageShackBar(locales.t('employees.actions.update.success')));\n queryClient.invalidateQueries({ queryKey: employeesQueryKey });\n\n if (payload.isProfile) {\n queryClient.invalidateQueries({ queryKey: currentEmployeeQueryKey });\n }\n } else {\n dispatch(customErrorShackBar(locales.t('employees.actions.update.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.update.error')));\n },\n });\n}\n\nexport function useDeleteMutation() {\n const queryClient = useQueryClient();\n const employeesQueryKey = useEmployeesQueryKey();\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: GM.Employees.Request.Delete) => getDeleteEmployeeRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status === 200) {\n dispatch(customMessageShackBar(locales.t('employees.actions.delete.success')));\n queryClient.invalidateQueries({ queryKey: employeesQueryKey });\n } else {\n dispatch(customErrorShackBar(locales.t('employees.actions.delete.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.delete.error')));\n },\n });\n}\n\nexport function useInviteEmployeeMutation() {\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: GM.Employees.Request.Invite) => getSendActivationEmailEmployeeRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status === 200) {\n dispatch(customMessageShackBar(locales.t('employees.actions.invite.success')));\n } else {\n dispatch(customErrorShackBar(locales.t('employees.actions.invite.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.invite.error')));\n },\n });\n}\n\nexport function useGetEmployeeByActivationKeyMutation() {\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: GM.Employees.Request.GetByActivationKey) => getEmployeeByActivationKeyRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status !== 200) {\n dispatch(customErrorShackBar(locales.t('employees.actions.getByActivationKey.error')));\n }\n },\n\n // onError: (response) => {\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.getByActivationKey.error')));\n },\n });\n}\n\nexport function useActivateEmployeeMutation() {\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: GM.Employees.Request.Activate) => getActivateEmployeeRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status !== 200) {\n dispatch(customErrorShackBar(locales.t('employees.actions.activate.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.activate.error')));\n },\n });\n}\n\nexport function useResetPasswordMutation() {\n const dispatch = useDispatch();\n\n return useMutation({\n mutationFn: (payload: GM.Employees.Request.ResetPassword) => getResetEmployeePasswordRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status === 200) {\n dispatch(customMessageShackBar(locales.t('employees.actions.resetPasswordInit.success')));\n } else {\n dispatch(customErrorShackBar(locales.t('employees.actions.resetPasswordInit.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('employees.actions.resetPasswordInit.error')));\n },\n });\n}\n","import locales from '../../../locales';\nimport { getEmployeeResources } from '../model';\n\nexport const employeeAuthorities: GM.Employees.Authorities = {\n 'ADMINISTRATOR': {\n id: 'ADMINISTRATOR',\n resources: [\n 'stats:access',\n 'restaurantSettings:access',\n 'restaurants:access',\n 'employees:access',\n 'reserves:access',\n ],\n },\n 'MANAGER': {\n id: 'MANAGER',\n resources: [\n 'stats:access',\n 'restaurantSettings:access',\n 'reserves:access',\n ],\n },\n 'HOSTESS': {\n id: 'HOSTESS',\n resources: [\n 'reserves:access',\n 'widgetNotifications:access',\n 'callNotifications:access',\n ],\n },\n};\n\nexport const hasAccess = (employee: GM.Employees.Employee | null, resourceAction: GM.Employees.ResourceAction): boolean => {\n return !!employee && getEmployeeResources(employee).indexOf(resourceAction) !== -1;\n};\n\nexport const getName = (employee: GM.Employees.Employee) => {\n const names = [];\n\n if (employee.lastName) {\n names.push(employee.lastName);\n }\n\n if (employee.firstName) {\n names.push(employee.firstName);\n }\n\n return (names && names.join(' ')) || locales.t('employees.no_name');\n};\n","import React from 'react';\nimport { Typography } from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport DialogComponent from '../../../components/Employees/Dialog/index';\nimport ButtonComponent from '../../../components/Common/Button';\n\nexport function UnableToDeleteAlert(props: { onClose: () => void; }) {\n const { onClose } = props;\n\n return (\n \n )}\n >\n \n {locales.t('employees.unableToDelete')}\n \n \n );\n}\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { useDispatch } from 'react-redux';\n\nimport locales from '../../../locales';\nimport { customErrorShackBar, customMessageShackBar } from '../../../actions/snackbars/SnackBarsActions';\nimport { useRestaurantId } from '../../../selectors/RestaurantSelectors';\nimport { mapResponseToCashbox } from './selectors';\nimport { getCashboxStatusRequest, getCashboxDeleteRequest } from '../../../api';\nimport { getCashBoxConnectStatus, getCashBoxPluginsStatus } from '../../../actions/cabinet/CabinetActions';\nimport { useHistory } from 'react-router-dom';\n\n\nexport function useCashboxQueryKey() {\n const restaurantId = useRestaurantId();\n return ['cashbox', restaurantId];\n}\n\nexport function useCashbox() {\n const restaurantId = useRestaurantId();\n const request: GM.Cashbox.Request.Status | undefined = restaurantId ? { restaurantId } : undefined;\n\n const { data: response, isLoading, isFetching } = useQuery({\n staleTime: 60 * 1000 * 30,\n enabled: !!restaurantId,\n queryKey: useCashboxQueryKey(),\n queryFn: () => (request && getCashboxStatusRequest(request)) || undefined,\n });\n\n let cashbox: GM.Cashbox.Cashbox | null | undefined = (response && mapResponseToCashbox(response)) || undefined;\n\n return {\n isLoading: isLoading || isFetching,\n cashbox,\n };\n}\n\nexport function useDeleteMutation() {\n const queryClient = useQueryClient();\n const queryKey = useCashboxQueryKey();\n const dispatch = useDispatch();\n const restaurantId = useRestaurantId();\n const history = useHistory();\n\n return useMutation({\n mutationFn: (payload: GM.Cashbox.Request.Delete) => getCashboxDeleteRequest(payload),\n\n onSuccess: (response: any) => {\n if (response.status == 200) {\n dispatch(customMessageShackBar(locales.t('cashbox.settings.actions.delete.success')));\n queryClient.invalidateQueries({ queryKey });\n\n if (restaurantId) {\n dispatch(getCashBoxPluginsStatus(restaurantId));\n dispatch(getCashBoxConnectStatus(restaurantId));\n }\n\n history.push('/');\n } else {\n dispatch(customErrorShackBar(locales.t('cashbox.settings.actions.delete.error')));\n }\n },\n\n onError: () => {\n dispatch(customErrorShackBar(locales.t('cashbox.settings.actions.delete.error')));\n },\n });\n}\n","import React, { useState } from 'react';\nimport { Edit, Delete, Star } from '@material-ui/icons';\n\nimport {\n TableRow,\n TableCell,\n IconButton,\n makeStyles,\n Theme,\n} from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport { primaryColor } from '../../../theme';\nimport DeleteDialog from '../Dialog/Delete';\nimport { Employees } from '../../../entities';\n\n\nconst useStyles = makeStyles((theme: Theme) => ({\n row: {\n '& td': {\n verticalAlign: 'top',\n padding: theme.spacing(3),\n // height: 190,\n },\n },\n\n name: {\n fontSize: 16,\n textDecoration: 'underline',\n },\n\n inner: {\n margin: 0,\n marginTop: theme.spacing(2),\n\n '& dt': {\n fontSize: 12,\n color: '#aaaaaa',\n },\n\n '& dd': {\n margin: 0,\n fontSize: 14,\n color: '#323232',\n },\n },\n\n contacts: {\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n\n '& li': {\n marginBottom: theme.spacing(1),\n fontSize: 14,\n color: '#323232',\n },\n\n '& li:last': {\n marginBottom: 0,\n },\n },\n\n roles: {\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n\n '& li': {\n marginBottom: 0,\n fontSize: 14,\n },\n },\n\n active: {\n textTransform: 'uppercase',\n color: primaryColor,\n },\n\n disabled: {\n textTransform: 'uppercase',\n },\n\n invite: {\n fontSize: 12,\n color: primaryColor,\n textDecoration: 'underline',\n marginTop: theme.spacing(3),\n cursor: 'pointer',\n },\n\n actions: {\n marginTop: -theme.spacing(1),\n marginLeft: -theme.spacing(2),\n },\n\n currentStar: {\n color: primaryColor,\n fontSize: 14,\n marginLeft: 3,\n },\n}));\n\n\nconst ItemComponent: React.FC<{\n employee: GM.Employees.Employee;\n onClick: (id: number) => void;\n onEdit: (id: number) => void;\n onDelete?: (id: number) => void;\n onInvite: (id: number) => void;\n isCurrentEmployee: boolean;\n canBeDeleted: boolean;\n}> = ({\n employee,\n onClick,\n onEdit,\n onDelete,\n onInvite,\n isCurrentEmployee,\n canBeDeleted,\n}) => {\n const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const [isUnableToDeleteAdminAlert, setUnableToDeleteAdminAlert] = useState(false);\n\n const {\n id,\n email,\n phone,\n // iikoEmployeeId,\n authorities,\n status,\n createdDate,\n } = employee;\n\n const classes = useStyles();\n\n return (\n \n \n {\n e.preventDefault();\n onClick(id);\n }}\n className={classes.name}\n >\n {Employees.getName(employee)}\n \n\n {isCurrentEmployee && }\n\n {/*\n
\n
Пользователь iiko:
\n
{iikoEmployeeId || 'Не назначено'}
\n
\n */}\n
\n \n {(email || phone) && (
    \n {email &&
  • {email}
  • }\n {phone &&
  • {phone}
  • }\n
)}\n
\n \n {authorities && (\n
    \n {authorities.map(authority => (\n
  • \n {locales.t(`employees.properties.authorities.${authority}.title`)}\n
  • \n ))}\n
\n )}\n
\n \n {(status === 'ACTIVE' && (\n
\n {locales.t('employees.status_active')}\n
\n )) || (\n <>\n
\n {locales.t('employees.status_disabled')}\n
\n onInvite(id)}\n // onKeyPress={() => onInvite()}\n tabIndex={0}\n role=\"button\"\n >\n Выслать приглашение\n {createdDate && ' повторно'}\n
\n \n )}\n \n \n
\n onEdit(id)}>\n \n \n\n {!canBeDeleted && (\n <>\n setUnableToDeleteAdminAlert(true)}>\n \n \n\n {isUnableToDeleteAdminAlert && (\n setUnableToDeleteAdminAlert(false)} />\n )}\n \n )}\n\n {canBeDeleted && !isCurrentEmployee && onDelete && (\n <>\n setDeleteDialogOpen(true)}>\n \n \n\n {isDeleteDialogOpen && (\n setDeleteDialogOpen(false)}\n onDelete={() => onDelete(id)}\n />\n )}\n \n )}\n
\n
\n \n );\n};\n\nexport default ItemComponent;\n","import React from 'react';\n\nimport { Button, makeStyles } from '@material-ui/core';\n\nimport { IButtonProps } from '../IProps';\n\n\ninterface IContextButtonProps extends IButtonProps {\n isStrong?: boolean;\n}\n\n\nconst useStyles = makeStyles(() => ({\n contextButton: {\n textTransform: 'uppercase',\n '& .MuiSvgIcon-root': {\n fontSize: 27,\n },\n },\n\n passive: {\n '& .MuiButton-label': {\n opacity: 0.7,\n },\n },\n}));\n\n\nconst ContextButtonComponent: React.FC = ({\n onClick,\n startIcon,\n title,\n isStrong,\n ...other\n}) => {\n const classes = useStyles();\n let className = classes.contextButton;\n if (!isStrong) {\n className += ` ${classes.passive}`;\n }\n\n return (\n \n {title}\n \n );\n};\n\nexport default ContextButtonComponent;\n","import React from 'react';\nimport { Add } from '@material-ui/icons';\n\nimport {\n Paper,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n makeStyles,\n createStyles,\n Grid,\n Theme,\n Box,\n} from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport Title from '../../Common/Title';\nimport ItemComponent from './Item';\nimport ContextButtonComponent from '../../Common/Button/Context';\nimport { Employees } from '../../../entities';\n\nconst useStyles = makeStyles((theme: Theme) => createStyles({\n table: {\n '& thead th': {\n textTransform: 'uppercase',\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n },\n}));\n\nconst ListComponent: React.FC<{\n isLoading: boolean;\n employees: GM.Employees.Employees;\n onClick: (id: number) => void;\n onEdit: (id: number) => void;\n onAdd: () => void;\n onDelete: (id: number) => void;\n onInvite: (id: number) => void;\n currentEmployee: GM.Employees.Employee | null;\n}> = ({\n isLoading,\n employees,\n onClick,\n onEdit,\n onAdd,\n onDelete,\n onInvite,\n currentEmployee,\n}) => {\n const classes = useStyles();\n const values = Object.values(employees);\n\n return (\n \n \n \n\n {isLoading && <Box p={2}>{locales.t('employees.loading')}</Box>}\n\n {!isLoading && (\n <>\n {values.length > 0 && (\n <Table className={classes.table}>\n <TableHead>\n <TableRow>\n <TableCell>{locales.t('employees.properties.name')}</TableCell>\n <TableCell>{locales.t('employees.properties.email')}</TableCell>\n <TableCell>{locales.t('employees.properties.roles')}</TableCell>\n <TableCell>{locales.t('employees.properties.status')}</TableCell>\n <TableCell>{locales.t('employees.properties.actions')}</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {values.map((employee => {\n const isCurrentEmployee = (currentEmployee && currentEmployee.id === employee.id) || false;\n const canBeDeleted = Employees.employeeCanBeDeleted(employee.id, employees);\n\n return (\n <ItemComponent\n key={employee.id}\n employee={employee}\n isCurrentEmployee={isCurrentEmployee}\n onClick={onClick}\n onEdit={onEdit}\n onInvite={onInvite}\n onDelete={canBeDeleted ? onDelete : undefined}\n canBeDeleted={canBeDeleted}\n />\n );\n }))}\n </TableBody>\n </Table>\n )}\n\n {values.length === 0 && <Box p={3}>{locales.t('employees.empty')}</Box>}\n\n <Box p={2}>\n <ContextButtonComponent\n startIcon={<Add />}\n onClick={onAdd}\n title={locales.t('employees.add')}\n isStrong\n />\n </Box>\n </>\n )}\n </Paper>\n </Grid>\n );\n};\n\nexport default ListComponent;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport ListComponent from '../../../components/Employees/List';\nimport { Employees } from '../../../entities';\n\nexport default function EmployeeListContainer() {\n const deleteMutation = Employees.useDeleteMutation();\n const inviteMutation = Employees.useInviteEmployeeMutation();\n const employees = Employees.useEmployees();\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n const history = useHistory();\n\n const onClick = (id: number) => history.push(`/employees/${id}`);\n const onAdd = () => history.push('/employees/add');\n const onDelete = (id: number) => deleteMutation.mutate({ id });\n const onInvite = (id: number) => inviteMutation.mutate({ id });\n const onEdit = (id: number) => {\n if (currentEmployee && currentEmployee.id === id) {\n history.push('/profile');\n } else {\n history.push(`/employees/${id}/edit`);\n }\n };\n\n return (\n <ListComponent\n isLoading={employees.isLoading}\n employees={employees.data || {}}\n onClick={onClick}\n onEdit={onEdit}\n onAdd={onAdd}\n onDelete={onDelete}\n onInvite={onInvite}\n currentEmployee={currentEmployee}\n />\n );\n}\n","import React from 'react';\n\nimport {\n Divider,\n Box,\n makeStyles,\n Theme,\n Switch,\n} from '@material-ui/core';\n\n\nconst useStyles = makeStyles((theme: Theme) => {\n const spacing2 = theme.spacing(2);\n const spacing3 = theme.spacing(3);\n\n return {\n role: {\n padding: `${spacing2}px ${spacing3}px`,\n },\n\n title: {\n fontWeight: 500,\n fontSize: 16,\n marginBottom: spacing2,\n },\n\n list: {\n fontSize: 12,\n marginBottom: spacing3,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n },\n\n passiveList: {\n color: '#aaaaaa',\n },\n\n error: {\n color: theme.palette.error.main,\n fontSize: 12,\n },\n };\n});\n\nconst RoleDescriptionComponent: React.FC<{\n title: string;\n list: Array<string>;\n isDivider?: boolean;\n isReadonly?: boolean;\n isDisabled?: boolean;\n isOn?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n error?: string;\n}> = ({\n title,\n list,\n isDivider,\n isReadonly,\n isDisabled,\n isOn,\n onChange,\n error,\n}) => {\n const classes = useStyles();\n\n const listClassName = [classes.list];\n if (isReadonly) {\n listClassName.push(classes.passiveList);\n }\n\n return (\n <>\n <Box className={classes.role}>\n <Box className={classes.title}>\n {title}\n </Box>\n\n <Box className={listClassName.join(' ')}>\n <Box>\n {list && list.map(item => (\n <div key={item}>\n {item}\n </div>\n ))}\n </Box>\n <Box>\n {!isReadonly && (\n <Switch\n onChange={onChange}\n checked={isOn}\n color=\"primary\"\n disabled={isDisabled}\n />\n )}\n </Box>\n </Box>\n\n {error && (\n <Box className={classes.error}>{error}</Box>\n )}\n </Box>\n\n {isDivider && <Divider />}\n </>\n );\n};\n\nexport default RoleDescriptionComponent;\n","import React, { useState } from 'react';\nimport moment from 'moment';\n\nimport {\n Grid,\n Paper,\n Divider,\n Box,\n makeStyles,\n Typography,\n Theme,\n} from '@material-ui/core';\n\nimport {\n EditOutlined,\n Delete,\n LockOpen,\n AccountCircle,\n} from '@material-ui/icons';\n\nimport locales from '../../../locales';\nimport { primaryColor } from '../../../theme';\nimport Title from '../../Common/Title';\nimport ContextButtonComponent from '../../Common/Button/Context';\nimport RoleDescription from './RoleDescription';\nimport DeleteDialog from '../Dialog/Delete';\nimport { Employees } from '../../../entities';\n\n\nconst useStyles = makeStyles((theme: Theme) => {\n const spacing1 = theme.spacing(1);\n const spacing2 = theme.spacing(2);\n const spacing3 = theme.spacing(3);\n\n return {\n user: {\n // padding: `${spacing2}px ${spacing3}px`,\n padding: spacing2,\n marginBottom: theme.spacing(4),\n },\n\n role: {\n display: 'inline-block',\n backgroundColor: '#e7ebee',\n padding: `3px ${spacing2}px 2px`,\n marginBottom: spacing2,\n },\n\n // @todo Специальный блок со стилями только из-за того,\n // что цвет через прозрачность сделан\n roleText: {\n opacity: 0.7,\n fontSize: 16,\n textTransform: 'uppercase',\n },\n\n avatar: {\n color: 'rgb(192, 192, 192)',\n fontSize: 56,\n marginTop: -5,\n marginRight: spacing3,\n },\n\n contact: {\n marginBottom: 2,\n color: '#546e7a',\n },\n\n status_active: {\n fontWeight: 500,\n marginTop: spacing2,\n marginBottom: spacing1,\n textTransform: 'uppercase',\n color: primaryColor,\n },\n\n status_disabled: {\n fontWeight: 500,\n marginTop: spacing2,\n marginBottom: spacing1,\n textTransform: 'uppercase',\n },\n\n dates: {\n color: '#aaaaaa',\n fontSize: 12,\n },\n\n innerSystemTitle: {\n color: '#aaaaaa',\n marginBottom: spacing1,\n },\n\n innerSystemValue: {\n fontWeight: 500,\n fontSize: 16,\n },\n };\n});\n\nconst EmployeeComponent: React.FC<{\n employee: GM.Employees.Employee;\n onEdit: () => void;\n onResetPassword?: () => void;\n onDelete?: () => void;\n canBeDeleted: boolean;\n}> = ({\n employee,\n onEdit,\n onResetPassword,\n onDelete,\n canBeDeleted,\n}) => {\n const classes = useStyles();\n const [isDeleteDialogOpen, setDeleteDialogOpen] = useState(false);\n const closeDeleteDialog = () => setDeleteDialogOpen(false);\n const [isUnableToDeleteAdminAlert, setUnableToDeleteAdminAlert] = useState(false);\n\n return (\n <>\n <Grid item md={6} xs={12}>\n <Paper elevation={0}>\n <Box className={classes.user}>\n <Box className={classes.role}>\n <span className={classes.roleText}>\n {locales.t('employees.label')}\n </span>\n </Box>\n\n <Box display=\"flex\">\n <Box flexShrink={0}>\n <AccountCircle className={classes.avatar} />\n </Box>\n\n <Box flexShrink={1}>\n <Typography gutterBottom variant=\"h6\">\n {Employees.getName(employee)}\n </Typography>\n\n {employee.email && (\n <Box className={classes.contact}>\n {employee.email}\n </Box>\n )}\n\n {employee.phone && (\n <Box className={classes.contact}>\n {employee.phone}\n </Box>\n )}\n\n {(employee.status == 'ACTIVE' && (\n <Box className={classes.status_active}>\n {locales.t('employees.status_active')}\n </Box>\n )) || (\n <Box className={classes.status_disabled}>\n {locales.t('employees.status_disabled')}\n </Box>\n )}\n\n <Box className={classes.dates}>\n {employee.createdDate && (\n <div>\n {locales.t('employees.registered')}\n {': '}\n {moment(employee.createdDate).format('LLL')}\n </div>\n )}\n\n {employee.lastModifiedDate && (\n <div>\n {locales.t('employees.modified')}\n {': '}\n {moment(employee.lastModifiedDate).format('LLL')}\n </div>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n\n <Divider />\n\n {/*\n <Box p={3}>\n <div className={classes.innerSystemTitle}>\n {locales.t('employees.properties.iikoEmployee')}\n :\n </div>\n <div className={classes.innerSystemValue}>\n Сидорова Валерия\n </div>\n </Box>\n\n <Divider />\n */}\n\n <Box p={2}>\n <Box>\n <ContextButtonComponent\n startIcon={<EditOutlined />}\n onClick={onEdit}\n title={locales.t('employees.edit')}\n />\n </Box>\n\n {onResetPassword && (\n <Box>\n <ContextButtonComponent\n startIcon={<LockOpen />}\n onClick={onResetPassword}\n title={locales.t('employees.reset_password')}\n />\n </Box>\n )}\n\n {onDelete && (\n <>\n <Box>\n <ContextButtonComponent\n startIcon={<Delete />}\n title={locales.t('employees.delete')}\n color={canBeDeleted ? 'inherit' : 'secondary'}\n onClick={() => {\n if (canBeDeleted) {\n setDeleteDialogOpen(true);\n } else {\n setUnableToDeleteAdminAlert(true);\n }\n }}\n />\n </Box>\n\n {isDeleteDialogOpen && (\n <DeleteDialog onClose={closeDeleteDialog} onDelete={onDelete} />\n )}\n\n {isUnableToDeleteAdminAlert && (\n <Employees.UnableToDeleteAlert onClose={() => setUnableToDeleteAdminAlert(false)} />\n )}\n </>\n )}\n </Box>\n </Paper>\n </Grid>\n <Grid item md={6} xs={12}>\n <Paper elevation={0}>\n <Title\n text={locales.t('employees.properties.authority')}\n borderBottom\n />\n\n {employee.authorities && employee.authorities.map(id => (\n <RoleDescription\n key={id}\n title={locales.t(`employees.properties.authorities.${id}.title`)}\n list={locales.t(`employees.properties.authorities.${id}.list`).split('.')}\n isDivider\n isReadonly\n />\n ))}\n </Paper>\n </Grid>\n </>\n );\n};\n\nexport default EmployeeComponent;\n","import React from 'react';\nimport { Box } from '@material-ui/core';\n\nimport locales from '../../../locales';\n\n\nconst NotFoundComponent: React.FC = () => {\n return (\n <Box p={2}>\n {locales.t('employees.not_found')}\n </Box>\n );\n};\n\nexport default NotFoundComponent;\n","import React, { useEffect } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\n\nimport EmployeeComponent from '../../../components/Employees/Employee';\nimport NotFoundComponent from '../../../components/Employees/Employee/NotFound';\nimport { Employees } from '../../../entities';\nimport { Routers } from '../../../config/constants';\n\n\nexport default function EmployeeContainer() {\n const { isLoading, data: employees } = Employees.useEmployees();\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n const history = useHistory();\n const params = useParams<{employeeId: string}>();\n const deleteMutation = Employees.useDeleteMutation();\n const resetPasswordMutation = Employees.useResetPasswordMutation();\n\n useEffect(() => {\n if (deleteMutation.status === 'success') {\n history.push(Routers.employees);\n }\n }, [deleteMutation.status]);\n\n if (isLoading) {\n return null;\n }\n\n const id = parseInt(params.employeeId, 10);\n const employee = employees && employees[id];\n\n if (!employee) {\n return <NotFoundComponent />;\n }\n\n const canBeDeleted = Employees.employeeCanBeDeleted(id, employees);\n const isCurrentEmployee = (currentEmployee && currentEmployee.id === employee.id) || false;\n\n const onEdit = () => history.push(`/employees/${id}/edit`);\n const onResetPassword = () => resetPasswordMutation.mutate({ id });\n const onDelete = () => {\n if (canBeDeleted) {\n deleteMutation.mutate({ id });\n }\n };\n\n return (\n <EmployeeComponent\n employee={employee}\n onEdit={onEdit}\n onResetPassword={isCurrentEmployee || !Employees.isActive(employee) ? undefined : onResetPassword}\n onDelete={isCurrentEmployee ? undefined : onDelete}\n canBeDeleted={canBeDeleted}\n />\n );\n}\n","import React from 'react';\n\nimport { Button } from '@material-ui/core';\n\nimport { IButtonProps } from '../IProps';\n\n\nconst SolidButtonComponent: React.FC<IButtonProps> = ({\n onClick,\n startIcon,\n title,\n ...other\n}) => (\n <Button\n variant=\"contained\"\n color=\"primary\"\n startIcon={startIcon || null}\n onClick={onClick}\n fullWidth\n {...other}\n >\n {title}\n </Button>\n);\n\nexport default SolidButtonComponent;\n","import React from 'react';\nimport { useFormik } from 'formik';\nimport * as yup from 'yup';\n\nimport {\n Grid,\n Paper,\n Divider,\n Box,\n makeStyles,\n Theme,\n TextField,\n // MenuItem,\n} from '@material-ui/core';\n\nimport locales from '../../../locales';\nimport Title from '../../Common/Title';\nimport RoleDescription from '../Employee/RoleDescription';\nimport Button from '../../Common/Button';\nimport SolidButton from '../../Common/Button/Solid';\nimport { Employees } from '../../../entities';\nimport { formatPhone, parsePhone } from '../../../helpers/helpers';\n// import { innerUsers } from '../../../api/mocks/employees';\n\nconst useStyles = makeStyles((theme: Theme) => {\n const spacing2 = theme.spacing(2);\n const spacing3 = theme.spacing(3);\n\n return {\n form: {\n padding: spacing3,\n paddingTop: 0,\n },\n\n buttons: {\n padding: `${spacing2}px ${spacing3}px`,\n display: 'flex',\n columnGap: spacing2,\n },\n };\n});\n\nconst requiredMessages = 'Обязательно для заполнения';\n\nconst validationCreateSchema = yup.object({\n // firstName: yup\n // .string()\n // .required(requiredMessages),\n // lastName: yup\n // .string()\n // .required(requiredMessages),\n phone: yup\n .string()\n .required(requiredMessages),\n email: yup\n .string()\n .email('Введите корректный адрес эл. почты')\n .required(requiredMessages),\n authorities: yup\n .array()\n .min(1, 'Нужно выбрать хотя бы одну роль'),\n});\n\nconst validationEditSchema = yup.object({\n authorities: yup\n .array()\n .min(1, 'Нужно выбрать хотя бы одну роль'),\n});\n\nconst EmployeeFormComponent: React.FC<{\n data: GM.Employees.Form;\n onCancel: () => void;\n onSubmit: (user: GM.Employees.Form) => void;\n type: 'create' | 'edit';\n canChangeAuthorities: boolean;\n canUnsetAdminAuthority: boolean;\n}> = ({\n data,\n onCancel,\n onSubmit,\n type,\n canChangeAuthorities,\n canUnsetAdminAuthority,\n}) => {\n const classes = useStyles();\n\n const formik = useFormik({\n validationSchema: type === 'edit' ? validationEditSchema : validationCreateSchema,\n\n initialValues: data,\n\n onSubmit: (values) => {\n const employee: GM.Employees.Form = {\n ...values,\n };\n\n onSubmit(employee);\n },\n\n validate: (values) => {\n const errors: {[p: string]: string} = {};\n\n if (values.phone) {\n if (!parsePhone(values.phone)) {\n errors.phone = locales.t('employees.errors.phoneFormat');\n }\n }\n\n return errors;\n },\n });\n\n const { authorities } = formik.values;\n\n const { authorities: authoritiesErrors } = formik.errors;\n let authorityError: string | undefined;\n\n if (formik.submitCount > 0 && authoritiesErrors && formik.touched.authorities) {\n if (Array.isArray(authoritiesErrors)) {\n authorityError = authoritiesErrors.join(' ');\n } else {\n authorityError = authoritiesErrors;\n }\n }\n\n return (\n <>\n <Grid item md={6} xs={12}>\n <Paper elevation={0}>\n <Title text={locales.t('employees.form')} borderBottom />\n\n <Box className={classes.form}>\n <TextField\n fullWidth\n margin=\"normal\"\n label={locales.t('employees.properties.firstName')}\n name=\"firstName\"\n value={formik.values.firstName}\n onChange={formik.handleChange}\n error={formik.touched.firstName && Boolean(formik.errors.firstName)}\n helperText={formik.touched.firstName && formik.errors.firstName}\n />\n\n <TextField\n fullWidth\n margin=\"normal\"\n label={locales.t('employees.properties.lastName')}\n name=\"lastName\"\n value={formik.values.lastName}\n onChange={formik.handleChange}\n error={formik.touched.lastName && Boolean(formik.errors.lastName)}\n helperText={formik.touched.lastName && formik.errors.lastName}\n />\n\n <TextField\n fullWidth\n margin=\"normal\"\n label={locales.t('employees.properties.email')}\n name=\"email\"\n value={formik.values.email}\n onChange={formik.handleChange}\n error={formik.touched.email && Boolean(formik.errors.email)}\n helperText={formik.touched.email && formik.errors.email}\n // Эл. адрес нельзя менять\n disabled={!!data.email}\n />\n\n <TextField\n fullWidth\n margin=\"normal\"\n label={locales.t('employees.properties.phone')}\n name=\"phone\"\n value={formik.values.phone}\n onChange={formik.handleChange}\n error={formik.touched.phone && Boolean(formik.errors.phone)}\n helperText={formik.touched.phone && formik.errors.phone}\n onBlur={(e) => {\n const phoneNumber = parsePhone(e.target.value);\n if (phoneNumber) {\n formik.setFieldValue('phone', formatPhone(phoneNumber));\n }\n }}\n />\n\n {/*\n <TextField\n select\n fullWidth\n margin=\"normal\"\n label={locales.t('employees.properties.iikoEmployee')}\n name=\"iikoEmployeeId\"\n value={formik.values.iikoEmployeeId}\n onChange={formik.handleChange}\n error={formik.touched.iikoEmployeeId && Boolean(formik.errors.iikoEmployeeId)}\n helperText={formik.touched.iikoEmployeeId && formik.errors.iikoEmployeeId}\n >\n {Object.values(innerUsers).map(item => (\n <MenuItem key={item.id} value={item.id}>{item.title}</MenuItem>\n ))}\n </TextField>\n */}\n </Box>\n\n <Divider />\n\n <Box className={classes.buttons}>\n <Button onClick={onCancel} title={locales.t('employees.properties.cancel')} />\n <SolidButton onClick={formik.handleSubmit} title={locales.t('employees.properties.submit')} />\n </Box>\n </Paper>\n </Grid>\n {canChangeAuthorities && (\n <Grid item md={6} xs={12}>\n <Paper elevation={0}>\n <Title text={locales.t('employees.properties.authority')} borderBottom />\n\n {Object.values(Employees.employeeAuthorities).map((authority) => {\n const enabled = authorities && authorities.indexOf(authority.id) !== -1;\n\n return (\n <RoleDescription\n key={authority.id}\n title={locales.t(`employees.properties.authorities.${authority.id}.title`)}\n list={locales.t(`employees.properties.authorities.${authority.id}.list`).split('.')}\n isDivider\n isOn={enabled}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n const result = authorities ? authorities.filter(item => item !== authority.id) : [];\n if (e.target.checked) {\n result.push(authority.id);\n }\n\n formik.setFieldTouched('authorities', true);\n formik.setFieldValue('authorities', result);\n }}\n error={authorityError}\n isDisabled={\n !canChangeAuthorities\n || (enabled && authority.id === 'ADMINISTRATOR' && !canUnsetAdminAuthority)\n }\n />\n );\n })}\n </Paper>\n </Grid>\n )}\n </>\n );\n};\n\nexport default EmployeeFormComponent;\n","import React, { useEffect } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\n\nimport EmployeeFormComponent from '../../../components/Employees/Form';\nimport NotFoundComponent from '../../../components/Employees/Employee/NotFound';\nimport { useRestaurantId } from '../../../selectors/RestaurantSelectors';\nimport { Employees } from '../../../entities';\n\nexport default function EmployeeFormContainer(props: { type: 'add' | 'edit' | 'profile' }) {\n const { type } = props;\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n const restaurantId = useRestaurantId();\n const history = useHistory();\n const params = useParams<{employeeId: string}>();\n const createMutation = Employees.useCreateMutation();\n const updateMutation = Employees.useUpdateMutation();\n\n useEffect(() => {\n if (createMutation.status === 'success') {\n history.push('/employees');\n }\n }, [type, createMutation.status]);\n\n function getEmployeeId(): number | undefined {\n if (type === 'profile') {\n if (currentEmployee) {\n return currentEmployee.id;\n }\n } else if (type === 'edit') {\n const id = parseInt(params.employeeId, 10);\n if (!Number.isNaN(id)) {\n return id;\n }\n }\n\n return undefined;\n }\n\n const id = getEmployeeId();\n if ((id === undefined && type !== 'add') || !restaurantId) {\n return <NotFoundComponent />;\n }\n\n let employee: GM.Employees.Employee | null = null;\n let canBeDeleted = false;\n\n if (type === 'edit' && id) {\n const { data: employees } = Employees.useEmployees();\n if (employees) {\n employee = employees[id];\n canBeDeleted = Employees.employeeCanBeDeleted(id, employees);\n }\n } else if (type === 'profile') {\n employee = currentEmployee;\n }\n\n if (!employee && type !== 'add') {\n return <NotFoundComponent />;\n }\n\n const onSubmit = (employee: GM.Employees.Form) => {\n if (type === 'add') {\n createMutation.mutate({\n requestData: employee,\n restaurantId,\n });\n } else if (id && (type === 'edit' || type === 'profile')) {\n const payload = {\n requestData: employee,\n id,\n isProfile: type === 'profile' || (type === 'edit' && currentEmployee !== null && currentEmployee.id === id),\n };\n\n // Если не админ правит свой профиль, то не нужно отправлять в запросе его роли\n if (\n !(currentEmployee && Employees.isAdmin(currentEmployee))\n && type === 'profile'\n && Object.prototype.hasOwnProperty.call(payload.requestData, 'authorities')\n ) {\n delete payload.requestData.authorities;\n }\n\n updateMutation.mutate(payload);\n }\n };\n\n const data: GM.Employees.Form = {\n firstName: (employee && employee.firstName) || '',\n lastName: (employee && employee.lastName) || '',\n phone: (employee && employee.phone) || '',\n email: (employee && employee.email) || '',\n authorities: (employee && employee.authorities) || [],\n };\n\n return (\n <EmployeeFormComponent\n data={data}\n onCancel={() => history.goBack()}\n onSubmit={onSubmit}\n type={employee ? 'edit' : 'create'}\n canChangeAuthorities={currentEmployee !== null && Employees.isAdmin(currentEmployee)}\n canUnsetAdminAuthority={!employee || canBeDeleted}\n />\n );\n}\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\n\nimport { Routers } from '../config/constants';\nimport PageContentWrap from '../components/Common/PageContentWrap';\n\nimport {\n EmployeeListContainer,\n EmployeeContainer,\n EmployeeFormContainer,\n} from '../containers/Employees';\n\nconst EmployeesPage: React.FC = () => (\n <PageContentWrap fullWidth spacing={0}>\n <Switch>\n <Route exact path={`${Routers.employees}/add`}>\n <EmployeeFormContainer type=\"add\" />\n </Route>\n <Route exact path={`${Routers.employees}/:employeeId`} component={EmployeeContainer} />\n <Route exact path={`${Routers.employees}/:employeeId/edit`}>\n <EmployeeFormContainer type=\"edit\" />\n </Route>\n <Route path={Routers.employees} component={EmployeeListContainer} />\n </Switch>\n </PageContentWrap>\n);\n\nexport default EmployeesPage;\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper/Paper';\nimport PageContentWrap from '../components/Common/PageContentWrap';\n\nimport { EmployeeFormContainer } from '../containers/Employees';\nimport Title from '../components/Common/Title';\nimport locales from '../locales';\n\nexport default function ProfilePage() {\n return (\n <>\n <Paper elevation={3}>\n <Title\n text={locales.t('common.profile')}\n borderBottom\n />\n </Paper>\n <PageContentWrap fullWidth spacing={0}>\n <EmployeeFormContainer type=\"profile\" />\n </PageContentWrap>\n </>\n );\n}\n","import React, { ReactNode } from 'react';\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core/styles';\nimport Paper from '@material-ui/core/Paper';\n\nconst styles = (theme: Theme) => createStyles({\n layout: {\n width: 'auto',\n height: '100vh',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: theme.spacing(3),\n marginRight: theme.spacing(3),\n [theme.breakpoints.up(400 + theme.spacing(3) * 2)]: {\n width: 600,\n marginLeft: 'auto',\n marginRight: 'auto',\n },\n },\n paper: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n minHeight: 600,\n maxWidth: 600,\n padding: '60px 24px 16px',\n [theme.breakpoints.up(400 + theme.spacing(3) * 2)]: {\n padding: '60px 64px 16px',\n },\n borderRadius: 10,\n flex: 1,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles>{\n children: ReactNode;\n}\n\nconst AuthWrapComp: React.FC<IProps> = ({ classes, children }) => (\n <div className=\"imgWrap\">\n <main className={classes.layout}>\n <Paper elevation={3} className={classes.paper}>\n { children }\n </Paper>\n </main>\n </div>\n);\n\nexport default withStyles(styles)(AuthWrapComp);\n","import React, { Fragment } from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\n\nimport logo from '../../../images/logo.svg';\n\nconst styles = createStyles({\n logo: {\n width: 160,\n },\n logoText: {\n fontSize: 16,\n marginTop: 20,\n marginBottom: 10,\n fontFamily: 'inherit',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n text: string;\n}\n\nconst Logo: React.FC<IProps> = ({ classes, text }) => (\n <Fragment>\n <img className={classes.logo} src={logo} alt=\"logo\" />\n <Typography\n className={classes.logoText}\n variant=\"caption\"\n align=\"center\"\n dangerouslySetInnerHTML={{ __html: text }}\n />\n </Fragment>\n);\n\nexport default withStyles(styles)(Logo);\n","import React from 'react';\nimport Typography from '@material-ui/core/Typography';\nimport { WithStyles, withStyles, createStyles } from '@material-ui/core/styles';\n\nimport locales from '../../../locales';\nimport { Routers } from '../../../config/constants';\n\nconst styles = createStyles({\n wrap: {\n paddingTop: 20,\n flex: 1,\n display: 'flex',\n flexDirection: 'column-reverse',\n },\n rules: {\n fontSize: '10px',\n textDecoration: 'underline',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {}\n\nconst UseRules: React.FC<IProps> = ({ classes }) => (\n <div className={classes.wrap}>\n <a className={classes.rules} href={Routers.rules} target=\"noopener\">\n <Typography variant=\"caption\">\n { locales.t('common.useRules') }\n </Typography>\n </a>\n </div>\n);\n\nexport default withStyles(styles)(UseRules);\n","import React, { PropsWithChildren } from 'react';\nimport {\n Button, Typography, withStyles, WithStyles,\n} from '@material-ui/core';\n\nimport AuthWrapComp from '../../components/Auth/AuthWrapComp';\nimport Logo from '../../components/Auth/CommonAuth/Logo';\nimport UseRules from '../../components/Auth/CommonAuth/UseRules';\n\ntype Props = WithStyles & PropsWithChildren<{\n logoSubTitle: string;\n contentTitle?: string;\n note?: string;\n buttonTitle?: string;\n buttonAction?: () => void;\n error?: boolean;\n}>;\n\nfunction NoAuthPage(props: Props) {\n const {\n classes,\n logoSubTitle,\n contentTitle,\n note,\n buttonTitle,\n buttonAction,\n children,\n error,\n } = props;\n\n return (\n <AuthWrapComp>\n <Logo text={logoSubTitle} />\n\n {contentTitle && (\n <Typography\n align=\"center\"\n className={classes.contentTitle}\n color={(error && 'error') || 'inherit'}\n dangerouslySetInnerHTML={{ __html: contentTitle }}\n />\n )}\n\n <div className={classes.contentText}>\n {children}\n </div>\n\n {buttonTitle && buttonAction && (\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={classes.contentBtn}\n onClick={buttonAction}\n >\n {buttonTitle}\n </Button>\n )}\n\n {note && (\n <Typography\n align=\"center\"\n variant=\"caption\"\n className={classes.contentDesc}\n dangerouslySetInnerHTML={{ __html: note }}\n />\n )}\n\n <UseRules />\n </AuthWrapComp>\n );\n}\n\nconst styles = {\n contentTitle: {\n marginTop: 34,\n fontSize: 20,\n lineHeight: '24px',\n },\n contentText: {\n marginTop: 34,\n fontSize: 14,\n },\n contentBtn: {\n marginTop: 34,\n height: 46,\n width: 226,\n },\n contentDesc: {\n marginTop: 34,\n width: 226,\n },\n};\n\nexport default withStyles(styles)(NoAuthPage);\n","import React from 'react';\nimport { Typography, useTheme } from '@material-ui/core';\nimport { NoAuthPage } from '../../../shared';\nimport locales from '../../../locales';\n\nexport function ActivationSuccess() {\n const theme = useTheme();\n\n const messages: Array<string> = [];\n ['message1', 'message2'].forEach((paramName: string) => {\n const param = `activation.successPage.${paramName}`;\n const message = locales.t(param);\n if (message && message !== param) {\n messages.push(message);\n }\n });\n\n return (\n <NoAuthPage\n logoSubTitle={locales.t('activation.successPage.logoSubTitle')}\n contentTitle={locales.t('activation.successPage.contentTitle')}\n note={locales.t('activation.successPage.description')}\n // buttonTitle=\"Отправить еще раз\"\n // buttonAction={() => alert('egegey!')}\n >\n {messages.map((message: string, index: number) => (\n <Typography\n key={message}\n align=\"center\"\n dangerouslySetInnerHTML={{ __html: message }}\n style={index > 0 ? { marginTop: theme.spacing(3) } : {}}\n />\n ))}\n </NoAuthPage>\n );\n}\n","import React from 'react';\nimport { Typography, useTheme } from '@material-ui/core';\nimport { NoAuthPage } from '../../../shared';\nimport locales from '../../../locales';\n\nexport function ActivationError() {\n const theme = useTheme();\n\n const messages: Array<string> = [];\n ['message1', 'message2'].forEach((paramName: string) => {\n const param = `activation.errorPage.${paramName}`;\n const message = locales.t(param);\n if (message && message !== param) {\n messages.push(message);\n }\n });\n\n return (\n <NoAuthPage\n logoSubTitle={locales.t('activation.errorPage.logoSubTitle')}\n contentTitle={locales.t('activation.errorPage.contentTitle')}\n note={locales.t('activation.errorPage.description')}\n error\n >\n {messages.map((message: string, index: number) => (\n <Typography\n key={message}\n align=\"center\"\n dangerouslySetInnerHTML={{ __html: message }}\n style={index > 0 ? { marginTop: theme.spacing(3) } : {}}\n />\n ))}\n </NoAuthPage>\n );\n}\n","import React, { useState } from 'react';\nimport { TextField, Typography, Box } from '@material-ui/core';\nimport { NoAuthPage } from '../../../shared';\nimport locales from '../../../locales';\n\ninterface Props {\n submitPassword: (password: string) => void;\n}\n\nexport function ActivationPassword(props: Props) {\n const { submitPassword } = props;\n const [password, setPassword] = useState('');\n\n return (\n <NoAuthPage\n logoSubTitle={locales.t('activation.setPasswordPage.logoSubTitle')}\n note={locales.t('activation.setPasswordPage.description')}\n buttonTitle={locales.t('activation.setPasswordPage.buttonTitle')}\n buttonAction={() => {\n if (!password) {\n return;\n }\n\n submitPassword(password);\n }}\n >\n <Typography\n variant=\"body1\"\n align=\"center\"\n dangerouslySetInnerHTML={{ __html: locales.t('activation.setPasswordPage.contentBody') }}\n gutterBottom\n />\n\n <Box style={{ textAlign: 'center' }}>\n <TextField\n variant=\"outlined\"\n margin=\"dense\"\n type=\"password\"\n onChange={e => setPassword(e.target.value)}\n value={password}\n required\n placeholder={locales.t('activation.setPasswordPage.textFieldLabel')}\n autoFocus\n />\n </Box>\n </NoAuthPage>\n );\n}\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Employees } from '../../../entities';\nimport PageHeaderWarning from '../../../components/Common/PageHeaderWarning';\nimport { Routers } from '../../../config/constants';\nimport locales from '../../../locales';\n\nconst NoHostessWarning = () => {\n const {\n isLoading: isCurrentLoading,\n data: currentEmployee,\n } = Employees.useCurrentEmployee();\n\n const hasEmployeesAccess = currentEmployee && Employees.hasAccess(currentEmployee, 'employees:access');\n if (!hasEmployeesAccess) {\n return null;\n }\n\n const history = useHistory();\n const {\n isLoading: isEmployeesLoading,\n data: employees,\n } = Employees.useEmployees();\n\n if (\n !isEmployeesLoading\n && !isCurrentLoading\n && history.location.pathname.indexOf(Routers.employees) === -1\n && history.location.pathname !== Routers.profile\n && !Employees.hasActiveHostess(employees)\n ) {\n return (\n <PageHeaderWarning\n onClose={() => history.push(Routers.employees)}\n actionLabel={locales.t('employees.noHostessWarning.actionLabel')}\n title={locales.t('employees.noHostessWarning.title')}\n message={locales.t('employees.noHostessWarning.message')}\n />\n );\n }\n\n return null;\n};\n\nexport default NoHostessWarning;\n","import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport { Button, Dialog, Typography } from '@material-ui/core';\nimport MuiDialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogActions from '@material-ui/core/DialogActions';\n\nimport locales from '../../../locales';\nimport { errorColor } from '../../../theme';\nimport DialogTitle from '../../../components/Common/DialogTitle';\n\nconst DialogContent = withStyles(() => ({\n root: {\n display: 'flex',\n padding: 24,\n },\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles(theme => ({\n root: {\n borderTop: `1px solid ${theme.palette.divider}`,\n margin: 0,\n padding: 24,\n },\n}))(MuiDialogActions);\n\ninterface IProps {\n onClose: () => void;\n onSubmit: () => void;\n}\n\nconst Confirmation: React.FC<IProps> = ({ onClose, onSubmit }) => (\n <Dialog open={true} fullWidth maxWidth=\"md\">\n <DialogTitle onClose={onClose}>\n {locales.t('cashbox.settings.actions.delete.confirmation.title')}\n </DialogTitle>\n <DialogContent>\n <Typography>\n {locales.t('cashbox.settings.actions.delete.confirmation.description')}\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={onClose}\n color=\"secondary\"\n style={{\n color: 'white',\n width: 108,\n textTransform: 'uppercase',\n }}\n >\n {locales.t('cashbox.settings.actions.delete.confirmation.cancel')}\n </Button>\n <Button\n variant=\"contained\"\n onClick={onSubmit}\n style={{\n color: 'white',\n backgroundColor: errorColor,\n textTransform: 'uppercase',\n }}\n >\n {locales.t('cashbox.settings.actions.delete.confirmation.submit')}\n </Button>\n </DialogActions>\n </Dialog>\n);\n\nexport default Confirmation;\n","import React, { useState } from 'react';\nimport { Paper, Typography, Button } from '@material-ui/core';\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core/styles';\n\nimport locales from '../../../locales';\nimport { errorColor } from '../../../theme';\nimport Confirmation from './confirmation';\n\nconst styles = () => createStyles({\n contentWrap: {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column',\n textAlign: 'center',\n padding: '48px 24px',\n },\n button: {\n marginTop: 24,\n color: errorColor,\n border: '1px solid #C42126',\n '&:hover': {\n border: '1px solid #C42126',\n },\n '&:focus': {\n border: '1px solid #C42126',\n },\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n onDelete: () => void;\n}\n\nconst SettingsComponent: React.FC<IProps> = ({ classes, onDelete }) => {\n const [isConfirmation, showConfirmation] = useState(false);\n\n return (\n <>\n {isConfirmation && <Confirmation onClose={() => showConfirmation(false)} onSubmit={onDelete} />}\n\n <Paper elevation={3}>\n <div className={classes.contentWrap}>\n <Typography variant=\"h6\">\n {locales.t('cashbox.settings.title')}\n </Typography>\n <Typography variant=\"body2\">\n {locales.t('cashbox.settings.description')}\n </Typography>\n <Button\n className={classes.button}\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => showConfirmation(true)}\n >\n {locales.t('cashbox.settings.actions.delete.title')}\n </Button>\n </div>\n </Paper>\n </>\n );\n}\n\nconst Settings = withStyles(styles)(SettingsComponent);\n\nexport { Settings };\n","import React from 'react';\nimport { useCashbox, useDeleteMutation } from '../../../entities';\nimport { Settings } from '../ui';\nimport { useRestaurantId } from '../../../selectors/RestaurantSelectors';\n\n\nexport function useCashboxSettingsFeature() {\n const cashbox = useCashbox();\n const deleteMutation = useDeleteMutation();\n const restaurantId = useRestaurantId();\n\n if (cashbox.isLoading || !cashbox.cashbox) {\n return null;\n }\n\n const onDelete = () => {\n if (!restaurantId || !cashbox.cashbox) {\n return;\n }\n\n deleteMutation.mutate({\n hwid: cashbox.cashbox.id,\n restaurantId,\n });\n }\n\n return <Settings onDelete={onDelete} />\n}\n","export function mapResponseToCashbox(response: GM.Cashbox.Response.Status.Success): GM.Cashbox.Cashbox | null {\n if (response.data && response.data.length > 0) {\n return {\n id: response.data[0].hwid,\n };\n }\n\n return null;\n}\n","import React, { Fragment, useCallback } from 'react';\nimport { withStyles } from '@material-ui/core';\nimport Grid from '@material-ui/core/Grid/Grid';\nimport Tabs from '@material-ui/core/Tabs';\nimport Tab from '@material-ui/core/Tab';\nimport { useHistory } from 'react-router-dom';\n\nimport { Routers } from '../config/constants';\nimport locales from '../locales';\nimport PageHeaderWrap from '../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../components/Common/PageContentWrap';\nimport ReservesSystemInfo from '../containers/ReservesSystemInfo';\nimport ReservesSystemSettings from '../containers/ReservesSystemSettings';\nimport ReservesSystemTables from '../containers/ReservesSystemTables';\nimport ReservesSystemAdditionalNotifications from '../containers/ReservesSystemAdditionalNotifications';\nimport ReservesSystemAutoBooking from '../containers/ReservesSystemAutoBooking';\nimport ReservesSystemSchema from '../containers/ReservesSystemSchema';\nimport DeleteRestaurant from '../containers/DeleteRestaurantCont';\nimport CashBoxWarningCont from '../containers/CashBoxWarning';\nimport ReservesSystemWidgets from '../containers/ReservesSystemWidgets';\nimport EmployeesPage from './EmployeesPage';\nimport ProfilePage from './ProfilePage';\nimport { NoHostessWarning, useCashboxSettingsFeature } from '../features';\nimport { Employees } from '../entities';\n\nconst StyledTabs = withStyles({\n root: {\n minHeight: 64,\n },\n})(Tabs);\n\nconst StyledTab = withStyles({\n root: {\n minWidth: 180,\n fontSize: '16px',\n minHeight: 64,\n },\n})(Tab);\n\nconst ReservesSystemSettingsPage: React.FC = () => {\n const cashboxSettings = useCashboxSettingsFeature();\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n\n return (\n <PageContentWrap>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemInfo />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemSettings />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemWidgets />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemAdditionalNotifications />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemAutoBooking />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemTables />\n </Grid>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n {cashboxSettings}\n </Grid>\n {currentEmployee && Employees.isAdmin(currentEmployee) && (\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <div style={{ paddingTop: 24 }}>\n <DeleteRestaurant />\n </div>\n </Grid>\n )}\n </PageContentWrap>\n );\n};\n\nconst ReservesSystemSchemePage: React.FC = () => (\n <PageContentWrap>\n <Grid item xl={12} lg={9} md={12} sm={12} xs={12}>\n <ReservesSystemSchema />\n </Grid>\n </PageContentWrap>\n);\n\n\ntype PageID = 'settings' | 'scheme' | 'employees' | 'profile';\n\nconst routeMap: {\n [view: string]: string\n} = {\n settings: Routers.reservesSystem,\n scheme: Routers.restaurantScheme,\n employees: Routers.employees,\n profile: Routers.profile,\n};\n\ninterface SettingsPageProps {\n view: PageID;\n}\n\nconst SettingsPage: React.FC<SettingsPageProps> = ({ view}) => {\n const history = useHistory();\n const onTabChange = useCallback((event: any, value: string) => {\n if (routeMap[value]) {\n history.push(routeMap[value]);\n }\n }, []);\n\n const { data: e } = Employees.useCurrentEmployee();\n const isRestaurantSettings = e && Employees.hasAccess(e, 'restaurantSettings:access');\n const isEmployeesPage = e && Employees.hasAccess(e, 'employees:access');\n\n return (\n <Fragment>\n {view !== 'profile' && (\n <PageHeaderWrap>\n <StyledTabs\n onChange={onTabChange}\n scrollButtons=\"off\"\n indicatorColor=\"primary\"\n textColor=\"primary\"\n variant=\"fullWidth\"\n centered\n value={view}\n >\n {isRestaurantSettings && <StyledTab label={locales.t('reservesSystem.title')} value=\"settings\" />}\n {isRestaurantSettings && <StyledTab label={locales.t('restaurantSchema.title')} value=\"scheme\" />}\n {isEmployeesPage && <StyledTab label={locales.t('employees.title')} value=\"employees\" />}\n\n {/* <StyledTab label={locales.t('common.profile')} value=\"profile\" /> */}\n </StyledTabs>\n </PageHeaderWrap>\n )}\n\n <CashBoxWarningCont />\n <NoHostessWarning />\n\n {view === 'settings' && <ReservesSystemSettingsPage />}\n {view === 'scheme' && <ReservesSystemSchemePage />}\n {view === 'employees' && <EmployeesPage />}\n {view === 'profile' && <ProfilePage />}\n </Fragment>\n );\n};\n\nexport const ReservesSystemPage: React.FC = () => (\n <SettingsPage view=\"settings\" />\n);\n\nexport const RestaurantSchemePage: React.FC = () => (\n <SettingsPage view=\"scheme\" />\n);\n\nexport const ReservesSystemEmployeesPage: React.FC = () => (\n <SettingsPage view=\"employees\" />\n);\n\nexport const ReservesSystemProfilePage: React.FC = () => (\n <SettingsPage view=\"profile\" />\n);\n","import React, { PureComponent } from 'react';\nimport moment from 'moment';\n\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core/styles/index';\nimport { Divider, ListSubheader } from '@material-ui/core';\nimport Input from '@material-ui/core/Input/index';\nimport InputLabel from '@material-ui/core/InputLabel/index';\nimport MenuItem from '@material-ui/core/MenuItem/index';\nimport FormControl from '@material-ui/core/FormControl/index';\nimport Select from '@material-ui/core/Select/index';\n\nimport locales from '../../locales';\nimport { dashBoardDates } from '../../config/constants';\nimport { monthForPeriodPicker, parseDateForStatisticReq } from '../../helpers/dateHelpers';\nimport { IDate } from '../../types/IDate';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n flexWrap: 'wrap',\n },\n formControl: {\n margin: theme.spacing(),\n width: 250,\n },\n selectEmpty: {\n marginTop: theme.spacing(2),\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n statisticDate: IDate;\n handleGetStatistics: any;\n switchCustomDateModal: any;\n}\n\nclass StatisticsDateSelect extends PureComponent<IProps> {\n handleChange = (event: any) => {\n const {\n handleGetStatistics, switchCustomDateModal,\n } = this.props;\n this.setState({ [event.target.name]: { type: event.target.value } }, () => {\n if (event.target.value !== 'custom') {\n handleGetStatistics({\n type: event.target.value,\n value: parseDateForStatisticReq(event.target.value),\n });\n } else {\n switchCustomDateModal();\n }\n });\n };\n\n onClickCustomDate = () => {\n const { statisticDate, switchCustomDateModal } = this.props;\n if (statisticDate.type === dashBoardDates.custom) {\n switchCustomDateModal();\n }\n };\n\n render() {\n const { classes, statisticDate } = this.props;\n\n return (\n <form className={classes.root} autoComplete=\"off\">\n <FormControl className={classes.formControl}>\n <InputLabel shrink htmlFor=\"statistic-date-placeholder\">\n {locales.t('home.statistic.selectDate.title')}\n </InputLabel>\n <Select\n value={statisticDate.type}\n onChange={this.handleChange}\n input={<Input name=\"statistic-date\" id=\"statistic-date-placeholder\" />}\n displayEmpty\n name=\"statisticDate\"\n className={classes.selectEmpty}\n >\n <MenuItem value={dashBoardDates.today}>\n {locales.t('home.statistic.selectDate.today')}\n </MenuItem>\n <MenuItem value={dashBoardDates.tomorrow}>\n {locales.t('home.statistic.selectDate.tomorrow')}\n </MenuItem>\n <ListSubheader>\n <Divider />\n </ListSubheader>\n <MenuItem value={dashBoardDates.seven}>\n {locales.t('home.statistic.selectDate.seven')}\n </MenuItem>\n <MenuItem value={dashBoardDates.fourteen}>\n {locales.t('home.statistic.selectDate.fourteen')}\n </MenuItem>\n <MenuItem value={dashBoardDates.twentyEight}>\n {locales.t('home.statistic.selectDate.twentyEight')}\n </MenuItem>\n <MenuItem value={dashBoardDates.sixty}>\n {locales.t('home.statistic.selectDate.sixty')}\n </MenuItem>\n <ListSubheader>\n <Divider />\n </ListSubheader>\n <MenuItem value={dashBoardDates.firstMonth}>\n { monthForPeriodPicker(dashBoardDates.firstMonth) }\n </MenuItem>\n <MenuItem value={dashBoardDates.secondMonth}>\n { monthForPeriodPicker(dashBoardDates.secondMonth) }\n </MenuItem>\n <MenuItem value={dashBoardDates.currentMonth}>\n { monthForPeriodPicker(dashBoardDates.currentMonth) }\n </MenuItem>\n <ListSubheader>\n <Divider />\n </ListSubheader>\n <MenuItem\n value={dashBoardDates.custom}\n onClick={this.onClickCustomDate}\n >\n {\n statisticDate.customDate\n ? `${moment(statisticDate.customDate.from).format('D MMM')} - ${moment(statisticDate.customDate.to).format('D MMM')}`\n : locales.t('home.statistic.selectDate.custom')\n }\n </MenuItem>\n </Select>\n </FormControl>\n </form>\n );\n }\n}\n\nexport default withStyles(styles)(StatisticsDateSelect);\n","import React, { PureComponent } from 'react';\nimport moment from 'moment';\n\nimport 'react-dates/initialize';\nimport 'react-dates/lib/css/_datepicker.css';\nimport { DayPickerRangeController } from 'react-dates';\n\nimport { TDate } from '../../../types/IDate';\n\ntype State = {\n startDate: any;\n endDate: any;\n focusedInput: 'startDate' | 'endDate';\n}\n\ninterface Props {\n handleDate: (date: TDate) => void;\n date?: TDate;\n}\n\nclass RangeDatePicker extends PureComponent<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = {\n startDate: null,\n endDate: null,\n focusedInput: 'startDate',\n };\n }\n\n componentDidMount() {\n const { date } = this.props;\n\n if (date) {\n this.setState({\n startDate: moment(date.from),\n endDate: moment(date.to),\n });\n }\n }\n\n /** @description Изменение даты */\n onDatesChange = (\n { startDate, endDate }: any,\n ) => {\n const { handleDate } = this.props;\n\n this.setState({\n startDate,\n endDate,\n });\n\n if (startDate && endDate) {\n const value: TDate = {\n from: startDate.format(),\n to: endDate.endOf('day').format(),\n };\n\n handleDate(value);\n }\n };\n\n render() {\n const { startDate, endDate, focusedInput } = this.state;\n\n return (\n <DayPickerRangeController\n startDate={startDate}\n endDate={endDate}\n onDatesChange={this.onDatesChange}\n focusedInput={focusedInput}\n onFocusChange={focusedInput => this.setState({\n focusedInput: focusedInput || 'startDate',\n })}\n noBorder\n hideKeyboardShortcutsPanel\n numberOfMonths={2}\n />\n );\n }\n}\n\nexport default RangeDatePicker;\n","import CustomDateModal from './CustomDateModal';\n\nexport default CustomDateModal;\n","import React, { useState } from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport Button from '@material-ui/core/Button';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\n\nimport RangeDatePicker from '../DatePickers/RangeDatePicker';\nimport locales from '../../../locales';\nimport { IDate } from '../../../types/IDate';\nimport { dashBoardDates } from '../../../config/constants';\n\n// TODO Поправить шрифты для rangeDatePicker\nconst styles = () => createStyles({\n rangeDatePicker: {\n fontFamily: 'GolosText, Roboto, sans-serif',\n },\n btnWrap: {\n marginTop: 24,\n display: 'flex',\n justifyContent: 'center',\n },\n btnStyle: {\n width: '100%',\n height: 52,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n open: boolean;\n customDate: IDate;\n handleGetStatistics: (date: IDate) => void;\n switchCustomDateModal: () => void;\n}\n\nconst CustomDateModal: React.FC<IProps> = (props) => {\n const {\n classes,\n open,\n customDate,\n handleGetStatistics,\n switchCustomDateModal,\n } = props;\n\n const [date, changeDate] = useState<{from: string, to: string} | null>(customDate.customDate || null);\n\n const onSubmit = () => {\n if (date) {\n handleGetStatistics({\n type: dashBoardDates.custom,\n value: date,\n customDate: date,\n });\n switchCustomDateModal();\n }\n };\n\n return (\n <Dialog\n open={open}\n maxWidth=\"md\"\n aria-labelledby=\"simple-dialog-title\"\n >\n <div className={classes.rangeDatePicker}>\n <RangeDatePicker\n date={customDate.customDate}\n handleDate={changeDate}\n />\n </div>\n <DialogContent className={classes.btnWrap}>\n <Button\n className={classes.btnStyle}\n style={{ marginRight: 24 }}\n onClick={onSubmit}\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n >\n {locales.t('common.apply')}\n </Button>\n <Button\n className={classes.btnStyle}\n variant=\"outlined\"\n onClick={switchCustomDateModal}\n color=\"secondary\"\n >\n {locales.t('common.reject')}\n </Button>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport default withStyles(styles)(CustomDateModal);\n","import React, { PureComponent, Fragment } from 'react';\n\nimport { IProps } from './IStatisticDate';\nimport StatisticDateSelect from '../../components/Common/StatisticsDateSelect';\nimport CustomDateModal from '../../components/Common/CustomDateModal';\nimport { IDate } from '../../types/IDate';\n\nclass HomeCont extends PureComponent<IProps, {}> {\n /** @description Ручка экшена для получения статистики */\n handleGetStatistics = (date: IDate) => {\n const { handleGetStatistics, changeCustomDate } = this.props;\n changeCustomDate(date);\n handleGetStatistics(date);\n };\n\n render() {\n const {\n customDateModalOpen,\n date,\n switchCustomDateModal,\n } = this.props;\n\n return (\n <Fragment>\n <StatisticDateSelect\n switchCustomDateModal={switchCustomDateModal}\n handleGetStatistics={this.handleGetStatistics}\n statisticDate={date}\n />\n\n <CustomDateModal\n open={customDateModalOpen}\n customDate={date}\n switchCustomDateModal={switchCustomDateModal}\n handleGetStatistics={this.handleGetStatistics}\n />\n </Fragment>\n );\n }\n}\n\nexport default HomeCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport StatisticDateCont from './StatisticDateCont';\nimport {\n switchCustomDateModal,\n changeCustomDate,\n} from '../../actions/cabinet/CabinetActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IStateProps, IDispatchProps } from './IStatisticDate';\nimport { IDate } from '../../types/IDate';\n\nfunction mapStateToProps(state: IAppStore, onwProps: { handleGetStatistics: (date: IDate) => void; }): IStateProps {\n return {\n handleGetStatistics: onwProps.handleGetStatistics,\n customDateModalOpen: state.cabinet.StatisticCustomDateModalOpen,\n date: state.cabinet.StatisticDate,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n switchCustomDateModal,\n changeCustomDate,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(StatisticDateCont);\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../locales';\n\ninterface IProps {\n handleClickOpen: () => void;\n}\n\nconst InitMessages: React.FC<IProps> = ({ handleClickOpen }) => (\n <Paper\n elevation={3}\n style={{ padding: 24 }}\n >\n <div style={{ paddingBottom: 24 }}>\n <Typography\n variant=\"h6\"\n gutterBottom\n >\n { locales.t('home.addRestaurantTitle') }\n </Typography>\n <Typography\n variant=\"body1\"\n color=\"textSecondary\"\n gutterBottom\n >\n { locales.t('home.initText1') }\n </Typography>\n </div>\n <Button\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n onClick={handleClickOpen}\n >\n { locales.t('home.initBtnAdd') }\n </Button>\n </Paper>\n);\n\nexport default InitMessages;\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper';\nimport Typography from '@material-ui/core/Typography';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../locales';\n\ninterface IProps {\n handleOpenConnectModal: () => void;\n}\n\nconst FirstStepConnectSystemMessage: React.FC<IProps> = ({ handleOpenConnectModal }) => (\n <Paper elevation={3} style={{ padding: 24 }}>\n <div style={{ paddingBottom: 24 }}>\n <Typography\n gutterBottom\n variant=\"h6\"\n >\n { locales.t('home.connectAutomationSystemTitle') }\n </Typography>\n <Typography\n variant=\"body1\"\n color=\"textSecondary\"\n gutterBottom\n >\n { locales.t('home.connectAutomationSystemText') }\n </Typography>\n </div>\n <Button\n type=\"submit\"\n variant=\"contained\"\n color=\"primary\"\n onClick={handleOpenConnectModal}\n >\n { locales.t('home.connectBtn') }\n </Button>\n </Paper>\n);\n\nexport default FirstStepConnectSystemMessage;\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../../locales';\nimport { errorColor } from '../../../theme';\n\nconst styles = createStyles({\n pinCodeInfoContainer: {\n display: 'flex',\n flexDirection: 'column',\n },\n pinCodeInfo: {\n fontSize: 12,\n color: 'rgba(0, 0, 0, 0.54)',\n textAlign: 'center',\n },\n error: {\n color: errorColor,\n },\n pinCodeView: {\n display: 'flex',\n paddingBottom: 24,\n },\n btnMargin: {\n marginTop: 20,\n },\n pinCodeItem: {\n display: 'flex',\n justifyContent: 'center',\n width: 32,\n fontSize: 36,\n margin: '0 8px',\n borderBottom: 'solid 2px rgba(0, 0, 0, 0.87)',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n pinCode?: string;\n minutes: string;\n seconds: string;\n timeCompleted: boolean;\n handleGetPinCode: () => void;\n}\n\nconst PinCodeView: React.FC<IProps> = ({\n classes, pinCode, minutes, seconds, timeCompleted, handleGetPinCode,\n}) => {\n const connectedInfo = locales.t('home.pinCodeInfo', { minutes, seconds });\n const parsePinCode = pinCode\n ? pinCode.split('')\n : ['', '', '', '', '', ''];\n const error = (\n <div className={classes.pinCodeInfoContainer}>\n { locales.t('home.pinCodeError') }\n <Button\n className={classes.btnMargin}\n variant=\"contained\"\n color=\"primary\"\n onClick={handleGetPinCode}\n >\n { locales.t('home.getPinCodeAgainBtn') }\n </Button>\n </div>\n );\n\n return (\n <div>\n <div className={classes.pinCodeView}>\n { parsePinCode.map((item, index) => (\n <div\n className={classes.pinCodeItem}\n key={index.toString()}\n >\n { item }\n </div>\n )) }\n </div>\n <div className={classNames(classes.pinCodeInfo, { [classes.error]: timeCompleted })}>\n { (timeCompleted) ? error : connectedInfo }\n </div>\n </div>\n );\n};\n\nexport default withStyles(styles)(PinCodeView);\n","import React, { Component } from 'react';\nimport Button from '@material-ui/core/Button';\nimport Countdown, { zeroPad } from 'react-countdown-now';\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\n\nimport PinCode from './PinCode';\nimport locales from '../../../locales';\n\nconst styles = {\n content: {\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n alignItems: 'center',\n height: 300,\n },\n btnMargin: {\n marginTop: 20,\n },\n};\n\n// TODO Переписать счетчик, убрать react-countdown-now\nclass ConnectSystemForm extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showCountdown: true,\n };\n }\n\n /**\n * Решаем проблему с отображением счетчика при повторном запросе пинкода.\n * Если не перерендерить счетчик, то отсчет повторно не запускается.\n */\n handleRerunCountdown = () => {\n const { handleGetPinCode } = this.props;\n this.setState({\n showCountdown: false,\n }, () => {\n handleGetPinCode();\n this.setState({\n showCountdown: true,\n });\n });\n };\n\n renderCountdown = ({ minutes, seconds, completed }) => {\n const { pinCode } = this.props;\n\n return (\n <PinCode\n pinCode={pinCode}\n minutes={zeroPad(minutes)}\n seconds={zeroPad(seconds)}\n timeCompleted={completed}\n handleGetPinCode={this.handleRerunCountdown}\n />\n );\n };\n\n render() {\n const {\n classes,\n pinCode,\n timeLeft,\n connectStatus,\n handleGetPinCode,\n handleCloseConnectModal,\n } = this.props;\n\n const { showCountdown } = this.state;\n\n if (connectStatus) {\n return (\n <div className={classes.content}>\n <Typography variant=\"h6\" component=\"h2\" color=\"primary\">\n {locales.t('home.pinCodeSuccess')}\n </Typography>\n <Button\n className={classes.btnMargin}\n variant=\"contained\"\n color=\"primary\"\n onClick={handleCloseConnectModal}\n >\n {locales.t('home.pinCodeSuccessBtn')}\n </Button>\n </div>\n );\n }\n\n return (\n <div className={classes.content}>\n {!pinCode && (\n <div>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={handleGetPinCode}\n >\n {locales.t('home.getPinCodeBtn')}\n </Button>\n </div>\n )}\n {pinCode && timeLeft && showCountdown\n && (\n <Countdown\n date={Date.now() + (timeLeft * 1000)}\n renderer={this.renderCountdown}\n onComplete={() => console.log('timer end')}\n />\n )}\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(ConnectSystemForm);\n","import React from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport DialogContentText from '@material-ui/core/DialogContentText';\n\nimport locales from '../../../locales';\n\nconst styles = createStyles({\n contentText: {\n paddingTop: 8,\n color: '#323232',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {}\n\nconst ConnectInstruction: React.FC<IProps> = ({ classes }) => (\n <div>\n <DialogContentText className={classes.contentText}>\n <div dangerouslySetInnerHTML={{ __html: locales.t('home.connectFormDescription', {\n tagStart: '<a href=\"https://guestme.ru/getting-started/new-rest/\" style=\"text-decoration: underline\" >',\n tagEnd: '</a>',\n interpolation: { escapeValue: false },\n }),\n }}\n />\n </DialogContentText>\n </div>\n);\n\nexport default withStyles(styles)(ConnectInstruction);\n","import React from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\n\nimport locales from '../../../locales';\nimport DialogTitle from '../../Common/DialogTitle';\nimport ConnectSystemForm from './ConnectSystemForm';\nimport ConnectInstruction from './ConnectInstruction';\n\nconst styles = createStyles({\n dialogWidth: {\n maxWidth: 630,\n },\n content: {\n paddingTop: '20px',\n },\n rulesText: {\n fontSize: 12,\n color: '#cbcbcb',\n paddingBottom: 12,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n modalOpen: boolean;\n pinCode?: string;\n timeLeft: number;\n handleGetPinCode: () => void;\n handleCloseConnectModal: () => void;\n connectStatus: boolean;\n}\n\nconst ConnectSystemModal: React.FC<IProps> = ({\n classes,\n modalOpen,\n pinCode,\n timeLeft,\n handleGetPinCode,\n handleCloseConnectModal,\n connectStatus,\n}) => (\n <Dialog\n open={modalOpen}\n maxWidth=\"sm\"\n classes={{ paper: classes.dialogWidth }}\n >\n <DialogTitle onClose={handleCloseConnectModal}>\n { locales.t('home.connectFormTitle') }\n </DialogTitle>\n\n <DialogContent>\n <ConnectInstruction />\n <ConnectSystemForm\n connectStatus={connectStatus}\n pinCode={pinCode}\n timeLeft={timeLeft}\n handleGetPinCode={handleGetPinCode}\n handleCloseConnectModal={handleCloseConnectModal}\n />\n <DialogContentText className={classes.rulesText}>\n { locales.t('home.connectFormImportantDescription') }\n </DialogContentText>\n </DialogContent>\n </Dialog>\n);\n\nexport default withStyles(styles)(ConnectSystemModal);\n","import React from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography/Typography';\n\nconst styles = () => createStyles({\n wrap: {\n paddingBottom: 24,\n width: '100%',\n },\n numWrap: {\n marginTop: 20,\n display: 'flex',\n },\n num: {\n fontSize: '2em',\n fontWeight: 500,\n },\n numMetrics: {\n fontSize: 10,\n paddingTop: 14,\n paddingLeft: 8,\n width: '100%',\n },\n columnHeader: {\n height: 20,\n display: 'flex',\n alignItems: 'center',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n type: string;\n stat: number;\n metric?: number;\n}\n\nconst HomeStatisticItem: React.FC<IProps> = ({\n classes, type, stat, metric,\n}) => {\n let color: 'textPrimary' | 'error' | 'primary' = 'textPrimary';\n let metricsColor: 'textPrimary' | 'error' | 'primary' = 'textPrimary';\n let isVisitor = false;\n\n if (metric && metric > 0) {\n metricsColor = 'primary';\n color = 'primary';\n } else if (metric && metric < 0) {\n metricsColor = 'error';\n color = 'error';\n } else {\n metricsColor = 'textPrimary';\n color = 'textPrimary';\n }\n\n if ((type === 'increaseVisitors' || type === 'allReserve') && (stat < 0)) {\n color = 'error';\n } else if ((type === 'increaseVisitors') && (stat > 0)) {\n color = 'primary';\n isVisitor = true;\n }\n\n if ((type === 'waitingGuests') && (stat > 0)) {\n color = 'primary';\n }\n\n if (type === 'allRejectsReserve') {\n metricsColor = 'textPrimary';\n color = 'textPrimary';\n }\n\n if (type === 'totalCancelledByRestaurant') {\n metricsColor = 'error';\n color = 'error';\n }\n\n const percent = type === 'increaseVisitors' ? '%' : '';\n const plus = isVisitor ? '+' : '';\n\n return (\n <div style={{ borderBottom: 'none', display: 'flex', flex: 1 }}>\n <div>\n <div className={classes.columnHeader}>\n <Typography variant=\"caption\">\n { type }\n </Typography>\n </div>\n <div className={classes.numWrap}>\n <Typography variant=\"h4\" className={classes.num} color={color}>\n { `${plus}${stat}${percent}`}\n </Typography>\n {\n metric\n && (\n <Typography className={classes.numMetrics} variant=\"caption\" color={metricsColor}>\n {`${(metric > 0) ? '+' : ''}${metric}%`}\n </Typography>\n )\n }\n </div>\n </div>\n </div>\n );\n};\n\nexport default withStyles(styles)(HomeStatisticItem);\n","import React from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table/index';\nimport TableBody from '@material-ui/core/TableBody/index';\nimport TableCell from '@material-ui/core/TableCell/index';\nimport TableRow from '@material-ui/core/TableRow/index';\n\nimport StatisticItem from './HomeStatisticItem';\nimport locales from '../../../locales';\nimport { TStatistics } from '../../../types/IHomeStore';\n\nconst styles = createStyles({\n statistic: {\n display: 'flex',\n justifyContent: 'center',\n minHeight: 140,\n },\n statisticItem: {\n padding: '24px 10px',\n },\n tableHeader: {\n fontWeight: 500,\n padding: 24,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n statistic?: TStatistics;\n moneySymbol: string;\n}\n\nconst HomeStatisticsTable: React.FC<IProps> = ({ classes, statistic, moneySymbol }) => {\n const renderStats = statistic || {\n period: {\n totalSuccessful: 0,\n totalExpectingGuests: 0,\n totalClosed: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalCanceled: 0,\n totalSkipped: 0,\n averageReceiptAmount: 0,\n },\n percent: {\n totalSuccessful: 0,\n totalExpectingGuests: 0,\n totalClosed: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalCanceled: 0,\n totalSkipped: 0,\n averageReceiptAmount: 0,\n },\n previous: {\n totalSuccessful: 0,\n totalExpectingGuests: 0,\n totalClosed: 0,\n totalCancelledByGuest: 0,\n totalCancelledByRestaurant: 0,\n totalCanceled: 0,\n totalSkipped: 0,\n averageReceiptAmount: 0,\n },\n };\n\n return (\n <div className={classes.statistic}>\n <Table>\n <TableBody>\n <TableRow key=\"1\">\n <TableCell\n className={classes.tableHeader}\n component=\"th\"\n scope=\"row\"\n >\n Успешные\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.allReserve')}\n stat={renderStats.period.totalSuccessful}\n metric={renderStats.percent.totalSuccessful}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.waitingGuests')}\n stat={renderStats.period.totalExpectingGuests}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.closedInvoice')}\n stat={renderStats.period.totalClosed}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.averageCheck', { moneySymbol })}\n stat={renderStats.period.averageReceiptAmount}\n metric={renderStats.percent.averageReceiptAmount}\n />\n </TableCell>\n </TableRow>\n <TableRow key=\"2\">\n <TableCell\n className={classes.tableHeader}\n component=\"th\"\n scope=\"row\"\n >\n Отмена\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.allRejectsReserve')}\n stat={renderStats.period.totalCanceled}\n metric={renderStats.percent.totalCanceled}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.missed')}\n stat={renderStats.period.totalSkipped}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.totalCancelledByGuest')}\n stat={renderStats.period.totalCancelledByGuest}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('home.statistic.totalCancelledByRestaurant')}\n stat={renderStats.period.totalCancelledByRestaurant}\n />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n );\n};\n\nexport default withStyles(styles)(HomeStatisticsTable);\n","import React, { PureComponent } from 'react';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport { Bar } from 'react-chartjs-2';\nimport _ from 'lodash';\nimport { primaryColor } from '../../../theme';\n\nconst styles = {\n container: {\n height: 260,\n padding: 24,\n },\n};\n\nconst options = {\n scales: {\n xAxes: [{\n gridLines: {\n drawOnChartArea: false,\n lineWidth: 0,\n },\n ticks: {\n fontSize: 11,\n },\n }],\n yAxes: [{\n gridLines: {\n drawOnChartArea: false,\n lineWidth: 0,\n },\n ticks: {\n beginAtZero: true,\n callback: (value) => {\n if (Math.floor(value) === value) {\n return value;\n }\n },\n },\n }],\n },\n legend: false,\n display: false,\n maintainAspectRatio: false,\n};\n\nclass Chart extends PureComponent {\n render() {\n const { classes } = this.props;\n\n const data = {\n labels: _.get(this.props.data, 'labels'),\n datasets: [\n {\n fill: false,\n backgroundColor: primaryColor,\n borderColor: primaryColor,\n pointBorderColor: 'rgba(75,192,192,1)',\n pointBackgroundColor: '#fff',\n pointHoverBackgroundColor: 'rgba(75,192,192,1)',\n pointHoverBorderColor: 'rgba(220,220,220,1)',\n barThickness: 10,\n data: _.get(this.props.data, 'total'),\n },\n ],\n };\n\n return (\n <div className={classes.container}>\n <Bar\n data={data}\n options={options}\n />\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(Chart);\n","import React, { Fragment } from 'react';\n\nimport Paper from '@material-ui/core/Paper/Paper';\nimport Grid from '@material-ui/core/Grid/index';\n\nimport StatisticsTable from './HomeStatisticTable';\nimport ReserveStatisticChart from '../../Common/Charts/ReserveStatisticChart';\nimport locales from '../../../locales';\nimport Title from '../../Common/Title';\nimport { TAttendance, TStatistics } from '../../../types/IHomeStore';\n\ninterface IProps {\n statistic?: TStatistics;\n attendance?: Array<TAttendance>;\n moneySymbol: string;\n}\n\nconst HomeStatistics: React.FC<IProps> = ({ statistic, attendance, moneySymbol }) => (\n <Fragment>\n <Grid item xs={12} lg={6}>\n <Paper elevation={3}>\n <Title\n text={locales.t('home.statistic.label')}\n // helps=\"Здесь должен быть текст подсказки\"\n borderBottom\n spaceBetween\n />\n <StatisticsTable statistic={statistic} moneySymbol={moneySymbol} />\n </Paper>\n </Grid>\n <Grid item xs={12} lg={6}>\n <Paper elevation={3} style={{ height: '100%' }}>\n <Title\n text={locales.t('home.attendance.label')}\n // helps=\"Здесь должен быть текст подсказки\"\n borderBottom\n spaceBetween\n />\n <ReserveStatisticChart data={attendance} />\n </Paper>\n </Grid>\n </Fragment>\n);\n\nexport default HomeStatistics;\n","import React, { PureComponent, Fragment } from 'react';\nimport _ from 'lodash';\n\nimport Grid from '@material-ui/core/Grid/Grid';\nimport Typography from '@material-ui/core/Typography';\n\nimport { IProps } from './IHomeCont';\nimport StatisticDateCont from '../StatisticDateCont';\nimport InitMessages from '../../components/Home/InitMessages';\nimport ConnectSystemMessage from '../../components/Home/FirstStepConnectSystemMessage';\nimport ConnectSystemModal from '../../components/Home/ConnectSystemModal';\n// import ServiceStatus from '../../components/Home/ServiceStatus'; - Убрали в рамках задачи DEV-244\nimport locales from '../../locales';\nimport HomeStatistics from '../../components/Home/HomeStatistics';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport CashBoxWarningCont from '../CashBoxWarning';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport { IDate } from '../../types/IDate';\nimport { NoHostessWarning } from '../../features';\n\nclass HomeCont extends PureComponent<IProps, {}> {\n componentDidMount() {\n const { currentRestaurant } = this.props;\n if (currentRestaurant && _.has(currentRestaurant, 'id')) {\n // this.handleGetCashBoxStatus();\n this.handleGetStatistics();\n }\n }\n\n /** @description Запрашиваем статус ресторана в случае редактирования поля currentRestaurant */\n componentDidUpdate(prevProps: IProps) {\n const { currentRestaurant } = this.props;\n\n if (!_.isUndefined(currentRestaurant) && prevProps.currentRestaurant !== currentRestaurant) {\n // this.handleGetCashBoxStatus();\n this.handleGetStatistics();\n }\n }\n\n /** @description Ручка для экшена для получения пинкода ресторана */\n handleGetPinCode = () => {\n const { currentRestaurant, getRestaurantPinCode } = this.props;\n if (currentRestaurant) {\n getRestaurantPinCode(currentRestaurant.id);\n }\n };\n\n // Убрали в рамках задачи DEV-244\n // /** @description Ручка для октрытия/закрытия окна авторизации в iiko */\n // handleOpenAuthIikoModal = () => {\n // const { switchAuthIikoModal } = this.props;\n // switchAuthIikoModal();\n // };\n //\n // /** @description Ручка для переключения приёма брони */\n // handleSwitchBookingProcessor = () => {\n // const { currentRestaurant, switchBookingProcessor } = this.props;\n // if (currentRestaurant) {\n // const processorType = currentRestaurant.settings.bookingProcessor === 'CASHBOX' ? 'API' : 'CASHBOX';\n //\n // switchBookingProcessor({\n // restaurantId: currentRestaurant.id,\n // processorType,\n // });\n // }\n // };\n\n /** @description Ручка для получения статуса ресторана */\n // handleGetCashBoxStatus = () => {\n // const { currentRestaurant, getCashBoxConnectStatus } = this.props;\n // if (currentRestaurant && _.has(currentRestaurant, 'id')) {\n // getCashBoxConnectStatus(currentRestaurant.id);\n // }\n // };\n\n /** @description Ручка экшена для получения статистики */\n handleGetStatistics = (date?: IDate) => {\n const { currentRestaurant, getRestaurantStatistics, getRestaurantAttendances } = this.props;\n\n if (currentRestaurant) {\n getRestaurantStatistics(currentRestaurant.id, date);\n getRestaurantAttendances(currentRestaurant.id, date);\n }\n };\n\n render() {\n const {\n restaurantList,\n currentRestaurant,\n home,\n // needAuthFromIiko, - Убрали в рамках задачи DEV-244\n cashBoxStatus,\n currentRestaurantStatistic,\n currentRestaurantAttendance,\n openCreateModal,\n switchPinCodeModal,\n loading,\n moneySymbol,\n } = this.props;\n\n const showFirstStep = restaurantList.length === 0;\n const showSecondStep = !_.isNil(currentRestaurant) && cashBoxStatus === undefined;\n\n // Убрали в рамках задачи DEV-244\n // const bookingProcessor = !_.isNil(currentRestaurant) && currentRestaurant.settings.bookingProcessor === 'CASHBOX';\n\n // const ServiceStatusComp = !_.isNil(currentRestaurant) && (\n // <Grid item md={12} lg={6} xs={12}>\n // <ServiceStatus\n // needAuthFromIiko={needAuthFromIiko}\n // handleOpenAuthIikoModal={this.handleOpenAuthIikoModal}\n // handleSwitchBookingProcessor={this.handleSwitchBookingProcessor}\n // bookingProcessor={bookingProcessor}\n // cashBoxStatus={cashBoxStatus}\n // handleOpenConnectModal={switchPinCodeModal}\n // />\n // </Grid>\n // );\n\n const isActive = !showFirstStep && !showSecondStep;\n\n const stepsComponents = () => {\n if (showFirstStep && !loading) {\n return (\n <Grid item lg={6}>\n <InitMessages handleClickOpen={openCreateModal} />\n </Grid>\n );\n } if (showSecondStep && !loading) {\n return (\n <Fragment>\n <Grid item lg={6}>\n <ConnectSystemMessage handleOpenConnectModal={switchPinCodeModal} />\n </Grid>\n {/* { ServiceStatusComp } */}\n </Fragment>\n );\n }\n return (\n <Fragment>\n <HomeStatistics\n statistic={currentRestaurantStatistic}\n attendance={currentRestaurantAttendance}\n moneySymbol={moneySymbol}\n />\n {/* { ServiceStatusComp } */}\n </Fragment>\n );\n };\n\n return (\n <Fragment>\n <PageHeaderWrap>\n <Typography variant=\"h6\">\n { locales.t('home.title') }\n </Typography>\n { isActive && <StatisticDateCont handleGetStatistics={this.handleGetStatistics} /> }\n </PageHeaderWrap>\n <CashBoxWarningCont />\n <NoHostessWarning />\n\n { /* direction={isActive ? 'row' : 'column'} - нужно будет вернуть вместе с ServiceStatusComp */ }\n <PageContentWrap fullWidth>\n { stepsComponents() }\n </PageContentWrap>\n\n <ConnectSystemModal\n pinCode={home.pinCode}\n timeLeft={home.timeLeft}\n connectStatus={home.connectStatus}\n modalOpen={home.pinCodeModal}\n handleGetPinCode={this.handleGetPinCode}\n handleCloseConnectModal={switchPinCodeModal}\n />\n </Fragment>\n );\n }\n}\n\nexport default HomeCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport HomeCont from './HomeCont';\nimport {\n // getCashBoxConnectStatus,\n openCreateModal,\n switchAuthIikoModal,\n} from '../../actions/cabinet/CabinetActions';\nimport {\n resetConnectStatus,\n switchPinCodeModal,\n switchBookingProcessor,\n getRestaurantStatistics,\n getRestaurantAttendances,\n getRestaurantPinCode,\n} from '../../actions/home/HomeActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IStateProps, IDispatchProps } from './IHomeCont';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n restaurantList: state.cabinet.restaurantList,\n currentRestaurant: state.cabinet.currentRestaurant,\n home: state.home,\n needAuthFromIiko: state.cabinet.iikoAuth.needAuthFromIiko,\n cashBoxStatus: state.cabinet.cashBoxStatus,\n currentRestaurantStatistic: state.home.currentRestaurantStatistic,\n currentRestaurantAttendance: state.home.currentRestaurantAttendance,\n loading: state.loading.isLoading,\n moneySymbol: state.cabinet.moneySymbol,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch): IDispatchProps {\n return bindActionCreators({\n openCreateModal,\n resetConnectStatus,\n switchAuthIikoModal,\n switchPinCodeModal,\n switchBookingProcessor,\n // getCashBoxConnectStatus,\n getRestaurantStatistics,\n getRestaurantAttendances,\n getRestaurantPinCode,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(HomeCont);\n","import {\n createStyles, Theme,\n} from '@material-ui/core/styles';\n\nimport { tabletWidth } from '../../config/constants';\n\nconst styles = (theme: Theme) => createStyles({\n datePickerWrap: {\n display: 'flex',\n alignItems: 'center',\n width: '80%',\n [theme.breakpoints.down(tabletWidth)]: {\n width: '100%',\n },\n },\n btnWrap: {\n width: 60,\n height: 60,\n position: 'fixed',\n bottom: 24,\n right: 24,\n },\n leftIcon: {\n marginRight: 21,\n },\n settingsIcon: {\n width: 24,\n height: 24,\n objectFit: 'contain',\n opacity: 0.54,\n cursor: 'pointer',\n },\n filter: {\n display: 'flex',\n alignItems: 'center',\n },\n});\n\nexport default styles;\n","import React, { useState, useEffect} from 'react';\n\nimport Menu from '@material-ui/core/Menu';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Checkbox from '@material-ui/core/Checkbox';\n\nimport locales from '../../../locales';\nimport { TFilterListItem } from '../../../types/IBookingStore';\n\ninterface OwnProps {\n anchorEl: HTMLElement;\n filterIsOpen: boolean;\n handleMenuClose: (\n e: React.SyntheticEvent<HTMLElement>,\n newFilters?: TFilterListItem,\n itemList?: TFilterListItem,\n ) => void;\n itemList: Array<TFilterListItem>;\n}\n\ntype Props = OwnProps;\n\nconst FilterList: React.FC<Props> = ({\n anchorEl,\n filterIsOpen,\n handleMenuClose,\n itemList,\n}) => {\n const [items, changeItems] = useState<Array<TFilterListItem>>(itemList);\n\n useEffect(() => {\n changeItems(itemList);\n }, [itemList]);\n\n /** @description Редактирование фильтра */\n const onChange = (filter: TFilterListItem) => {\n changeItems(items.map(\n i => i.value === filter.value\n ? { value: filter.value, active: !filter.active }\n : i,\n ));\n };\n\n return (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n open={filterIsOpen}\n // @ts-ignore\n onClose={e => handleMenuClose(e, items, itemList)}\n >\n {\n items.map(item => (\n <MenuItem key={item.value} onClick={() => onChange(item)}>\n <Checkbox\n style={{ paddingLeft: 0 }}\n checked={item.active}\n onChange={() => onChange(item)}\n color=\"primary\"\n />\n { locales.t(`booking.filters.${item.value}`) }\n </MenuItem>\n ))\n }\n </Menu>\n );\n};\n\nexport default FilterList;\n","import React, { Fragment, useState } from 'react';\n\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\nimport Tooltip from '@material-ui/core/Tooltip/';\nimport IconButton from '@material-ui/core/IconButton/';\nimport FilterListIcon from '@material-ui/icons/FilterList';\nimport Typography from '@material-ui/core/Typography';\n\nimport FilterList from './FilterList';\nimport locales from '../../../locales';\nimport { TBookingFilters, TFilterListItem } from '../../../types/IBookingStore';\n\nconst rows: Array<{\n id: string;\n sortable?: boolean;\n filters?: boolean;\n label: string;\n}> = [\n { id: 'status', filters: true, label: 'СТАТУС' },\n { id: 'date', sortable: true, label: 'ВРЕМЯ' },\n { id: 'guests', label: 'ГОСТЕЙ' },\n { id: 'table', label: 'ЗАЛ, СТОЛ' },\n { id: 'name', label: 'ИМЯ' },\n { id: 'phone', label: 'ТЕЛЕФОН' },\n { id: 'comment', label: 'КОММЕНТАРИЙ' },\n { id: 'createDate', label: 'СОЗДАН' },\n { id: 'source', label: 'ИСТОЧНИК' },\n];\n\ninterface IProps {\n order: 'asc' | 'desc';\n orderBy: string;\n onRequestSort: any;\n filters: TBookingFilters;\n handleFilterBy: any;\n}\n\ninterface IFilterState {\n anchorEl?: HTMLElement;\n filterIsOpen: boolean;\n}\n\nconst EnhancedTableHead: React.FC<IProps> = ({\n order,\n orderBy,\n filters,\n handleFilterBy,\n onRequestSort,\n}) => {\n /** @description Выпадающий список фильтра */\n const [filter, changeFilterState] = useState<IFilterState>({\n anchorEl: undefined,\n filterIsOpen: false,\n });\n\n /** @description Отправка запроса и закрытие списка фильтров */\n const handleChangeFilters = (\n e: React.SyntheticEvent<HTMLElement>,\n newFilters?: TFilterListItem,\n oldFilters?: TFilterListItem,\n ) => {\n const { filterIsOpen } = filter;\n\n if (filterIsOpen && newFilters && newFilters !== oldFilters) {\n handleFilterBy(newFilters);\n }\n\n changeFilterState({\n filterIsOpen: !filterIsOpen,\n anchorEl: filterIsOpen ? undefined : e.currentTarget,\n });\n };\n\n /** @description Отправка запроса и закрытие списка фильтров */\n const handleFilterSwitcher = (event: React.SyntheticEvent<HTMLElement>) => {\n const { filterIsOpen } = filter;\n\n changeFilterState({\n filterIsOpen: !filterIsOpen,\n anchorEl: filterIsOpen ? undefined : event.currentTarget,\n });\n };\n\n /** @description Переключение сортировки */\n const handleSort = (property: any) => (event: any) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead>\n <TableRow style={{ backgroundColor: '#f6f9f9' }}>\n {rows.map(row => (\n <TableCell\n key={row.id}\n align=\"center\"\n padding=\"none\"\n sortDirection={orderBy === row.id && order}\n >\n {row.sortable\n ? (\n <TableSortLabel\n active={orderBy === row.id}\n direction={order}\n onClick={handleSort(row.id)}\n >\n <Typography variant=\"overline\" style={{ fontSize: 11, color: '#aaaaaa' }}>\n {row.label}\n </Typography>\n </TableSortLabel>\n )\n : (\n <p>\n <Typography variant=\"overline\" style={{ fontSize: 11, color: '#aaaaaa' }}>\n {row.label}\n </Typography>\n { row.filters && (\n <Fragment>\n <IconButton style={{ padding: '0 0 0 6px' }} onClick={handleFilterSwitcher} aria-label=\"filter list\">\n <Tooltip title={locales.t('booking.filters.title')}>\n <FilterListIcon />\n </Tooltip>\n </IconButton>\n <FilterList\n // @ts-ignore\n anchorEl={filter.anchorEl}\n filterIsOpen={filter.filterIsOpen}\n handleMenuClose={handleChangeFilters}\n itemList={filters}\n />\n </Fragment>\n )}\n </p>\n )\n }\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default EnhancedTableHead;\n","import React, { Component } from 'react';\nimport _ from 'lodash';\n\nimport {\n withStyles, createStyles, WithStyles,\n} from '@material-ui/core/styles';\nimport Table from '@material-ui/core/Table';\nimport TableBody from '@material-ui/core/TableBody';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport Paper from '@material-ui/core/Paper';\n\nimport EnhancedTableHead from './EnhancedTableHead';\nimport locales from '../../../locales';\nimport { parseDateFromBookingList, parseCreateDateFromBookingList } from '../../../helpers/dateHelpers';\nimport { parsingMergedTables } from '../../../helpers/bookingHelpers';\nimport { parsePhoneNumber } from '../../../helpers/reserveHelpers';\nimport { TReserve, TBookingFilters, TSort } from '../../../types/IBookingStore';\nimport { filterBookingListBy, sortBookingList } from '../../../actions/booking/BookingActions';\nimport { errorColor } from '../../../theme';\n\nconst styles = () => createStyles({\n tableRow: {\n cursor: 'pointer',\n height: 64,\n '& td': {\n fontSize: 14,\n },\n },\n tableTimeWrap: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n position: 'relative',\n },\n tableTimeBanquetLabel: {\n position: 'absolute',\n top: '-14px',\n fontSize: 11,\n color: '#f45858',\n },\n NEED_PREPARE_TABLE: { color: 'orange' },\n GUEST_IS_LATE: { color: errorColor },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n bookingInfoList: Array<TReserve>;\n handleOpenEditReserveModal: any;\n handleSortBookingList: typeof sortBookingList;\n handleFilterBy: typeof filterBookingListBy;\n sort: TSort;\n filters: TBookingFilters;\n}\n\ninterface IState {\n page: number;\n rowsPerPage: number;\n}\n\nclass ReserveList extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n page: 0,\n rowsPerPage: 8,\n };\n }\n\n /** @description Запрос на сортировку */\n handleRequestSort = (event: any, property: any) => {\n const { sort, handleSortBookingList } = this.props;\n const orderBy = property;\n let order: 'asc' | 'desc' = 'desc';\n\n if (sort.orderBy === property && sort.order === 'desc') {\n order = 'asc';\n }\n\n handleSortBookingList({ order, orderBy });\n };\n\n render() {\n const {\n classes,\n bookingInfoList,\n sort,\n filters,\n handleOpenEditReserveModal,\n handleFilterBy,\n } = this.props;\n const {\n rowsPerPage, page,\n } = this.state;\n\n const emptyRows = rowsPerPage - Math.min(\n rowsPerPage, bookingInfoList.length - page * rowsPerPage,\n );\n\n return (\n <Paper elevation={3}>\n <Table style={{ minWidth: 960 }}>\n <EnhancedTableHead\n order={sort.order}\n orderBy={sort.orderBy}\n onRequestSort={this.handleRequestSort}\n filters={filters}\n handleFilterBy={handleFilterBy}\n />\n\n <TableBody>\n { bookingInfoList.map((n: TReserve) => (\n <TableRow\n hover\n onClick={() => handleOpenEditReserveModal(n)}\n role=\"checkbox\"\n tabIndex={-1}\n key={n.id}\n className={classes.tableRow}\n >\n <TableCell\n style={{ minWidth: '15%' }}\n // @ts-ignore\n className={classes[n.state]}\n align=\"center\"\n padding=\"default\"\n >\n { locales.t(`booking.status.${n.state}`) }\n </TableCell>\n <TableCell style={{ fontSize: 16, minWidth: '10%' }} align=\"center\" padding=\"default\">\n <div className={classes.tableTimeWrap}>\n { n.isBanquet && (\n <span className={classes.tableTimeBanquetLabel}>\n { locales.t('booking.banquet') }\n </span>\n ) }\n { parseDateFromBookingList(n.date) }\n </div>\n </TableCell>\n <TableCell align=\"center\">\n { n.persons }\n </TableCell>\n <TableCell align=\"center\" style={{ minWidth: '10%' }}>\n { parsingMergedTables(n.tables)}\n </TableCell>\n <TableCell style={{ minWidth: '10%' }} align=\"center\" padding=\"default\">\n {(`${n.firstName} ${!_.isNull(n.lastName) ? n.lastName : ''}`) }\n </TableCell>\n <TableCell style={{ minWidth: '10%' }} align=\"center\" padding=\"default\">\n { parsePhoneNumber(n.phone)}\n </TableCell>\n <TableCell style={{ width: '15%', wordBreak: 'break-all' }} align=\"center\" padding=\"default\">\n { n.comment }\n </TableCell>\n <TableCell style={{ minWidth: '10%' }} align=\"center\" padding=\"default\">\n { parseCreateDateFromBookingList(n.createdDate) }\n </TableCell>\n <TableCell style={{ minWidth: '10%' }} align=\"center\" padding=\"default\">\n { n.source.name }\n </TableCell>\n </TableRow>\n )) }\n { emptyRows > 0 && (\n <TableRow style={{ height: 64 * emptyRows }}>\n <TableCell colSpan={6} />\n </TableRow>\n ) }\n </TableBody>\n </Table>\n </Paper>\n );\n }\n}\n\nexport default withStyles(styles)(ReserveList);\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowLeftPath = (\n <Fragment>\n <path fill=\"#554d56\" d=\"M8.7 14.3c.4.4.4 1 0 1.4-.4.4-1 .4-1.4 0l-7-7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.4 8l6.3 6.3z\" />\n </Fragment>\n);\n\nexport default wrapWithPath(arrowLeftPath, '-3 0 17 17');\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowRightPath = (\n <Fragment>\n <path fill=\"#554d56\" d=\"M.3 14.3c-.4.4-.4 1.02 0 1.4.38.4 1 .4 1.4 0l7-7c.4-.4.4-1.02 0-1.4l-7-7C1.3-.1.68-.1.3.3c-.4.38-.4 1 0 1.4L6.6 8 .3 14.3z\" />\n </Fragment>\n);\n\nexport default wrapWithPath(arrowRightPath, '-5 0 17 17');\n","import React from 'react';\nimport moment, { Moment } from 'moment';\n\nimport {\n WithStyles,\n withStyles,\n createStyles,\n} from '@material-ui/core';\nimport Typography from '@material-ui/core/Typography';\nimport { DatePicker } from '@material-ui/pickers';\n\nimport { parseDateFromBookingDatePicker } from '../../../helpers/dateHelpers';\n\nconst styles = createStyles({\n textCenter: {\n textAlign: 'center',\n cursor: 'pointer',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n currentStatisticDate: string;\n handleChangeDate: (d: any) => void;\n}\n\nconst BookingDatePicker: React.FC<IProps> = ({ classes, currentStatisticDate, handleChangeDate }) => {\n const date: {\n date: string;\n day?: string;\n } = parseDateFromBookingDatePicker(currentStatisticDate);\n\n return (\n <DatePicker\n autoOk\n variant=\"inline\"\n value={moment(currentStatisticDate)}\n onChange={(date: Moment | null) => handleChangeDate(date && date.format())}\n TextFieldComponent={(props: any) => (\n <div\n ref={props.inputRef}\n className={classes.textCenter}\n onClick={props.onClick}\n >\n <Typography>\n { date.date }\n </Typography>\n <Typography variant=\"caption\">\n { `(${date.day})` }\n </Typography>\n </div>\n )}\n />\n );\n};\n\nexport default withStyles(styles)(BookingDatePicker);\n","import React from 'react';\nimport moment from 'moment';\n\nimport { WithStyles, withStyles, createStyles } from '@material-ui/core';\nimport IconButton from '@material-ui/core/IconButton';\n\nimport ArrowLeft from '../Common/Icons/ArrowLeft';\nimport ArrowRight from '../Common/Icons/ArrowRight';\nimport BookingDatePicker from '../Common/DatePickers/BookingDatePicker';\n\nconst styles = createStyles({\n wrap: {\n width: '100%',\n justifyContent: 'center',\n display: 'flex',\n alignItems: 'center',\n },\n marginRight: {\n marginRight: 20,\n },\n marginLeft: {\n marginLeft: 20,\n },\n textCenter: {\n textAlign: 'center',\n cursor: 'pointer',\n },\n});\n\ninterface IProps extends WithStyles {\n currentStatisticDate: string;\n handleChangeDate: (d: any) => void;\n}\n\nconst BookingDate: React.FC<IProps> = (props) => {\n const {\n classes,\n currentStatisticDate,\n handleChangeDate,\n } = props;\n\n /** @description Переключение даты */\n const onChangeDate = (type: number) => {\n let newDate = null;\n\n switch (type) {\n case 0: {\n newDate = moment(currentStatisticDate)\n .subtract(1, 'days')\n .format();\n break;\n }\n case 1: {\n newDate = moment(currentStatisticDate)\n .add(1, 'days')\n .format();\n break;\n }\n default: {\n newDate = currentStatisticDate;\n }\n }\n\n handleChangeDate(newDate);\n };\n\n return (\n <div className={classes.wrap}>\n <IconButton\n onClick={() => onChangeDate(0)}\n className={classes.marginRight}\n >\n <ArrowLeft />\n </IconButton>\n <BookingDatePicker\n handleChangeDate={handleChangeDate}\n currentStatisticDate={currentStatisticDate}\n />\n <IconButton\n onClick={() => onChangeDate(1)}\n className={classes.marginLeft}\n >\n <ArrowRight />\n </IconButton>\n </div>\n );\n};\n\nexport default withStyles(styles)(BookingDate);\n","import React, { PureComponent, Fragment } from 'react';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport Switch from '@material-ui/core/Switch';\nimport Fab from '@material-ui/core/Fab';\nimport AddIcon from '@material-ui/icons/Add';\nimport Grid from '@material-ui/core/Grid';\n\nimport styles from './styles';\nimport { IBookingProps } from './IBooking';\nimport locales from '../../locales';\nimport { TReserve } from '../../types/IBookingStore';\nimport { reserveState } from '../../config/constants';\nimport ReserveList from '../../components/Booking/ReserveList';\nimport BookingDatePicker from '../../components/Booking/BookingDate';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport Reserve from '../../types/IAppReservesStore';\nimport CashBoxWarningCont from '../CashBoxWarning';\nimport { NoHostessWarning } from '../../features';\n\nclass Booking extends PureComponent<IBookingProps> {\n componentDidMount(): void {\n const { isInit, initBookingPages } = this.props;\n\n if (!isInit) {\n initBookingPages();\n }\n }\n\n /** @description Ручка экшена для редактирования выбранного резерва */\n handleOpenEditReserveModal = (reserve: TReserve): void => {\n const { addAppReserve } = this.props;\n\n switch (reserve.state) {\n case reserveState.ACCEPTED:\n case reserveState.GUEST_IS_LATE:\n case reserveState.NEED_PREPARE_TABLE:\n case reserveState.CREATED:\n addAppReserve(new Reserve('APP', reserve));\n break;\n\n default:\n break;\n }\n };\n\n /** @description Ручка для получения списка броней при редактирования текущей даты в списке резервов */\n handleChangeDate = (date: string): void => {\n const { getBookingList, currentRestaurant } = this.props;\n getBookingList(currentRestaurant, date);\n };\n\n /** @description Ручка для переключения фильтра */\n handleSwitchActives = (): void => {\n const { switchBookingFilter, onlyActive } = this.props;\n switchBookingFilter(!onlyActive, true);\n };\n\n render() {\n const {\n classes,\n bookingInfoList,\n currentRestaurant,\n currentStatisticDate,\n filterBookingListBy,\n sortBookingList,\n onlyActive,\n filters,\n sort,\n addAppReserve,\n } = this.props;\n\n return (\n <Fragment>\n <PageHeaderWrap>\n <div className={classes.datePickerWrap}>\n <Typography variant=\"h6\">\n {locales.t('booking.title')}\n </Typography>\n\n <BookingDatePicker\n currentStatisticDate={currentStatisticDate}\n handleChangeDate={this.handleChangeDate}\n />\n </div>\n\n <div className={classes.filter}>\n <Typography variant=\"caption\">\n {locales.t('booking.onlyActive')}\n </Typography>\n <Switch\n checked={onlyActive}\n onChange={this.handleSwitchActives}\n color=\"primary\"\n />\n </div>\n </PageHeaderWrap>\n <CashBoxWarningCont />\n <NoHostessWarning />\n\n <PageContentWrap fullWidth>\n <Grid item xs={12}>\n <ReserveList\n bookingInfoList={bookingInfoList}\n filters={filters}\n sort={sort}\n handleOpenEditReserveModal={this.handleOpenEditReserveModal}\n handleSortBookingList={sortBookingList}\n handleFilterBy={filterBookingListBy}\n />\n </Grid>\n </PageContentWrap>\n\n <Fab\n className={classes.btnWrap}\n onClick={() => addAppReserve(new Reserve('APP'))}\n color=\"primary\"\n disabled={!currentRestaurant}\n >\n <AddIcon />\n </Fab>\n </Fragment>\n );\n }\n}\n\nexport default withStyles(styles)(Booking);\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\nimport _ from 'lodash';\nimport { createSelector } from 'reselect';\n\nimport Booking from './Booking';\nimport { DispatchProps, StateProps } from './IBooking';\nimport { rejectReserve } from '../../actions/reserveReject/RejectReserveActions';\nimport { openReserveEditModal, openReserveCreateModal } from '../../actions/reservationsPage/ReservationsPageActions';\nimport {\n initBookingPages,\n getBookingList,\n sortBookingList,\n switchBookingFilter,\n filterBookingListBy,\n} from '../../actions/booking/BookingActions';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IAppStore } from '../../types/IAppStore';\n\nimport { addAppReserve } from '../../actions/appReserves/AppReservesActions';\n\n/** @description Сортировка списка резервов */\nconst bookingSelector = createSelector([\n (state: IAppStore) => state.booking.filters,\n (state: IAppStore) => state.booking.bookingList,\n], (filters, bookingList) => {\n const activeFilter = filters.filter(f => f.active);\n return activeFilter.length > 0 ? bookingList.filter(\n r => _.findIndex(activeFilter, f => f.value === r.group) !== -1,\n ) : bookingList;\n});\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n isInit, filters, onlyActive, sort,\n } = state.booking;\n\n return {\n isInit,\n bookingInfoList: bookingSelector(state),\n currentRestaurant: state.cabinet.currentRestaurant ? state.cabinet.currentRestaurant.id : 0,\n currentStatisticDate: state.booking.currentStatisticDate,\n onlyActive,\n sort,\n filters,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n initBookingPages,\n getBookingList,\n openReserveEditModal,\n openReserveCreateModal,\n rejectReserve,\n sortBookingList,\n switchBookingFilter,\n filterBookingListBy,\n addAppReserve,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Booking);\n","import React from 'react';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography/Typography';\n\nconst styles = () => createStyles({\n wrap: {\n paddingBottom: 24,\n width: '100%',\n },\n numWrap: {\n marginTop: 20,\n display: 'flex',\n },\n num: {\n fontSize: '2em',\n fontWeight: 500,\n },\n numMetrics: {\n fontSize: 10,\n paddingTop: 14,\n paddingLeft: 8,\n width: '100%',\n },\n columnHeader: {\n height: 20,\n display: 'flex',\n alignItems: 'center',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n type: string;\n stat: number | string;\n color?: 'error' | 'primary';\n}\n\nconst StatisticItem: React.FC<IProps> = ({\n classes, type, stat, color,\n}) => {\n // @ts-ignore\n const parseStat = stat > 999 ? stat.toLocaleString() : stat;\n const textColor: any = color || 'initial';\n\n return (\n <div style={{ borderBottom: 'none', display: 'flex', flex: 1 }}>\n <div>\n <div className={classes.columnHeader}>\n <Typography variant=\"caption\">\n { type }\n </Typography>\n </div>\n <div className={classes.numWrap}>\n <Typography variant=\"h4\" className={classes.num} color={textColor}>\n { parseStat }\n </Typography>\n </div>\n </div>\n </div>\n );\n};\n\nexport default withStyles(styles)(StatisticItem);\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper/Paper';\nimport Table from '@material-ui/core/Table/Table';\nimport TableBody from '@material-ui/core/TableBody/TableBody';\nimport TableRow from '@material-ui/core/TableRow/TableRow';\nimport TableCell from '@material-ui/core/TableCell/TableCell';\nimport withStyles from '@material-ui/core/styles/withStyles';\n\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\nimport StatisticItem from './StatisticItem';\n\ntype Props = any;\n\nconst styles = () => ({\n statistics: {\n display: 'flex',\n justifyContent: 'center',\n minHeight: 140,\n },\n statisticItem: {\n padding: '24px 10px',\n },\n tableHeader: {\n fontWeight: 500,\n padding: 24,\n },\n});\n\nconst index: React.FC<Props> = ({ statistic, classes, moneySymbol }) => (\n <Paper elevation={3}>\n <Title text={locales.t('statistics.table.title')} borderBottom />\n <div className={classes.statistics}>\n <Table>\n <TableBody>\n <TableRow key=\"1\">\n <TableCell\n className={classes.tableHeader}\n component=\"th\"\n scope=\"row\"\n >\n { locales.t('statistics.table.guestsRow.title') }\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.guestsRow.profit')}\n stat={`${statistic.totalReceiptAmount.toFixed()} ${moneySymbol}`}\n color=\"primary\"\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.guestsRow.check')}\n stat={`${statistic.averageReceiptAmount.toFixed()} ${moneySymbol}`}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.guestsRow.guests')}\n stat={statistic.totalGuests}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.guestsRow.newGuests')}\n stat={statistic.totalNewGuests}\n />\n </TableCell>\n <TableCell style={{ flex: 1 }} />\n </TableRow>\n <TableRow key=\"2\">\n <TableCell\n className={classes.tableHeader}\n component=\"th\"\n scope=\"row\"\n >\n { locales.t('statistics.table.reserveRow.title') }\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.reserveRow.all')}\n stat={statistic.total}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.reserveRow.success')}\n color=\"primary\"\n stat={statistic.totalClosed}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.reserveRow.canceledByRestaurant')}\n stat={statistic.totalCancelledByRestaurant}\n color=\"error\"\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.reserveRow.rejectByRestaurant')}\n stat={statistic.totalDeclined}\n />\n </TableCell>\n <TableCell className={classes.statisticItem}>\n <StatisticItem\n type={locales.t('statistics.table.reserveRow.canceledByGuest')}\n stat={statistic.totalCancelledByGuest}\n />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n </Paper>\n);\n\nexport default withStyles(styles)(index);\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport { Pie } from 'react-chartjs-2';\nimport 'chartjs-plugin-datalabels';\n\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\nimport { TPieElement } from '../../../types/IStatisticStore';\nimport { errorColor, primaryColor } from '../../../theme';\n\ntype Props = {\n pie: Array<TPieElement>;\n};\n\nconst index: React.FC<Props> = ({ pie }) => {\n const data = {\n labels: pie.map(element => element.name),\n datasets: [\n {\n data: pie.map(element => element.total),\n backgroundColor: [\n primaryColor,\n '#f7d794',\n errorColor,\n '#79919d',\n ],\n }],\n };\n\n const options = {\n responsive: true,\n legend: {\n position: 'right',\n align: 'middle',\n labels: {\n boxWidth: 12,\n },\n },\n plugins: {\n datalabels: {\n color: 'white',\n },\n },\n };\n\n const placeholderData = {\n labels: [''],\n datasets: [\n {\n data: [100],\n backgroundColor: [\n '#cdcdcd',\n ],\n }],\n };\n\n const placeholderOptions = {\n responsive: true,\n legend: {\n position: 'right',\n align: 'middle',\n labels: {\n boxWidth: 12,\n },\n },\n tooltips: {\n enabled: false,\n },\n };\n\n return (\n <Paper elevation={3} style={{ height: '100%', alignItems: 'center' }}>\n <Title text={locales.t('statistics.diagram.title')} borderBottom />\n <div style={{\n padding: 24, display: 'flex', alignItems: 'center', height: 'calc(100% - 64px)',\n }}\n >\n <Pie\n data={pie.length > 0 ? data : placeholderData}\n options={pie.length > 0 ? options : placeholderOptions}\n />\n </div>\n </Paper>\n );\n};\n\nexport default index;\n","import React from 'react';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\n\nimport locales from '../../../locales';\n\nconst rows: Array<{\n id: string;\n sortable: boolean;\n label: string;\n last?: boolean;\n}> = [\n { id: 'date', sortable: true, label: locales.t('statistics.reserves.columns.date') },\n { id: 'name', sortable: false, label: locales.t('statistics.reserves.columns.name') },\n { id: 'phone', sortable: false, label: locales.t('statistics.reserves.columns.phone') },\n { id: 'status', sortable: false, label: locales.t('statistics.reserves.columns.status') },\n { id: 'check', sortable: false, label: locales.t('statistics.reserves.columns.check') },\n { id: 'source', sortable: false, label: locales.t('statistics.reserves.columns.source') },\n {\n id: 'empty', sortable: false, label: '', last: true,\n },\n];\n\ninterface Props {\n onRequestSort: (event: any, property: any) => void;\n order: 'asc' | 'desc';\n orderBy: string;\n}\n\nconst StatisticReserveTableHead: React.FC<Props> = (props) => {\n const { onRequestSort, order, orderBy } = props;\n\n const createSortHandler = (property: any) => (event: any) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead style={{ backgroundColor: '#F2F2F2' }}>\n <TableRow>\n {rows.map(row => (\n <TableCell\n key={row.id}\n align=\"left\"\n padding={row.last ? 'none' : 'default'}\n style={{ paddingLeft: 24 }}\n sortDirection={orderBy === row.id ? order : false}\n >\n {row.sortable\n ? (\n <TableSortLabel\n active={orderBy === row.id}\n direction={order}\n onClick={createSortHandler(row.id)}\n >\n {row.label}\n </TableSortLabel>\n )\n : (<span>{row.label}</span>)\n }\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default StatisticReserveTableHead;\n","import React, { Fragment } from 'react';\nimport moment from 'moment';\n\nimport {\n withStyles,\n createStyles,\n WithStyles,\n} from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableBody from '@material-ui/core/TableBody';\nimport Table from '@material-ui/core/Table';\n\nimport locales from '../../../../locales';\nimport { TReserve } from '../../../../types/IBookingStore';\nimport { TOrder } from '../../../../types/IStatisticStore';\nimport { parsingMergedTables } from '../../../../helpers/bookingHelpers';\n\nconst styles = createStyles({\n row: {\n borderBottom: 'none',\n height: 18,\n },\n cell: {\n borderBottom: 'none',\n padding: '6px 0',\n },\n});\n\ninterface Props extends WithStyles<typeof styles> {\n info: TReserve;\n order: TOrder;\n classes: any;\n moneySymbol: string;\n}\n\nconst ReserveDetails: React.FC<Props> = ({\n info,\n classes,\n order,\n moneySymbol,\n}) => {\n const reserveData = [\n {\n title: locales.t('statistics.reserves.details.reserveData.id'),\n value: info.id || '—',\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.dateOfCreation'),\n value: info.createdDate ? moment(info.createdDate).format('DD MMMM YYYYг. HH:mm') : '—',\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.guests'),\n value: info.persons || '—',\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.table'),\n value: parsingMergedTables(info.tables),\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.date'),\n value: info.date ? moment(info.date).format('DD MMMM YYYYг. HH:mm') : '—',\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.source'),\n value: info.source ? info.source.name : '—',\n },\n {\n title: locales.t('statistics.reserves.details.reserveData.openingDate'),\n value: info.openedTableDate\n ? moment(info.openedTableDate).format('DD MMMM YYYYг. HH:mm')\n : '—',\n },\n ];\n\n const checkData = [\n {\n title: locales.t('statistics.reserves.details.checkData.tableClosed'),\n value: info.completedDate ? moment(info.completedDate).format('DD MMMM YYYYг. HH:mm') : '—',\n },\n {\n title: locales.t('statistics.reserves.details.checkData.paidType'),\n value: '—',\n },\n {\n title: locales.t('statistics.reserves.details.checkData.paidDate'),\n value: info.paidDate ? moment(info.paidDate).format('DD MMMM YYYYг. HH:mm') : '—',\n },\n {\n title: locales.t('statistics.reserves.details.checkData.paidSum'),\n value: info.receiptAmount ? `${info.receiptAmount} ${moneySymbol}` : '—',\n },\n ];\n\n const renderStatTable = (title: string, params: Array<{title: string, value: string | number}>) => (\n <Fragment>\n <TableRow className={classes.row}>\n <TableCell colSpan={2} className={classes.cell}>\n <Typography variant=\"subtitle2\">{ title }</Typography>\n </TableCell>\n </TableRow>\n {\n params.map(p => (\n <TableRow className={classes.row} key={p.title}>\n <TableCell align=\"left\" padding=\"none\" className={classes.cell}>\n <span>{ p.title }</span>\n </TableCell>\n <TableCell align=\"left\" colSpan={2} padding=\"none\" className={classes.cell}>\n <span>{ p.value }</span>\n </TableCell>\n </TableRow>\n ))\n }\n </Fragment>\n );\n\n const renderOrders = order ? (\n <Fragment>\n <TableRow className={classes.row}>\n <TableCell colSpan={3} className={classes.cell}>\n <Typography variant=\"subtitle2\">\n { locales.t('statistics.reserves.details.order.title') }\n </Typography>\n </TableCell>\n </TableRow>\n {\n order.map((p, i: number) => (\n <TableRow className={classes.row} key={i}>\n <TableCell align=\"left\" className={classes.cell} style={{ width: '45%' }}>\n <span>{ p.name }</span>\n </TableCell>\n <TableCell align=\"left\" className={classes.cell} style={{ width: '25%' }}>\n <span>{ p.amount }</span>\n </TableCell>\n <TableCell align=\"left\" className={classes.cell} style={{ width: '30%' }}>\n <span>{ `${p.resultSum} ${moneySymbol}` }</span>\n </TableCell>\n </TableRow>\n ))\n }\n </Fragment>\n ) : (\n <Fragment>\n <TableRow className={classes.row}>\n <TableCell colSpan={3} className={classes.cell}>\n <Typography variant=\"subtitle2\">\n { locales.t('statistics.reserves.details.order.title') }\n </Typography>\n </TableCell>\n </TableRow>\n </Fragment>\n );\n\n const renderCommentData = (\n <Fragment>\n <TableRow className={classes.row}>\n <TableCell colSpan={3} className={classes.cell}>\n <Typography variant=\"subtitle2\">\n { locales.t('statistics.reserves.details.comment.title') }\n </Typography>\n </TableCell>\n </TableRow>\n <TableRow className={classes.row}>\n <TableCell align=\"left\" padding=\"none\" className={classes.cell}>\n <span>{ info.comment }</span>\n </TableCell>\n </TableRow>\n </Fragment>\n );\n\n return (\n <TableRow style={{ backgroundColor: '#f6f9f9' }}>\n <TableCell style={{ padding: '12px 24px' }} colSpan={7}>\n <Grid container spacing={1}>\n <Grid item xs={6}>\n <Table>\n <TableBody>\n { renderStatTable(locales.t('statistics.reserves.details.reserveData.title'), reserveData) }\n </TableBody>\n </Table>\n </Grid>\n <Grid item xs={6}>\n <Table>\n <TableBody>\n { renderStatTable(locales.t('statistics.reserves.details.checkData.title'), checkData) }\n </TableBody>\n </Table>\n </Grid>\n <Grid item xs={6}>\n <Table>\n <TableBody>\n { renderOrders }\n </TableBody>\n </Table>\n </Grid>\n <Grid item xs={6}>\n <Table>\n <TableBody>\n { renderCommentData }\n </TableBody>\n </Table>\n </Grid>\n </Grid>\n </TableCell>\n </TableRow>\n );\n};\n\nexport default withStyles(styles)(ReserveDetails);\n","import React from 'react';\nimport moment from 'moment';\n\nimport { createStyles, WithStyles, withStyles } from '@material-ui/core';\n\nimport locales from '../../../../locales';\n\nconst styles = createStyles({\n wrap: {\n display: 'flex',\n position: 'relative',\n },\n banquetLabel: {\n position: 'absolute',\n top: '-14px',\n fontSize: 11,\n color: '#f45858',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n reserveInfo: any;\n}\n\nconst ReserveTime: React.FC<IProps> = ({ classes, reserveInfo }) => (\n <div className={classes.wrap}>\n {\n reserveInfo.isBanquet && (\n <span className={classes.banquetLabel}>\n { locales.t('booking.banquet') }\n </span>\n )\n }\n { moment(reserveInfo.date).format('DD MMMM YYYYг. HH:mm') }\n </div>\n);\n\nexport default withStyles(styles)(ReserveTime);\n","import React, { Fragment, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport TableCell from '@material-ui/core/TableCell/TableCell';\nimport TableRow from '@material-ui/core/TableRow/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\n\nimport ReserveDetails from '../../Common/Statistic/StatisticReserveTable/ReserveDetails';\nimport { TReserve } from '../../../types/IBookingStore';\nimport locales from '../../../locales';\nimport { Routers } from '../../../config/constants';\nimport { parsePhoneNumber } from '../../../helpers/reserveHelpers';\nimport { TOrder } from '../../../types/IStatisticStore';\nimport ReserveTime from '../../Common/Statistic/StatisticReserveTable/ReserveTime';\n\ninterface OwnProps {\n order: TOrder;\n reserveInfo: TReserve;\n handleOpenBookingDetails: (bookingId: number) => void;\n moneySymbol: string;\n}\n\ntype Props = OwnProps;\n\nconst StatisticsReserveTableItem: React.FC<Props> = ({ reserveInfo, order, handleOpenBookingDetails, moneySymbol }) => {\n const [isOpen, changeVisible] = useState(false);\n const handleChangeVisible = () => {\n if (!isOpen) {\n handleOpenBookingDetails(reserveInfo.id);\n }\n\n changeVisible(!isOpen);\n };\n\n const stateColor = (state: string): 'initial' | 'primary' | 'error' => {\n switch (state) {\n case 'DECLINED':\n case 'GUEST_DECLINE':\n case 'RESTAURATEUR_DECLINE':\n case 'UNKNOWN_DECLINE':\n return 'error';\n case 'CLOSED':\n return 'primary';\n default: return 'initial';\n }\n };\n\n return (\n <Fragment>\n <TableRow>\n <TableCell padding=\"default\" style={{ paddingLeft: 24 }}>\n <ReserveTime reserveInfo={reserveInfo} />\n </TableCell>\n <TableCell padding=\"default\">\n { reserveInfo.firstName }\n </TableCell>\n <TableCell padding=\"default\">\n <Typography variant=\"body1\" style={{ textDecoration: 'underline' }}>\n <Link to={`${Routers.userStatistics}/${reserveInfo.phone}`}>\n { parsePhoneNumber(reserveInfo.phone) }\n </Link>\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n <Typography color={stateColor(reserveInfo.state)}>\n { locales.t(`booking.status.${reserveInfo.state}`) }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n <Typography variant=\"body1\">\n { reserveInfo.receiptAmount ? `${reserveInfo.receiptAmount} ${moneySymbol}` : '—' }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n <Link to={`${Routers.sourceStatistics}/${reserveInfo.source.id}`}>\n <span style={{ textDecoration: 'underline' }}>\n { reserveInfo.source.name || '—' }\n </span>\n </Link>\n </TableCell>\n <TableCell padding=\"default\" align=\"right\" style={{ paddingRight: 12 }}>\n <IconButton onClick={handleChangeVisible}>\n { isOpen ? <ExpandLess /> : <ExpandMore />}\n </IconButton>\n </TableCell>\n </TableRow>\n <Collapse\n in={isOpen}\n unmountOnExit\n timeout=\"auto\"\n component={() => <ReserveDetails moneySymbol={moneySymbol} info={reserveInfo} order={order} />}\n />\n </Fragment>\n );\n};\n\nexport default StatisticsReserveTableItem;\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport TableBody from '@material-ui/core/TableBody';\nimport Table from '@material-ui/core/Table';\nimport TablePagination from '@material-ui/core/TablePagination';\n\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\nimport StatisticReserveTableHead from './StatisticReserveTableHead';\nimport StatisticsReserveTableItem from './StatisticsReserveTableItem';\nimport { IBookingOrders, TPages } from '../../../types/IStatisticStore';\n\ntype Props = {\n bookingsOrders: IBookingOrders;\n reserves: Array<any>;\n pages: TPages;\n handleGetReserves: (page: number, size: number, sortType: 'desc' | 'asc') => void;\n handleOpenBookingDetails: (bookingId: number) => void;\n moneySymbol: string;\n};\n\nconst index: React.FC<Props> = (props) => {\n const {\n bookingsOrders,\n reserves,\n pages,\n handleOpenBookingDetails,\n handleGetReserves,\n moneySymbol,\n } = props;\n\n const [page, setPage] = React.useState(0);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [sortType, changeSortType] = React.useState<\"desc\" | \"asc\">('desc');\n\n /** @description Ручка для переключение страниц в таблице */\n const handleChangePage = (event: any, newPage: number) => {\n setPage(newPage);\n handleGetReserves(newPage, rowsPerPage, sortType);\n };\n\n /** @description Ручка для переключение количества строк в таблице */\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRowsPerPage(+event.target.value);\n setPage(0);\n handleGetReserves(0, +event.target.value, sortType);\n };\n\n /** @description Ручка для изменения типа сортировки */\n const handleChangeSortType = () => {\n if (sortType === 'desc') {\n changeSortType('asc');\n handleGetReserves(page, rowsPerPage, 'asc');\n } else {\n changeSortType('desc');\n handleGetReserves(page, rowsPerPage, 'desc');\n }\n };\n\n return (\n <Paper elevation={3}>\n <Title\n padding=\"8px 12px 8px 24px\"\n text={locales.t('statistics.reserves.title')}\n borderBottom\n spaceBetween\n />\n <Table>\n <StatisticReserveTableHead\n onRequestSort={handleChangeSortType}\n order={sortType}\n orderBy=\"date\"\n />\n <TableBody>\n {\n reserves.map(reserve => (\n <StatisticsReserveTableItem\n key={reserve.id}\n order={bookingsOrders[reserve.id]}\n reserveInfo={reserve}\n handleOpenBookingDetails={handleOpenBookingDetails}\n moneySymbol={moneySymbol}\n />\n ))\n }\n </TableBody>\n </Table>\n <TablePagination\n labelRowsPerPage=\"Строк на странице:\"\n style={{ paddingRight: 8 }}\n rowsPerPageOptions={[10, 25, 100]}\n component=\"div\"\n count={pages.totalElements}\n rowsPerPage={pages.size || rowsPerPage}\n page={page}\n backIconButtonProps={{\n 'aria-label': 'previous page',\n }}\n nextIconButtonProps={{\n 'aria-label': 'next page',\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n />\n </Paper>\n );\n};\n\nexport default index;\n","import React, { PureComponent, Fragment } from 'react';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport _ from 'lodash';\n\nimport Grid from '@material-ui/core/Grid/Grid';\n\nimport { IProps, IState } from './IStatistics';\nimport { IDate } from '../../types/IDate';\nimport locales from '../../locales';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport StatisticTable from '../../components/Statistics/StatisticsTable';\nimport StatisticsDiagram from '../../components/Statistics/StatisticsDiagram';\nimport StatisticsReserveTable from '../../components/Statistics/StatisticsReserveTable';\nimport CashBoxWarningCont from '../CashBoxWarning';\nimport StatisticDateCont from '../StatisticDateCont';\nimport { NoHostessWarning } from '../../features';\n\nclass StatisticsCont extends PureComponent<IProps, IState> {\n componentDidMount(): void {\n const {\n getStatistics, currentRestaurantId,\n } = this.props;\n if (currentRestaurantId) {\n getStatistics({ orderBy: 'date', order: 'desc' }, 0, 10);\n }\n }\n\n /** @description Запрос списка резервов в случае изменения текущего ресторана */\n componentDidUpdate(prevProps: IProps) {\n const { currentRestaurantId, getStatistics } = this.props;\n\n if (currentRestaurantId && _.isUndefined(prevProps.currentRestaurantId)) {\n getStatistics({ orderBy: 'date', order: 'desc' }, 0, 10);\n } else if (currentRestaurantId !== prevProps.currentRestaurantId) {\n getStatistics({ orderBy: 'date', order: 'desc' }, 0, 10);\n }\n }\n\n /** @description Ручка для изменения периода выборки статистики */\n handleGetStatistics = (date: IDate): void => {\n const { getStatistics } = this.props;\n\n getStatistics(\n { orderBy: 'date', order: 'desc' },\n 0,\n 10,\n date,\n );\n };\n\n /** @description Ручка для преключения страниц и редактирования количества строк */\n handleGetReserves = (page: number, size: number, sortType: 'desc' | 'asc') => {\n const { getStatistics } = this.props;\n\n getStatistics({ orderBy: 'date', order: sortType }, page, size);\n };\n\n /** @description Открытие детальной инфы резерва */\n handleOpenBookingDetails = (bookingId: number) => {\n const { openBookingDetails } = this.props;\n\n openBookingDetails(bookingId);\n };\n\n render() {\n const {\n pie, summary, reserves, pages, bookingsOrders, moneySymbol,\n } = this.props;\n\n return (\n <Fragment>\n <PageHeaderWrap>\n <Typography variant=\"h6\">\n { locales.t('statistics.title') }\n </Typography>\n <StatisticDateCont handleGetStatistics={this.handleGetStatistics} />\n </PageHeaderWrap>\n <CashBoxWarningCont />\n <NoHostessWarning />\n\n <PageContentWrap fullWidth>\n <Grid item xs={12} lg={8}>\n <StatisticTable statistic={summary} moneySymbol={moneySymbol} />\n </Grid>\n <Grid item xs={6} lg={4}>\n <StatisticsDiagram pie={pie} />\n </Grid>\n <Grid item xs={12} lg={12}>\n <StatisticsReserveTable\n bookingsOrders={bookingsOrders}\n reserves={reserves}\n pages={pages}\n handleGetReserves={this.handleGetReserves}\n handleOpenBookingDetails={this.handleOpenBookingDetails}\n moneySymbol={moneySymbol}\n />\n </Grid>\n </PageContentWrap>\n </Fragment>\n );\n }\n}\n\nexport default StatisticsCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport StatisticsCont from './StatisticsCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './IStatistics';\nimport { IAppActions } from '../../types/IAppActions';\nimport { getStatistics, openBookingDetails } from '../../actions/statistics/StatisticsActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n currentRestaurantId: state.cabinet.currentRestaurant && state.cabinet.currentRestaurant.id,\n moneySymbol: state.cabinet.moneySymbol,\n summary: state.statistic.summary,\n pie: state.statistic.pie,\n reserves: state.statistic.reserves,\n pages: state.statistic.pages,\n bookingsOrders: state.statistic.bookingsOrders,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n getStatistics,\n openBookingDetails,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(StatisticsCont);\n","import React, { useState } from 'react';\n\nimport {\n createStyles,\n WithStyles,\n withStyles,\n TextField,\n List,\n ListItem,\n ListItemText,\n Theme,\n} from '@material-ui/core';\n\nimport locales from '../../../../locales';\n\nconst styles = (theme: Theme) => createStyles({\n listWrapper: {\n width: '100%',\n position: 'relative',\n },\n list: {\n width: '100%',\n backgroundColor: theme.palette.background.paper,\n position: 'absolute',\n zIndex: 1,\n paddingTop: 0,\n },\n});\n\ninterface Props extends WithStyles<typeof styles> {\n address: string;\n onChangeAddress: (address: string) => void;\n name: string;\n onChangeName: (name: string) => void;\n}\n\nlet timeout: any;\n\nconst SearchAddress: React.FC<Props> = ({\n address,\n onChangeAddress,\n name,\n onChangeName,\n classes,\n}: Props) => {\n const [addressSuggestions, setAddressSuggestions] = useState<Array<string>>([]);\n\n const onAddressInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target;\n\n onChangeAddress(value);\n setAddressSuggestions([]);\n\n window.clearTimeout(timeout);\n if (value.length > 0) {\n timeout = window.setTimeout(() => {\n window.ymaps.suggest(value, { results: 5 }).then((items) => {\n setAddressSuggestions(\n items.map(item => item.displayName),\n );\n });\n }, 1000);\n }\n };\n\n return (\n <>\n <TextField\n value={name}\n onChange={(event) => {\n onChangeName(event.target.value);\n }}\n margin=\"normal\"\n fullWidth\n label={locales.t('home.addFormInputName')}\n required\n />\n\n <TextField\n margin=\"normal\"\n label={locales.t('home.addFormInputAddress')}\n fullWidth\n value={address}\n onChange={onAddressInputChange}\n onBlur={() => {\n setTimeout(() => {\n setAddressSuggestions([]);\n }, 200);\n }}\n required\n />\n\n {addressSuggestions.length > 0 && (\n <div className={classes.listWrapper}>\n <List className={classes.list}>\n { addressSuggestions.map(name => (\n <ListItem\n key={name}\n button\n onClick={() => {\n onChangeAddress(name);\n setAddressSuggestions([]);\n }}\n >\n <ListItemText primary={name} />\n </ListItem>\n )) }\n </List>\n </div>\n )}\n </>\n );\n};\n\nexport default withStyles(styles)(SearchAddress);\n","import { createStyles } from '@material-ui/core/styles';\nimport Theme, {primaryColor, primaryHoverColor} from '../../../theme';\n\nconst styles = (theme: any) => createStyles({\n contentWrap: {\n width: 720,\n // minHeight: 677,\n },\n content: {\n borderTop: '1px solid #cbcbcb',\n borderBottom: '1px solid #cbcbcb',\n paddingBottom: theme.spacing(5),\n },\n closeButton: {\n position: 'absolute',\n right: 12,\n top: 12,\n },\n titleWrap: {\n display: 'flex',\n alignItems: 'center',\n paddingTop: '20px',\n },\n actions: {\n padding: theme.spacing(2),\n paddingLeft: theme.spacing(3),\n paddingRight: theme.spacing(3),\n },\n button: {\n width: 200,\n height: 52,\n marginLeft: `${theme.spacing(3)}px !important`,\n '&:disabled': {\n backgroundColor: primaryColor,\n },\n },\n reject: {\n backgroundColor: theme.palette.buttonGrey.main,\n '&:hover': {\n backgroundColor: theme.palette.buttonGrey.hover,\n },\n },\n // mr22: {\n // marginRight: 22,\n // },\n error: {\n color: Theme.palette.error.main,\n paddingTop: theme.spacing(2),\n paddingRight: theme.spacing(3),\n paddingBottom: theme.spacing(1),\n paddingLeft: theme.spacing(3),\n },\n});\n\nexport default styles;\n","import { useState, useEffect } from 'react';\n\nconst cachedScripts = [];\n\nexport default function useScript(src) {\n const [state, setState] = useState({\n loaded: false,\n error: false,\n });\n\n useEffect(\n () => {\n if (cachedScripts.includes(src)) {\n setState({\n loaded: true,\n error: false,\n });\n\n return () => {};\n }\n\n cachedScripts.push(src);\n\n const script = document.createElement('script');\n script.src = src;\n script.async = true;\n\n const onScriptLoad = () => {\n setState({\n loaded: true,\n error: false,\n });\n };\n\n const onScriptError = () => {\n const index = cachedScripts.indexOf(src);\n if (index >= 0) {\n cachedScripts.splice(index, 1);\n }\n\n script.remove();\n\n setState({\n loaded: true,\n error: true,\n });\n };\n\n script.addEventListener('load', onScriptLoad);\n script.addEventListener('error', onScriptError);\n\n document.body.appendChild(script);\n\n return () => {\n script.removeEventListener('load', onScriptLoad);\n script.removeEventListener('error', onScriptError);\n\n script.remove();\n };\n },\n [src],\n );\n\n return [state.loaded, state.error];\n}\n","import React, { Suspense, useEffect } from 'react';\nimport * as Sentry from '@sentry/react';\n\nimport {\n IControl,\n IGeoObject,\n Map,\n // eslint-disable-next-line import/no-unresolved\n} from 'yandex-maps';\n\nimport useScript from './useScript';\nimport systems from '../../../../config/systems';\n\n\nconst Loading = () => <div>Загрузка карты...</div>;\n\nlet yandexMap: Map;\nlet yandexMapZoomControl: IControl;\n\ninterface Props {\n height: number | string;\n width: number | string;\n apiKey: string;\n center: [number, number];\n zoom: number;\n geoObject: null | IGeoObject,\n}\n\nconst MapComponent = ({\n apiKey,\n center,\n zoom,\n height,\n width,\n geoObject,\n}: Props) => {\n useEffect(() => {\n if (!yandexMap) {\n return;\n }\n\n yandexMap.geoObjects.removeAll();\n\n if (geoObject) {\n yandexMap.geoObjects.add(geoObject);\n const bounds = yandexMap.geoObjects.getBounds();\n\n if (bounds !== null) {\n yandexMap.setBounds(bounds, {\n // checkZoomRange: true,\n }).catch((e) => {\n Sentry.captureException(e);\n });\n\n yandexMap.setZoom(17).catch((e) => {\n Sentry.captureException(e);\n });\n\n if (!yandexMapZoomControl) {\n yandexMapZoomControl = new window.ymaps.control.ZoomControl();\n yandexMap.controls.add(yandexMapZoomControl);\n }\n }\n } else {\n yandexMap.setCenter([center[0], center[1]], zoom);\n }\n }, [geoObject]);\n\n const [loaded, error] = useScript(\n `https://api-maps.yandex.ru/2.1/?lang=ru_RU&apikey=${apiKey}`,\n );\n\n const id = 'yandex-map';\n\n useEffect(() => {\n if (loaded) {\n window.ymaps.ready(() => {\n yandexMap = new window.ymaps.Map(id, {\n center: [center[0], center[1]],\n zoom,\n controls: [\n // 'geolocationControl',\n // 'fullscreenControl',\n // 'zoomControl',\n ],\n }, {\n suppressMapOpenBlock: true,\n yandexMapDisablePoiInteractivity: true,\n });\n\n yandexMap.behaviors.disable('scrollZoom');\n });\n }\n }, [loaded]);\n\n if (error) {\n return <div>{error.toString}</div>;\n }\n\n if (!loaded) {\n return <Loading />;\n }\n\n const w = typeof width === 'number' ? `${width}px` : width;\n const h = typeof height === 'number' ? `${height}px` : height;\n\n return (\n <div id={id} style={{ width: w, height: h }} />\n );\n};\n\nconst YandexMapComponent = (props: {\n geoObject: null | IGeoObject,\n}) => {\n const { geoObject } = props;\n\n return (\n <Suspense fallback={<Loading />}>\n <MapComponent\n width=\"100%\"\n height={282}\n apiKey={systems.yandexMapAPIKey}\n center={[59, 70]}\n zoom={3}\n geoObject={geoObject}\n />\n </Suspense>\n );\n};\n\nexport default YandexMapComponent;\n","import React, { Component } from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Typography from '@material-ui/core/Typography';\nimport CloseIcon from '@material-ui/icons/Close';\nimport IconButton from '@material-ui/core/IconButton/IconButton';\n\n// eslint-disable-next-line import/no-unresolved\nimport { IGeoObject } from 'yandex-maps';\n\nimport { IProps, IState } from './ICreateRestaurantModal';\nimport locales from '../../../locales';\nimport styles from './styles';\n\nimport SearchAddress from './Yandex/SearchAddress';\nimport YandexMapComponent from './Yandex/Map';\nimport { IRestaurantAddress } from '../../../types/ICabinetStore';\n\n\nlet geocoderTimeout: any;\n\nconst defaultState: IState = {\n address: '',\n name: '',\n yandexGeoObject: null,\n coordinates: null,\n};\n\nclass CreateRestaurantModalComp extends Component<IProps, IState> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n ...defaultState,\n };\n }\n\n componentWillUnmount() {\n window.clearTimeout(geocoderTimeout);\n }\n\n setName = (name: string) => {\n this.setState({ name });\n };\n\n setAddress = (address: string) => {\n this.setState({ address });\n\n window.clearTimeout(geocoderTimeout);\n if (address.length > 0) {\n geocoderTimeout = window.setTimeout(() => {\n const geocoder = window.ymaps.geocode(address, { results: 1 });\n geocoder.then((result: any) => {\n const objects = result.geoObjects;\n const geoObject: IGeoObject = objects.get(0);\n const metaDataProperty = geoObject.properties.get(\n 'metaDataProperty.GeocoderMetaData',\n {\n precision: 'other',\n },\n );\n\n // @ts-ignore\n const { precision } = metaDataProperty;\n\n if (precision === 'exact') {\n this.setState({\n yandexGeoObject: geoObject,\n coordinates: objects.properties.get('metaDataProperty.GeocoderResponseMetaData.Point.coordinates'),\n });\n } else {\n this.setState({\n yandexGeoObject: null,\n coordinates: null,\n });\n }\n });\n }, 1000);\n }\n };\n\n handleAddRestaurant = (): void => {\n const { name, yandexGeoObject, coordinates } = this.state;\n const { addRestaurant, closeCreateModal } = this.props;\n\n if (!name || !yandexGeoObject || !coordinates || coordinates.length !== 2) {\n return;\n }\n\n const geoData = yandexGeoObject.properties.get(\n 'metaDataProperty.GeocoderMetaData',\n {},\n );\n\n // @ts-ignore\n // eslint-disable-next-line no-prototype-builtins\n if (!geoData.hasOwnProperty('Address') || !geoData.hasOwnProperty('kind') || geoData.kind !== 'house') {\n return;\n }\n\n // @ts-ignore\n const geoAddress = geoData.Address;\n\n const address: IRestaurantAddress = {\n country: '',\n countryCode: geoAddress.country_code,\n city: '',\n street: '',\n home: '',\n coordinates: {\n lon: coordinates[0],\n lat: coordinates[1],\n },\n };\n\n geoAddress.Components.forEach((c: any) => {\n if (c.kind === 'country') {\n address.country = c.name;\n } else if (c.kind === 'locality') {\n address.city = c.name;\n } else if (c.kind === 'street') {\n address.street = c.name;\n } else if (c.kind === 'house') {\n address.home = c.name;\n }\n });\n\n addRestaurant({ name, address });\n closeCreateModal();\n };\n\n handleCloseDialog = () => {\n const { closeCreateModal } = this.props;\n\n closeCreateModal();\n };\n\n render() {\n const { modalOpen, classes, createRestaurantError } = this.props;\n const { address, name, yandexGeoObject } = this.state;\n\n return (\n <Dialog\n open={modalOpen}\n aria-labelledby=\"form-dialog-title\"\n maxWidth=\"xl\"\n >\n <div className={classes.contentWrap}>\n <DialogTitle id=\"form-dialog-title\">\n {locales.t('home.addFormTitle')}\n <IconButton className={classes.closeButton} aria-label=\"Close\" onClick={this.handleCloseDialog}>\n <CloseIcon color=\"primary\" />\n </IconButton>\n </DialogTitle>\n <DialogContent className={classes.content}>\n <SearchAddress\n address={address}\n onChangeAddress={this.setAddress}\n name={name}\n onChangeName={this.setName}\n />\n <YandexMapComponent geoObject={yandexGeoObject} />\n </DialogContent>\n\n {createRestaurantError && (\n <div className={classes.error}>\n <Typography variant=\"body1\">{createRestaurantError}</Typography>\n </div>\n )}\n\n <DialogActions className={classes.actions}>\n <Button\n onClick={this.handleCloseDialog}\n className={`${classes.button} ${classes.reject}`}\n variant=\"contained\"\n >\n {locales.t('common.reject')}\n </Button>\n <Button\n onClick={this.handleAddRestaurant}\n color=\"primary\"\n className={classes.button}\n variant=\"contained\"\n disabled={!name || !yandexGeoObject}\n >\n {locales.t('common.add')}\n </Button>\n </DialogActions>\n </div>\n </Dialog>\n );\n }\n}\n\nexport default withStyles(styles)(CreateRestaurantModalComp);\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport {\n addRestaurant, closeCreateModal, openCreateModal,\n} from '../../../actions/cabinet/CabinetActions';\nimport CreateRestaurantModalComp from './CreateRestaurantModalComp';\nimport { IAppStore } from '../../../types/IAppStore';\nimport { IAppActions } from '../../../types/IAppActions';\nimport { IDispatchProps, IStateProps } from './ICreateRestaurantModal';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n modalOpen: state.cabinet.modalOpen,\n createRestaurantError: state.cabinet.createRestaurantError,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n openCreateModal,\n closeCreateModal,\n addRestaurant,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateRestaurantModalComp);\n","import React, { Fragment } from 'react';\n\nimport {\n withStyles, WithStyles, createStyles, Theme,\n} from '@material-ui/core/styles';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nconst styles = (theme: Theme) => createStyles({\n wrap: {\n position: 'fixed',\n width: '100%',\n height: '100%',\n flex: 1,\n zIndex: 99999,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'column',\n },\n progress: {\n margin: theme.spacing(2),\n },\n});\n\ninterface IProps extends WithStyles<typeof styles>{\n loading: boolean;\n}\n\nconst Preloader: React.FC<IProps> = ({ classes, loading }) => {\n return (\n <Fragment>\n {\n loading && (\n <div className={classes.wrap}>\n <CircularProgress\n className={classes.progress}\n size={50}\n />\n </div>\n )\n }\n </Fragment>\n );\n};\n\nexport default withStyles(styles)(Preloader);\n","import React from 'react';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography/Typography';\n\nconst styles = () => createStyles({\n wrap: {\n borderBottom: 'none',\n flex: 1,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n type: string;\n stat: number | string;\n color?: 'error' | 'primary';\n textAlign?: 'center' | 'left';\n}\n\nconst UserStatisticTableItem: React.FC<IProps> = ({\n classes, type, stat, textAlign = 'left',\n}) => {\n // @ts-ignore\n const parseStat = stat > 999 ? stat.toLocaleString() : stat;\n // const textColor: any = color || 'textPrimary';\n\n return (\n <div className={classes.wrap}>\n <div style={{ textAlign }}>\n <Typography variant=\"h6\">\n { parseStat }\n </Typography>\n <Typography variant=\"caption\" style={{ textTransform: 'uppercase', whiteSpace: 'pre' }}>\n { type }\n </Typography>\n </div>\n </div>\n );\n};\n\nexport default withStyles(styles)(UserStatisticTableItem);\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper/Paper';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\n\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\nimport UserStatisticTableItem from '../../Common/Statistic/StatisticTable/UserStatisticTableItem.tsx';\n\ninterface Props {\n statistic: {\n averageReceiptAmount: number;\n total: number;\n totalCancelledByGuest: number;\n totalCancelledByRestaurant: number;\n totalClosed: number;\n totalDeclined: number;\n totalReceiptAmount: number;\n };\n}\n\nconst styles = createStyles({\n statisticsWrap: {\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n paddingTop: 16,\n width: '80%',\n },\n statisticRow: {\n display: 'flex',\n justifyContent: 'left',\n paddingBottom: 40,\n },\n});\n\ninterface IProps extends Props, WithStyles<typeof styles> {}\n\nconst index: React.FC<IProps> = ({ statistic, classes }) => (\n <Paper elevation={3} style={{ height: '100%' }}>\n <Title text={locales.t('userStatistic.statisticTable.title')} />\n <div className={classes.statisticsWrap}>\n <div className={classes.statisticRow}>\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.summary')}\n stat={statistic.total}\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.success')}\n color=\"primary\"\n stat={statistic.totalClosed}\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.canceledByRestaurant')}\n stat={statistic.totalCancelledByRestaurant}\n color=\"error\"\n />\n </div>\n <div className={classes.statisticRow}>\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.declinedByRestaurant')}\n stat={statistic.totalDeclined}\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.canceledByGuest')}\n stat={statistic.totalCancelledByGuest}\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.reservesRow.guestDidNotCame')}\n stat={0}\n />\n </div>\n </div>\n </Paper>\n);\n\nexport default withStyles(styles)(index);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport Paper from '@material-ui/core/Paper';\nimport {\n Typography, createStyles, withStyles, WithStyles,\n} from '@material-ui/core';\nimport moment from 'moment';\n\nimport locales from '../../../locales';\nimport { parsePhoneNumber } from '../../../helpers/reserveHelpers';\nimport UserStatisticTableItem\n from '../../Common/Statistic/StatisticTable/UserStatisticTableItem.tsx';\n\ninterface Props {\n userInfo: {\n firstVisit: string;\n lastVisit: string;\n isActive: boolean;\n name: string;\n phone: string;\n };\n statistic: {\n averageReceiptAmount: number;\n total: number;\n totalCancelledByGuest: number;\n totalCancelledByRestaurant: number;\n totalClosed: number;\n totalDeclined: number;\n totalReceiptAmount: number;\n };\n moneySymbol: string;\n}\n\nconst styles = () => createStyles({\n wrap: {\n height: '100%',\n minHeight: 302,\n },\n roleWrap: {\n padding: '24px 24px 16px 24px',\n display: 'flex',\n },\n roleTitle: {\n backgroundColor: '#f7f8fb',\n padding: '0px 24px',\n height: 24,\n display: 'flex',\n alignItems: 'center',\n },\n activityDateWrap: {\n paddingTop: 12,\n },\n infoWrap: {\n display: 'flex',\n padding: '0 16px',\n },\n userInfoWrap: {\n marginTop: 20,\n display: 'flex',\n flexDirection: 'column',\n },\n statusWrap: {\n padding: '4px 8px',\n textTransform: 'uppercase',\n backgroundColor: 'rgb(106, 233, 197, 0.3)',\n color: 'black',\n },\n statusWrap__deactivated: {\n backgroundColor: 'rgb(244, 88, 88, 0.3)',\n },\n userIcon: {\n width: 77,\n height: 77,\n marginRight: 14,\n },\n userStatWrap: {\n display: 'flex',\n padding: '50px 24px 50px 24px',\n },\n});\n\ninterface IProps extends Props, WithStyles<typeof styles> {}\n\n// userInfo && userInfo.isActive ? 'primary' : 'error'\n\nconst index: React.FC<IProps> = ({ userInfo, classes, statistic, moneySymbol }) => {\n const firstVisit = userInfo.firstVisit ? moment(userInfo.firstVisit).format('DD MMMM YYYY г.') : '—';\n const lastVisit = userInfo.lastVisit ? moment(userInfo.lastVisit).format('DD MMMM YYYY г.') : '—';\n\n const isActive = userInfo.isActive ? (\n <Typography className={classes.statusWrap} variant=\"overline\">\n { locales.t('userStatistic.userCard.status.active') }\n </Typography>\n ) : (\n <Typography className={classNames(classes.statusWrap, classes.statusWrap__deactivated)} variant=\"overline\">\n { locales.t('userStatistic.userCard.status.notActive') }\n </Typography>\n );\n\n return (\n <Paper elevation={3} className={classes.wrap}>\n <div>\n <div className={classes.roleWrap}>\n <div className={classes.roleTitle}>\n <Typography variant=\"body1\">\n { locales.t('userStatistic.userCard.guest') }\n </Typography>\n </div>\n </div>\n <div className={classes.infoWrap}>\n <AccountCircle\n color=\"secondary\"\n className={classes.userIcon}\n />\n <div>\n <Typography variant=\"h4\">\n { userInfo ? userInfo.name : '—' }\n </Typography>\n <Typography variant=\"body1\">\n { userInfo ? parsePhoneNumber(userInfo.phone) : '—' }\n </Typography>\n <div className={classes.userInfoWrap}>\n <div>\n { isActive }\n </div>\n <div className={classes.activityDateWrap}>\n <Typography variant=\"body2\">\n { `${locales.t('userStatistic.userCard.firstVisit')} ${firstVisit}` }\n </Typography>\n <Typography variant=\"body2\">\n { `${locales.t('userStatistic.userCard.lastVisit')} ${lastVisit}` }\n </Typography>\n </div>\n </div>\n </div>\n </div>\n <div className={classes.userStatWrap}>\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.checkRow.average')}\n stat={`${statistic.averageReceiptAmount.toFixed()} ${moneySymbol}`}\n color=\"primary\"\n textAlign=\"center\"\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.checkRow.totalVisit')}\n stat={`${statistic.total.toFixed()}`}\n textAlign=\"center\"\n />\n <UserStatisticTableItem\n type={locales.t('userStatistic.statisticTable.checkRow.summary')}\n stat={`${statistic.totalReceiptAmount.toFixed()} ${moneySymbol}`}\n textAlign=\"center\"\n />\n </div>\n </div>\n </Paper>\n );\n};\n\nexport default withStyles(styles)(index);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { makeStyles } from '@material-ui/core';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\n\nimport locales from '../../../locales';\n\nconst useStyles = makeStyles({\n paddingLeft: {\n paddingLeft: 24,\n },\n});\n\nconst rows: Array<{\n id: string;\n sortable: boolean;\n label: string;\n last?: boolean;\n first?: boolean;\n}> = [\n {\n id: 'date', sortable: true, label: locales.t('userStatistic.reserveTable.date'), first: true,\n },\n { id: 'status', sortable: false, label: locales.t('userStatistic.reserveTable.status') },\n { id: 'name', sortable: false, label: locales.t('userStatistic.reserveTable.persons') },\n { id: 'check', sortable: false, label: locales.t('userStatistic.reserveTable.check') },\n { id: 'source', sortable: false, label: locales.t('userStatistic.reserveTable.source') },\n {\n id: 'empty', sortable: false, label: '', last: true,\n },\n];\n\ninterface Props {\n onRequestSort: (event: any, property: any) => void;\n order: 'asc' | 'desc';\n orderBy: string;\n}\n\nconst StatisticReserveTableHead: React.FC<Props> = (props) => {\n const { onRequestSort, order, orderBy } = props;\n const classes = useStyles();\n\n const createSortHandler = (property: any) => (event: any) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead style={{ backgroundColor: '#F2F2F2' }}>\n <TableRow>\n {rows.map(row => (\n <TableCell\n key={row.id}\n align=\"left\"\n padding={row.last ? 'none' : 'default'}\n className={classNames({ [classes.paddingLeft]: row.first })}\n sortDirection={orderBy === row.id ? order : false}\n >\n {row.sortable\n ? (\n <TableSortLabel\n active={orderBy === row.id}\n direction={order}\n onClick={createSortHandler(row.id)}\n >\n {row.label}\n </TableSortLabel>\n )\n : (<span>{row.label}</span>)\n }\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default StatisticReserveTableHead;\n","import React, { Fragment, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport TableCell from '@material-ui/core/TableCell/TableCell';\nimport TableRow from '@material-ui/core/TableRow/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\n\nimport ReserveDetails from '../../Common/Statistic/StatisticReserveTable/ReserveDetails';\nimport { TReserve } from '../../../types/IBookingStore';\nimport locales from '../../../locales';\nimport { TOrder } from '../../../types/IStatisticStore';\nimport { Routers } from '../../../config/constants';\nimport ReserveTime from '../../Common/Statistic/StatisticReserveTable/ReserveTime';\n\ninterface OwnProps {\n reserveInfo: TReserve;\n handleOpenBookingDetails: (bookingId: number) => void;\n order: TOrder;\n moneySymbol: string;\n}\n\ntype Props = OwnProps;\n\nconst UserStatisticsReserveTableItem: React.FC<Props> = ({\n reserveInfo,\n order,\n handleOpenBookingDetails,\n moneySymbol,\n}) => {\n const [isOpen, changeVisible] = useState(false);\n const handleChangeVisible = () => {\n if (!isOpen) {\n handleOpenBookingDetails(reserveInfo.id);\n }\n\n changeVisible(!isOpen);\n };\n\n const stateColor = (state: string): 'initial' | 'primary' | 'error' => {\n switch (state) {\n case 'DECLINED':\n case 'GUEST_DECLINE':\n case 'RESTAURATEUR_DECLINE':\n case 'UNKNOWN_DECLINE':\n return 'error';\n case 'CLOSED':\n return 'primary';\n default: return 'initial';\n }\n };\n\n return (\n <Fragment>\n <TableRow>\n <TableCell padding=\"default\" style={{ paddingLeft: 24 }}>\n <ReserveTime reserveInfo={reserveInfo} />\n </TableCell>\n <TableCell padding=\"default\">\n <Typography color={stateColor(reserveInfo.state)}>\n { reserveInfo.state ? locales.t(`booking.status.${reserveInfo.state}`) : '—' }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n { reserveInfo.persons || '—'}\n </TableCell>\n <TableCell padding=\"default\">\n <Typography variant=\"body1\">\n { reserveInfo.receiptAmount ? `${reserveInfo.receiptAmount} ${moneySymbol}` : '—' }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n <span style={reserveInfo.source && { textDecoration: 'underline' }}>\n { reserveInfo.source ? (\n <Link to={`${Routers.sourceStatistics}/${reserveInfo.source.id}`}>\n <span style={{ textDecoration: 'underline' }}>\n { reserveInfo.source.name || '—' }\n </span>\n </Link>\n ) : '—' }\n </span>\n </TableCell>\n <TableCell padding=\"default\" align=\"right\" style={{ paddingRight: 12 }}>\n <IconButton onClick={handleChangeVisible}>\n { isOpen ? <ExpandLess /> : <ExpandMore />}\n </IconButton>\n </TableCell>\n </TableRow>\n <Collapse\n in={isOpen}\n unmountOnExit\n timeout=\"auto\"\n component={() => <ReserveDetails moneySymbol={moneySymbol} info={reserveInfo} order={order} />}\n />\n </Fragment>\n );\n};\n\nexport default UserStatisticsReserveTableItem;\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport TableBody from '@material-ui/core/TableBody';\nimport Table from '@material-ui/core/Table';\n\nimport UserStatisticReserveTableHead from './UserStatisticReserveTableHead';\nimport UserStatisticsReserveTableItem from './UserStatisticsReserveTableItem';\nimport { TReserve } from '../../../types/IBookingStore';\nimport { IBookingOrders } from '../../../types/IStatisticStore';\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\n\ntype Props = {\n reserves: Array<TReserve>;\n handelChangeSort: (sort: \"desc\" | \"asc\") => void;\n bookingsOrders: IBookingOrders;\n handleOpenBookingDetails: (bookingId: number) => void;\n moneySymbol: string;\n};\n\nconst index: React.FC<Props> = ({\n reserves,\n bookingsOrders,\n handleOpenBookingDetails,\n handelChangeSort,\n moneySymbol,\n}) => {\n const [sortType, changeSortType] = React.useState<\"desc\" | \"asc\">('desc');\n\n /** @description Ручка для изменения типа сортировки */\n const handleChangeSortType = React.useCallback(() => {\n if (sortType === 'desc') {\n changeSortType('asc');\n handelChangeSort('asc');\n } else {\n changeSortType('desc');\n handelChangeSort('desc');\n }\n }, [sortType]);\n\n return (\n <Paper elevation={3}>\n <Title\n padding=\"8px 12px 8px 24px\"\n text={locales.t('statistics.reserves.title')}\n borderBottom\n spaceBetween\n />\n <Table>\n <UserStatisticReserveTableHead\n onRequestSort={handleChangeSortType}\n order={sortType}\n orderBy=\"date\"\n />\n <TableBody>\n {\n reserves.map(reserve => (\n <UserStatisticsReserveTableItem\n key={reserve.id}\n reserveInfo={reserve}\n order={bookingsOrders[reserve.id]}\n handleOpenBookingDetails={handleOpenBookingDetails}\n moneySymbol={moneySymbol}\n />\n ))\n }\n </TableBody>\n </Table>\n </Paper>\n );\n};\n\nexport default index;\n","import React from 'react';\nimport ArrowBack from '@material-ui/icons/ArrowBack';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport Button from '@material-ui/core/Button/Button';\nimport { withStyles } from '@material-ui/core';\n\nimport history from '../../redux/history';\n\nconst GoBackButton = withStyles({\n root: {\n boxShadow: 'none',\n textTransform: 'none',\n fontSize: 16,\n padding: '0',\n lineHeight: 1.5,\n '&:hover': {\n backgroundColor: 'transparent',\n boxShadow: 'none',\n },\n '&:active': {\n boxShadow: 'none',\n },\n '&:focus': {\n boxShadow: 'none',\n },\n },\n})(Button);\n\nconst ButtonText = withStyles({\n root: {\n fontSize: 20,\n fontWeight: 'normal',\n fontStretch: 'normal',\n fontStyle: 'normal',\n lineHeight: 1.2,\n letterSpacing: 'normal',\n color: 'rgba(0, 0, 0, 0.54)',\n },\n})(Typography);\n\ninterface OwnProps {\n text: string;\n}\n\ntype Props = OwnProps;\n\nconst BackButton: React.FC<Props> = ({ text }) => (\n <GoBackButton onClick={history.goBack}>\n <ArrowBack fontSize=\"default\" color=\"action\" style={{ marginRight: 20 }} />\n <ButtonText>\n { text }\n </ButtonText>\n </GoBackButton>\n);\n\nexport default BackButton;\n","import React, { PureComponent, Fragment } from 'react';\n\nimport Grid from '@material-ui/core/Grid/Grid';\n\nimport { IProps, IState } from './IUserStatisticCont';\nimport locales from '../../locales';\nimport UserStatisticTable from '../../components/UserStatistic/UserStatisticTable';\nimport UserCard from '../../components/UserStatistic/UserCard';\nimport UserReserveTable from '../../components/UserStatistic/UserReserveTable';\nimport BackButton from '../../components/Common/BackButton';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport CashBoxWarningCont from '../CashBoxWarning';\n\nclass UserStatisticCont extends PureComponent<IProps, IState> {\n componentDidMount(): void {\n const { getUserStatistic, match } = this.props;\n getUserStatistic(match.params.phone, { orderBy: 'date', order: 'desc' });\n }\n\n handelChangeSort = (order: 'desc' | 'asc') => {\n const { getUserStatistic, match } = this.props;\n getUserStatistic(match.params.phone, { orderBy: 'date', order });\n };\n\n /** @description Открытие детальной инфы резерва */\n handleOpenBookingDetails = (bookingId: number) => {\n const { openBookingDetails } = this.props;\n\n openBookingDetails(bookingId);\n };\n\n render() {\n const {\n reserves, statistic, userInfo, loading, bookingsOrders, moneySymbol,\n } = this.props;\n\n return (\n <Fragment>\n <PageHeaderWrap>\n <BackButton text={locales.t('userStatistic.title')} />\n </PageHeaderWrap>\n <CashBoxWarningCont />\n {\n loading\n ? null\n : (\n <PageContentWrap fullWidth>\n <Grid item xs={12} md={6}>\n <UserCard\n userInfo={userInfo}\n statistic={statistic}\n moneySymbol={moneySymbol}\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <UserStatisticTable statistic={statistic} />\n </Grid>\n <Grid item xs={12}>\n <UserReserveTable\n reserves={reserves}\n handelChangeSort={this.handelChangeSort}\n bookingsOrders={bookingsOrders}\n handleOpenBookingDetails={this.handleOpenBookingDetails}\n moneySymbol={moneySymbol}\n />\n </Grid>\n </PageContentWrap>\n )\n }\n </Fragment>\n );\n }\n}\n\nexport default UserStatisticCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport UserStatisticsCont from './UserStatisticCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './IUserStatisticCont';\nimport { IAppActions } from '../../types/IAppActions';\nimport { getUserStatistic } from '../../actions/userStatistic/UserStatisticActions';\nimport { openBookingDetails } from '../../actions/statistics/StatisticsActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n currentRestaurantId: state.cabinet.currentRestaurant && state.cabinet.currentRestaurant.id,\n moneySymbol: state.cabinet.moneySymbol,\n statistic: state.userStatistics.statistics,\n reserves: state.userStatistics.reserves,\n userInfo: state.userStatistics.userInfo,\n loading: state.loading.isLoading,\n bookingsOrders: state.statistic.bookingsOrders,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n getUserStatistic,\n openBookingDetails,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UserStatisticsCont);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport Paper from '@material-ui/core/Paper';\nimport {\n Typography, createStyles, withStyles, WithStyles,\n} from '@material-ui/core';\nimport moment from 'moment';\n\nimport locales from '../../../locales';\nimport { TSourceInfo } from '../../../types/ISourceStatistic';\nimport UserStatisticTableItem\n from '../../Common/Statistic/StatisticTable/UserStatisticTableItem.tsx';\nimport StatisticItem from '../../Common/Statistic/StatisticTable/StatisticTableItem';\n\ninterface Props {\n sourceInfo: TSourceInfo;\n statistic: {\n total: number;\n totalCancelledByGuest: number;\n totalCancelledByRestaurant: number;\n totalDeclined: number;\n totalClosed: number;\n totalReceiptAmount: number;\n averageReceiptAmount: number;\n commissionAmount: number;\n };\n moneySymbol: string;\n}\n\nconst styles = () => createStyles({\n wrap: {\n height: '100%',\n minHeight: 302,\n },\n roleWrap: {\n padding: '24px 24px 16px 24px',\n display: 'flex',\n },\n roleTitle: {\n backgroundColor: '#f7f8fb',\n padding: '0px 24px',\n height: 24,\n display: 'flex',\n alignItems: 'center',\n },\n activityDateWrap: {\n paddingTop: 12,\n },\n infoWrap: {\n display: 'flex',\n padding: '0 16px',\n },\n userInfoWrap: {\n marginTop: 20,\n display: 'flex',\n flexDirection: 'column',\n },\n statusWrap: {\n padding: '4px 8px',\n textTransform: 'uppercase',\n backgroundColor: 'rgb(106, 233, 197, 0.3)',\n color: 'black',\n },\n statusWrap__deactivated: {\n backgroundColor: 'rgb(244, 88, 88, 0.3)',\n },\n userIcon: {\n width: 77,\n height: 77,\n marginRight: 14,\n },\n userStatWrap: {\n display: 'flex',\n padding: '50px 24px 50px 24px',\n },\n});\n\ninterface IProps extends Props, WithStyles<typeof styles> {}\n\nconst index: React.FC<IProps> = ({ sourceInfo, classes, statistic, moneySymbol }) => {\n const createdDate = sourceInfo.createdDate ? moment(sourceInfo.createdDate).format('DD MMMM YYYY г.') : '—';\n const lastReserve = sourceInfo.lastReserve ? moment(sourceInfo.lastReserve).format('DD MMMM YYYY г.') : '—';\n\n const isActive = sourceInfo.isActive ? (\n <Typography className={classes.statusWrap} variant=\"overline\">\n { locales.t('sourceStatistic.sourceCard.status.active') }\n </Typography>\n ) : (\n <Typography className={classNames(classes.statusWrap, classes.statusWrap__deactivated)} variant=\"overline\">\n { locales.t('sourceStatistic.sourceCard.status.notActive') }\n </Typography>\n );\n\n return (\n <Paper elevation={3} className={classes.wrap}>\n <div className={classes.roleWrap}>\n <div className={classes.roleTitle}>\n <Typography variant=\"body1\">\n { locales.t('sourceStatistic.sourceCard.source') }\n </Typography>\n </div>\n </div>\n <div className={classes.infoWrap}>\n <AccountCircle\n color=\"secondary\"\n className={classes.userIcon}\n />\n <div>\n <Typography variant=\"h4\">\n { sourceInfo ? sourceInfo.name : '—' }\n </Typography>\n <Typography variant=\"body1\">\n { sourceInfo ? sourceInfo.description : '—' }\n </Typography>\n <div className={classes.userInfoWrap}>\n <div>\n { isActive }\n </div>\n <div className={classes.activityDateWrap}>\n <Typography variant=\"body2\">\n { `${locales.t('sourceStatistic.sourceCard.createdDate')}: ${createdDate}` }\n </Typography>\n <Typography variant=\"body2\">\n { `${locales.t('sourceStatistic.sourceCard.lastReserve')}: ${lastReserve}` }\n </Typography>\n </div>\n </div>\n </div>\n </div>\n <div className={classes.userStatWrap}>\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.checkRow.average')}\n stat={`${statistic.averageReceiptAmount.toFixed()} ${moneySymbol}`}\n textAlign=\"center\"\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.success')}\n stat={statistic.totalClosed || 0}\n textAlign=\"center\"\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.checkRow.summary')}\n stat={`${statistic.totalReceiptAmount.toFixed()} ${moneySymbol}`}\n textAlign=\"center\"\n />\n </div>\n </Paper>\n );\n};\n\nexport default withStyles(styles)(index);\n","import React from 'react';\n\nimport Paper from '@material-ui/core/Paper/Paper';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\n\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\nimport UserStatisticTableItem\n from '../../Common/Statistic/StatisticTable/UserStatisticTableItem.tsx';\n\ninterface Props {\n statistic: {\n total: number;\n totalCancelledByGuest: number;\n totalCancelledByRestaurant: number;\n totalDeclined: number;\n totalClosed: number;\n totalReceiptAmount: number;\n averageReceiptAmount: number;\n commissionAmount: number;\n };\n moneySymbol: string;\n}\n\nconst styles = createStyles({\n statisticsWrap: {\n display: 'flex',\n flexDirection: 'column',\n padding: 24,\n paddingTop: 16,\n width: '80%',\n },\n statisticRow: {\n display: 'flex',\n justifyContent: 'left',\n paddingBottom: 40,\n },\n});\n\ninterface IProps extends Props, WithStyles<typeof styles> {}\n\n\nconst index: React.FC<IProps> = ({ statistic, classes, moneySymbol }) => (\n <Paper elevation={3} style={{ height: '100%' }}>\n <Title text={locales.t('sourceStatistic.statisticTable.title')} />\n <div className={classes.statisticsWrap}>\n <div className={classes.statisticRow}>\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.summary')}\n stat={statistic.total || 0}\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.success')}\n stat={statistic.totalClosed || 0}\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.canceledByRestaurant')}\n stat={statistic.totalCancelledByRestaurant || 0}\n />\n </div>\n <div className={classes.statisticRow}>\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.declinedByRestaurant')}\n stat={statistic.totalDeclined || 0}\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.checkRow.average')}\n stat={`${statistic.averageReceiptAmount.toFixed()} ${moneySymbol}`}\n color=\"primary\"\n />\n <UserStatisticTableItem\n type={locales.t('sourceStatistic.statisticTable.reservesRow.canceledByGuest')}\n stat={statistic.totalCancelledByGuest || 0}\n />\n </div>\n </div>\n </Paper>\n);\n\nexport default withStyles(styles)(index);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\n\nimport locales from '../../../locales';\n\nconst rows: Array<{\n id: string;\n sortable: boolean;\n label: string;\n last?: boolean;\n first?: boolean;\n}> = [\n {\n id: 'date', sortable: true, label: locales.t('sourceStatistic.reserveTable.date'), first: true,\n },\n { id: 'name', sortable: false, label: locales.t('sourceStatistic.reserveTable.name') },\n { id: 'phone', sortable: false, label: locales.t('sourceStatistic.reserveTable.phone') },\n { id: 'status', sortable: false, label: locales.t('sourceStatistic.reserveTable.status') },\n { id: 'check', sortable: false, label: locales.t('sourceStatistic.reserveTable.check') },\n {\n id: 'empty', sortable: false, label: '', last: true,\n },\n];\n\ninterface Props {\n onRequestSort: (event: any, property: any) => void;\n order: 'asc' | 'desc';\n orderBy: string;\n}\n\nconst useStyles = makeStyles({\n paddingLeft: {\n paddingLeft: 24,\n },\n});\n\nconst SourceStatisticReserveTableHead: React.FC<Props> = (props) => {\n const { onRequestSort, order, orderBy } = props;\n const classes = useStyles();\n\n const createSortHandler = (property: any) => (event: any) => {\n onRequestSort(event, property);\n };\n\n return (\n <TableHead style={{ backgroundColor: '#F2F2F2' }}>\n <TableRow>\n {rows.map((row) => (\n <TableCell\n key={row.id}\n align=\"left\"\n padding={row.last ? 'none' : 'default'}\n className={classNames({ [classes.paddingLeft]: row.first })}\n sortDirection={orderBy === row.id ? order : false}\n >\n {row.sortable\n ? (\n <TableSortLabel\n active={orderBy === row.id}\n direction={order}\n onClick={createSortHandler(row.id)}\n >\n {row.label}\n </TableSortLabel>\n )\n : (<span>{row.label}</span>)\n }\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n );\n};\n\nexport default SourceStatisticReserveTableHead;\n","import React, { Fragment, useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport TableCell from '@material-ui/core/TableCell/TableCell';\nimport TableRow from '@material-ui/core/TableRow/TableRow';\nimport Typography from '@material-ui/core/Typography';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\nimport IconButton from '@material-ui/core/IconButton';\nimport Collapse from '@material-ui/core/Collapse';\n\nimport ReserveDetails from '../../Common/Statistic/StatisticReserveTable/ReserveDetails';\nimport { TReserve } from '../../../types/IBookingStore';\nimport locales from '../../../locales';\nimport { parsePhoneNumber } from '../../../helpers/reserveHelpers';\nimport { IBookingOrders } from '../../../types/IStatisticStore';\nimport { Routers } from '../../../config/constants';\nimport ReserveTime from '../../Common/Statistic/StatisticReserveTable/ReserveTime';\n\ninterface OwnProps {\n reserveInfo: TReserve;\n bookingOrders: IBookingOrders;\n handleOpenBookingDetails: (bookingId: number) => void;\n moneySymbol: string;\n}\n\ntype Props = OwnProps;\n\nconst SourceStatisticsReserveTableItem: React.FC<Props> = ({\n bookingOrders,\n reserveInfo,\n handleOpenBookingDetails,\n moneySymbol,\n}) => {\n const [isOpen, changeVisible] = useState(false);\n const handleChangeVisible = () => {\n if (!isOpen) {\n handleOpenBookingDetails(reserveInfo.id);\n }\n\n changeVisible(!isOpen);\n };\n\n const stateColor = (state: string): 'initial' | 'primary' | 'error' => {\n switch (state) {\n case 'DECLINED':\n case 'GUEST_DECLINE':\n case 'RESTAURATEUR_DECLINE':\n case 'UNKNOWN_DECLINE':\n return 'error';\n case 'CLOSED':\n return 'primary';\n default: return 'initial';\n }\n };\n\n return (\n <Fragment>\n <TableRow>\n <TableCell padding=\"default\" style={{ paddingLeft: 24 }}>\n <ReserveTime reserveInfo={reserveInfo} />\n </TableCell>\n <TableCell padding=\"default\">\n { reserveInfo.firstName || '—'}\n </TableCell>\n <TableCell padding=\"default\">\n <span style={reserveInfo.source && { textDecoration: 'underline' }}>\n { reserveInfo.phone ? (\n <Link to={`${Routers.userStatistics}/${reserveInfo.phone}`}>\n { parsePhoneNumber(reserveInfo.phone) }\n </Link>\n ) : '—' }\n </span>\n </TableCell>\n <TableCell padding=\"default\">\n <Typography color={stateColor(reserveInfo.state)}>\n { reserveInfo.state ? locales.t(`booking.status.${reserveInfo.state}`) : '—' }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\">\n <Typography variant=\"body1\">\n { reserveInfo.receiptAmount ? `${reserveInfo.receiptAmount} ${moneySymbol}` : '—' }\n </Typography>\n </TableCell>\n <TableCell padding=\"default\" align=\"right\" style={{ paddingRight: 12 }}>\n <IconButton onClick={handleChangeVisible}>\n { isOpen ? <ExpandLess /> : <ExpandMore />}\n </IconButton>\n </TableCell>\n </TableRow>\n <Collapse\n in={isOpen}\n unmountOnExit\n timeout=\"auto\"\n component={() => <ReserveDetails moneySymbol={moneySymbol} info={reserveInfo} order={bookingOrders[reserveInfo.id]} />}\n />\n </Fragment>\n );\n};\n\nexport default SourceStatisticsReserveTableItem;\n","import React from 'react';\nimport Paper from '@material-ui/core/Paper';\nimport TableBody from '@material-ui/core/TableBody';\nimport Table from '@material-ui/core/Table';\nimport TablePagination from '@material-ui/core/TablePagination/TablePagination';\n\nimport SourceStatisticReserveTableHead from './SourceStatisticReserveTableHead';\nimport SourceStatisticsReserveTableItem from './SourceStatisticsReserveTableItem';\nimport { TReserve } from '../../../types/IBookingStore';\nimport { IBookingOrders, TPages } from '../../../types/IStatisticStore';\nimport Title from '../../Common/Title';\nimport locales from '../../../locales';\n\ntype Props = {\n bookingOrders: IBookingOrders;\n reserves: Array<TReserve>;\n handleGetReserves: (page: number, size: number, sortType: 'desc' | 'asc') => void;\n handleOpenBookingDetails: (bookingId: number) => void;\n pages: TPages;\n moneySymbol: string;\n};\n\nconst index: React.FC<Props> = ({\n bookingOrders,\n reserves,\n handleGetReserves,\n handleOpenBookingDetails,\n pages,\n moneySymbol,\n}) => {\n const [page, setPage] = React.useState(0);\n const [rowsPerPage, setRowsPerPage] = React.useState(10);\n const [sortType, changeSortType] = React.useState<\"desc\" | \"asc\">('desc');\n\n /** @description Ручка для переключение страниц в таблице */\n const handleChangePage = (event: any, newPage: number) => {\n setPage(newPage);\n handleGetReserves(newPage, rowsPerPage, sortType);\n };\n\n /** @description Ручка для переключение количества строк в таблице */\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n const nRowsPerPage = parseInt(event.target.value);\n setRowsPerPage(nRowsPerPage);\n setPage(0);\n handleGetReserves(0, nRowsPerPage, sortType);\n };\n\n /** @description Ручка для изменения типа сортировки */\n const handleChangeSortType = () => {\n if (sortType === 'desc') {\n changeSortType('asc');\n handleGetReserves(page, rowsPerPage, 'asc');\n } else {\n changeSortType('desc');\n handleGetReserves(page, rowsPerPage, 'desc');\n }\n };\n\n return (\n <Paper elevation={3}>\n <Title\n padding=\"8px 12px 8px 24px\"\n text={locales.t('statistics.reserves.title')}\n borderBottom\n spaceBetween\n />\n <Table>\n <SourceStatisticReserveTableHead\n onRequestSort={handleChangeSortType}\n order={sortType}\n orderBy=\"date\"\n />\n <TableBody>\n {\n reserves.map(reserve => (\n <SourceStatisticsReserveTableItem\n bookingOrders={bookingOrders}\n key={reserve.id}\n reserveInfo={reserve}\n handleOpenBookingDetails={handleOpenBookingDetails}\n moneySymbol={moneySymbol}\n />\n ))\n }\n </TableBody>\n </Table>\n <TablePagination\n labelRowsPerPage=\"Строк на странице:\"\n style={{ paddingRight: 8 }}\n rowsPerPageOptions={[10, 25, 100]}\n component=\"div\"\n count={pages.totalElements}\n rowsPerPage={pages.size || rowsPerPage}\n page={page}\n backIconButtonProps={{\n 'aria-label': 'previous page',\n }}\n nextIconButtonProps={{\n 'aria-label': 'next page',\n }}\n onChangePage={handleChangePage}\n onChangeRowsPerPage={handleChangeRowsPerPage}\n />\n </Paper>\n );\n};\n\nexport default index;\n","import React, { PureComponent, Fragment } from 'react';\n\nimport Grid from '@material-ui/core/Grid/Grid';\n\nimport { IProps } from './ISourceStatistic';\nimport locales from '../../locales';\nimport SourceCard from '../../components/SourceStatictic/SourceCard';\nimport SourceStatisticTable from '../../components/SourceStatictic/SourceStatisticTable';\nimport SourceReserveTable from '../../components/SourceStatictic/SourceReserveTable';\nimport BackButton from '../../components/Common/BackButton';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport CashBoxWarningCont from '../CashBoxWarning';\nimport StatisticDateCont from '../StatisticDateCont';\nimport { IDate } from '../../types/IDate';\nimport { NoHostessWarning } from '../../features';\n\nclass UserStatisticCont extends PureComponent<IProps, {}> {\n componentDidMount(): void {\n const {\n getSourceStatistic,\n getReservesBySource,\n getSourceInfo,\n match,\n pages,\n } = this.props;\n const { source } = match.params;\n\n getSourceInfo(source);\n\n getSourceStatistic(source);\n\n getReservesBySource(\n source,\n { orderBy: 'date', order: 'desc' },\n pages.current,\n pages.size,\n );\n }\n\n /** @description Ручка для запроса списка резервов */\n handleGetReserves = (page: number, size: number, sortType: 'desc' | 'asc'): void => {\n const {\n getReservesBySource,\n match,\n } = this.props;\n\n getReservesBySource(\n match.params.source,\n { orderBy: 'date', order: sortType },\n page,\n size,\n );\n };\n\n /** @description Ручка для полчения статистики */\n handleGetStatistics = (date: IDate): void => {\n const {\n getSourceStatistic,\n getReservesBySource,\n match,\n pages,\n } = this.props;\n\n getSourceStatistic(\n match.params.source,\n date,\n );\n\n getReservesBySource(\n match.params.source,\n { orderBy: 'date', order: 'desc' },\n pages.current,\n pages.size,\n date,\n );\n };\n\n /** @description Открытие детальной инфы резерва */\n handleOpenBookingDetails = (bookingId: number) => {\n const { openBookingDetails } = this.props;\n\n openBookingDetails(bookingId);\n };\n\n render() {\n const {\n reserves, statistic, sourceInfo, loading, isInit, pages, bookingOrders, moneySymbol,\n } = this.props;\n\n return (\n <Fragment>\n <PageHeaderWrap>\n <BackButton text={locales.t('userStatistic.title')} />\n <StatisticDateCont handleGetStatistics={this.handleGetStatistics} />\n </PageHeaderWrap>\n <CashBoxWarningCont />\n <NoHostessWarning />\n {\n !isInit && loading\n ? null\n : (\n <PageContentWrap fullWidth>\n <Grid item xs={12} md={6}>\n <SourceCard sourceInfo={sourceInfo} moneySymbol={moneySymbol} statistic={statistic} />\n </Grid>\n <Grid item xs={12} md={6}>\n <SourceStatisticTable moneySymbol={moneySymbol} statistic={statistic} />\n </Grid>\n <Grid item xs={12} lg={12}>\n <SourceReserveTable\n reserves={reserves}\n pages={pages}\n moneySymbol={moneySymbol}\n bookingOrders={bookingOrders}\n handleOpenBookingDetails={this.handleOpenBookingDetails}\n handleGetReserves={this.handleGetReserves}\n />\n </Grid>\n </PageContentWrap>\n )\n }\n </Fragment>\n );\n }\n}\n\nexport default UserStatisticCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport UserStatisticsCont from './SourceStatisticCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './ISourceStatistic';\nimport { IAppActions } from '../../types/IAppActions';\nimport {\n getSourceStatistic, getReservesBySource, getSourceInfo,\n} from '../../actions/sourceStatistic/SourceStatisticActions';\nimport { openBookingDetails } from '../../actions/statistics/StatisticsActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n currentRestaurantId: state.cabinet.currentRestaurant && state.cabinet.currentRestaurant.id,\n moneySymbol: state.cabinet.moneySymbol,\n statistic: state.sourceStatistic.statistic,\n isInit: state.sourceStatistic.isInit,\n reserves: state.sourceStatistic.reserves,\n sourceInfo: state.sourceStatistic.sourceInfo,\n pages: state.sourceStatistic.pages,\n loading: state.loading.isLoading,\n bookingOrders: state.statistic.bookingsOrders,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n getSourceStatistic,\n getReservesBySource,\n getSourceInfo,\n openBookingDetails,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UserStatisticsCont);\n","import React, { Fragment, useState } from 'react';\n\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport DialogActions from '@material-ui/core/DialogActions/DialogActions';\nimport Button from '@material-ui/core/Button/Button';\n\nimport locales from '../../../locales';\n\nconst styles = (theme: Theme) => createStyles({\n linkColor: {\n color: theme.palette.primary.main,\n },\n wrap: {\n maxWidth: 600,\n height: 350,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n handleCloseDialog: () => void;\n handleSendAuthReq: (authData: { login: string; password: string; }) => void;\n}\n\nconst FirstStep: React.FC<IProps> = ({ classes, handleCloseDialog, handleSendAuthReq }) => {\n const [authData, changeCred] = useState({ email: '', password: '' });\n\n /** @description Редактирование полей email и password */\n const onChange = (event: any) => {\n changeCred({\n ...authData,\n [event.target.type]: event.target.value,\n });\n };\n\n /** @description Отправка запроса */\n const onSend = () => {\n handleSendAuthReq({\n login: authData.email,\n password: authData.password,\n });\n };\n\n return (\n <Fragment>\n <div className={classes.wrap}>\n <DialogContent>\n <DialogContentText>\n <span style={{ fontWeight: 'bold' }}>{ locales.t('home.authIiko.firstStep.step') }</span>\n { locales.t('home.authIiko.firstStep.stepDescription1') }\n <a\n href={locales.t('home.authIiko.firstStep.iikoHelpLink')}\n target=\"noopener\"\n style={{ textDecoration: 'underline' }}\n >\n { locales.t('home.authIiko.firstStep.stepDescription2') }\n </a>\n { locales.t('home.authIiko.firstStep.stepDescription3') }\n <a\n href={locales.t('home.authIiko.firstStep.iikoLink')}\n className={classes.linkColor}\n target=\"noopener\"\n >\n { locales.t('home.authIiko.firstStep.iikoLink') }\n </a>\n </DialogContentText>\n <TextField\n onChange={onChange}\n margin=\"normal\"\n label={locales.t('home.authIiko.email')}\n type=\"email\"\n fullWidth\n value={authData.email}\n />\n <TextField\n onChange={onChange}\n margin=\"normal\"\n label={locales.t('home.authIiko.password')}\n type=\"password\"\n fullWidth\n value={authData.password}\n />\n <div style={{ marginTop: 34 }}>\n <Typography variant=\"caption\">\n { locales.t('home.authIiko.description') }\n </Typography>\n </div>\n </DialogContent>\n </div>\n <div>\n <DialogActions>\n <Button\n color=\"secondary\"\n onClick={handleCloseDialog}\n >\n { locales.t('common.reject') }\n </Button>\n <Button\n color=\"primary\"\n onClick={onSend}\n >\n { locales.t('home.connectBtn') }\n </Button>\n </DialogActions>\n </div>\n </Fragment>\n );\n};\n\nexport default withStyles(styles)(FirstStep);\n","import React, { Fragment, useState } from 'react';\n\nimport {\n withStyles,\n createStyles,\n WithStyles,\n Theme,\n} from '@material-ui/core/styles';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../../locales';\nimport { TIIkoOrganization } from '../../../types/ICabinetStore';\n\nconst styles = (theme: Theme) => createStyles({\n linkColor: {\n color: theme.palette.primary.main,\n },\n wrap: {\n maxWidth: 600,\n minHeight: 350,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n organizationList: Array<TIIkoOrganization>;\n handleCloseDialog: () => void;\n handleSendSelectReq: (organizationId: string) => void;\n}\n\nconst SecondStep: React.FC<IProps> = ({\n classes,\n organizationList,\n handleCloseDialog,\n handleSendSelectReq,\n}) => {\n const [organizationId, selectOrg] = useState(organizationList[0].id);\n\n /** @description Выбор организаци из списка */\n const onChange = (event: any) => {\n selectOrg(event.target.value);\n };\n\n /** @description Отправка запроса */\n const onSend = () => {\n handleSendSelectReq(organizationId);\n };\n\n return (\n <Fragment>\n <div className={classes.wrap}>\n <DialogContent>\n <DialogContentText>\n <span style={{ fontWeight: 'bold' }}>{ locales.t('home.authIiko.secondStep.step') }</span>\n { locales.t('home.authIiko.secondStep.stepDescription1') }\n </DialogContentText>\n <FormControl margin=\"normal\" fullWidth>\n <Select\n value={organizationList[0].id}\n onChange={onChange}\n inputProps={{\n name: 'age',\n id: 'demo-controlled-open-select',\n }}\n >\n {\n organizationList.map(org => (\n <MenuItem key={org.id} value={org.id}>\n { `${org.name} ${org.address}` }\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n </DialogContent>\n </div>\n <div>\n <DialogActions>\n <Button\n color=\"secondary\"\n onClick={handleCloseDialog}\n >\n { locales.t('common.reject') }\n </Button>\n <Button\n color=\"primary\"\n onClick={onSend}\n >\n { locales.t('home.connectBtn') }\n </Button>\n </DialogActions>\n </div>\n </Fragment>\n );\n};\n\nexport default withStyles(styles)(SecondStep);\n","import React, { Fragment } from 'react';\n\nimport {\n withStyles, WithStyles, createStyles, Typography,\n} from '@material-ui/core';\nimport Button from '@material-ui/core/Button/Button';\nimport DialogActions from '@material-ui/core/DialogActions/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent/DialogContent';\n\nimport locales from '../../../locales';\n\nconst styles = () => createStyles({\n topBorder: {\n borderTop: '1px solid rgba(224, 224, 224, 1)',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n handleCloseDialog: () => void;\n}\n\nconst AuthIikoErrorMessages: React.FC<IProps> = ({\n classes,\n handleCloseDialog,\n}) => (\n <Fragment>\n <div>\n <DialogContent>\n <Typography color=\"error\">\n { locales.t('common.unknownError') }\n </Typography>\n </DialogContent>\n </div>\n <div className={classes.topBorder}>\n <DialogActions>\n <Button\n color=\"secondary\"\n onClick={handleCloseDialog}\n >\n { locales.t('common.reject') }\n </Button>\n </DialogActions>\n </div>\n </Fragment>\n);\n\nexport default withStyles(styles)(AuthIikoErrorMessages);\n","import React from 'react';\n\nimport {\n withStyles, WithStyles, createStyles, Theme,\n} from '@material-ui/core';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport CloseIcon from '@material-ui/icons/Close';\nimport IconButton from '@material-ui/core/IconButton/IconButton';\n\nimport FirstStep from './FirstStep';\nimport SecondStep from './SecondStep';\nimport locales from '../../../locales';\nimport AuthErrorMessages from './AuthIikoErrorMessages';\nimport { TIikoAuth } from '../../../types/ICabinetStore';\n\nconst styles = (theme: Theme) => createStyles({\n closeButton: {\n position: 'absolute',\n right: theme.spacing(),\n top: theme.spacing(),\n color: theme.palette.grey[500],\n },\n bottomBorder: {\n borderBottom: '1px solid rgba(224, 224, 224, 1)',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n modalOpen: boolean;\n iikoAuth: TIikoAuth;\n handleSendAuthReq: (authData: { login: string; password: string }) => void;\n handleSendSelectReq: (organizationId: string) => void;\n switchAuthIikoModal: () => void;\n}\n\nconst AuthIikoModal: React.FC<IProps> = ({\n modalOpen,\n iikoAuth,\n classes,\n handleSendAuthReq,\n handleSendSelectReq,\n switchAuthIikoModal,\n}) => {\n const ErrorMessageComp = !iikoAuth.step\n && iikoAuth.step !== (1 || 2)\n && <AuthErrorMessages handleCloseDialog={switchAuthIikoModal} />;\n\n return (\n <Dialog\n open={modalOpen}\n aria-labelledby=\"form-dialog-title\"\n >\n <div className={classes.bottomBorder}>\n <DialogTitle id=\"form-dialog-title\">{locales.t('home.authIiko.title')}</DialogTitle>\n <IconButton\n aria-label=\"Close\"\n className={classes.closeButton}\n onClick={switchAuthIikoModal}\n >\n <CloseIcon />\n </IconButton>\n </div>\n {\n iikoAuth.step === 1 && (\n <FirstStep\n handleCloseDialog={switchAuthIikoModal}\n handleSendAuthReq={handleSendAuthReq}\n />\n )\n }\n {\n iikoAuth.step === 2 && (\n <SecondStep\n handleCloseDialog={switchAuthIikoModal}\n handleSendSelectReq={handleSendSelectReq}\n organizationList={iikoAuth.organizationList}\n />\n )\n }\n { ErrorMessageComp }\n </Dialog>\n );\n};\n\nexport default withStyles(styles)(AuthIikoModal);\n","import React, { Component } from 'react';\n\nimport AuthIkkoModal from '../../components/Common/AuthIikoModal';\nimport { IAuthIikoModalProps } from './IAuthIikoModal';\n\nclass AuthIikoModalComp extends Component<IAuthIikoModalProps> {\n constructor(props: IAuthIikoModalProps) {\n super(props);\n this.state = {};\n }\n\n /** @description Отправка запроса на авторизацию в iiko */\n handleSendAuthReq = (authData: { login: string; password: string }) => {\n const { authFromIiko, currentRestaurantId } = this.props;\n authFromIiko(authData, currentRestaurantId);\n };\n\n /** @description Отправка запроса на выбор организации в iiko */\n handleSendSelectReq = (organizationId: string) => {\n const { selectOrganization, currentRestaurantId } = this.props;\n selectOrganization(currentRestaurantId, organizationId);\n };\n\n render() {\n const { modalOpen, switchAuthIikoModal, iikoAuth } = this.props;\n\n return (\n <AuthIkkoModal\n modalOpen={modalOpen}\n switchAuthIikoModal={switchAuthIikoModal}\n handleSendAuthReq={this.handleSendAuthReq}\n handleSendSelectReq={this.handleSendSelectReq}\n iikoAuth={iikoAuth}\n />\n );\n }\n}\n\nexport default AuthIikoModalComp;\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport AuthIikoModalComp from './AuthIikoModal';\nimport { authFromIiko, selectOrganization } from '../../actions/home/HomeActions';\nimport { switchAuthIikoModal } from '../../actions/cabinet/CabinetActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './IAuthIikoModal';\n\nconst mapStateToProps = (state: IAppStore): StateProps => {\n const currentRestaurantId = state.cabinet.currentRestaurant ? state.cabinet.currentRestaurant.id : 0;\n\n return {\n modalOpen: state.cabinet.modalAuthIikoOpen,\n iikoAuth: state.cabinet.iikoAuth,\n currentRestaurantId,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch<IAppActions>): DispatchProps => {\n return bindActionCreators({\n switchAuthIikoModal,\n authFromIiko,\n selectOrganization,\n }, dispatch);\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthIikoModalComp);\n","import { createStyles, Theme } from '@material-ui/core/styles';\n\n\nconst tabletWidth = 1280;\nconst drawerWidth = 270;\nconst menuBackgroundColor = '#f7f8fb';\n\nconst styles = (theme: Theme) => createStyles({\n root: {\n display: 'flex',\n },\n appBar: {\n backgroundColor: '#323232',\n [theme.breakpoints.up(tabletWidth)]: {\n width: '100%',\n },\n [theme.breakpoints.down(600)]: {\n height: 56,\n },\n },\n appBarShift: {\n marginLeft: drawerWidth,\n width: `calc(100% - ${drawerWidth}px)`,\n transition: theme.transitions.create(['width', 'margin'], {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.enteringScreen,\n }),\n backgroundColor: 'white',\n [theme.breakpoints.up(tabletWidth)]: {\n width: '100%',\n },\n },\n menuButton: {\n marginLeft: -12,\n marginRight: 20,\n color: 'rgb(197, 197, 197)',\n [theme.breakpoints.up('lg')]: {\n width: 240,\n },\n [theme.breakpoints.up('xl')]: {\n width: 270,\n },\n [theme.breakpoints.down('lg')]: {\n marginRight: 48,\n },\n [theme.breakpoints.down('sm')]: {\n marginRight: 20,\n },\n },\n hide: {\n display: 'none',\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n whiteSpace: 'nowrap',\n [theme.breakpoints.down(tabletWidth)]: {\n position: 'fixed',\n zIndex: 1200,\n opacity: 0.9,\n },\n },\n drawerOpen: {\n width: drawerWidth,\n backgroundColor: menuBackgroundColor,\n border: 0,\n boxShadow: '2px 0 6px 0 rgba(31, 48, 63, 0.3);',\n },\n toolbar: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'left',\n paddingLeft: 24,\n ...theme.mixins.toolbar,\n backgroundColor: menuBackgroundColor,\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n marginTop: 64,\n },\n snackbarContent: {\n width: 360,\n },\n logo: {\n width: 145,\n },\n isDisabled: {\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 1,\n backgroundColor: 'black',\n opacity: 0.5,\n },\n});\n\nexport default styles;\n","import React, { ChangeEvent, FC } from 'react';\n\nimport {\n makeStyles,\n Theme,\n FormControl,\n TextField,\n MenuItem,\n} from '@material-ui/core';\n\nimport { TRestaurant } from '../../../types/ICabinetStore';\nimport locales from '../../../locales';\nimport { Employees } from '../../../entities';\n\n\nconst useStyles = makeStyles((theme: Theme) => ({\n formControl: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1),\n\n [theme.breakpoints.down(750)]: {\n minWidth: 350,\n },\n\n '& svg': {\n color: '#aaaaaa',\n },\n },\n\n label: {\n color: '#aaaaaa',\n\n [theme.breakpoints.up(750)]: {\n fontSize: 16,\n },\n },\n\n input: {\n color: 'white',\n fontWeight: 500,\n\n [theme.breakpoints.up(750)]: {\n fontSize: 16,\n },\n\n '&:before': {\n borderBottomColor: '#aaaaaa',\n },\n },\n\n list: {\n '& li': {\n color: '#ffffff',\n },\n\n '& li:last-child': {\n color: theme.palette.grey[400],\n },\n\n '& li.Mui-selected': {\n backgroundColor: `${theme.palette.primary.dark}!important`,\n color: theme.palette.primary.contrastText,\n },\n\n '& li:hover': {\n backgroundColor: `${theme.palette.primary.light}!important`,\n color: theme.palette.primary.contrastText,\n },\n\n backgroundColor: '#323232',\n },\n}));\n\n\nconst RestaurantSelect: FC<{\n setCurrentRestaurant: (id: number) => void;\n currentRestaurant?: TRestaurant;\n restaurantList: Array<TRestaurant>;\n onCreateRestaurant: () => void;\n}> = ({\n setCurrentRestaurant,\n restaurantList,\n currentRestaurant,\n onCreateRestaurant,\n}) => {\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n\n const onChange = (e: ChangeEvent<{ name?: string; value: any }>) => {\n if (e.target.value) {\n setCurrentRestaurant(parseInt(e.target.value, 10));\n }\n };\n\n const classes = useStyles();\n\n return (\n <FormControl fullWidth classes={{ root: classes.formControl }}>\n <TextField\n value={currentRestaurant && currentRestaurant.id}\n onChange={onChange}\n select\n id=\"select-restaurant\"\n label={locales.t('places.restaurantSelect')}\n InputLabelProps={{ classes: { root: classes.label } }}\n InputProps={{ classes: { root: classes.input } }}\n fullWidth\n SelectProps={{\n MenuProps: {\n classes: {\n list: classes.list,\n },\n getContentAnchorEl: null,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'left',\n },\n },\n }}\n >\n {restaurantList.map(item => (\n <MenuItem key={item.id} value={item.id}>\n {`${item.name} — ${item.address.street}, ${item.address.home}`}\n </MenuItem>\n ))}\n\n {currentEmployee && Employees.hasAccess(currentEmployee, 'restaurants:access') && (\n <MenuItem onClick={onCreateRestaurant}>\n {locales.t('places.restaurantAdd')}\n </MenuItem>\n )}\n </TextField>\n </FormControl>\n );\n};\n\nexport default RestaurantSelect;\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst userIconPath = (\n <Fragment>\n <path id=\"user-filled\" fill=\"#c5c5c5\" d=\"M32 16A16 16 0 1 0 5.193 27.786l-.015.013.519.438c.034.029.07.052.1.08.276.229.561.446.852.656.094.068.189.136.285.2q.466.321.955.61c.071.042.143.083.214.123.357.2.721.394 1.094.57l.083.037a15.856 15.856 0 0 0 3.87 1.225l.107.019c.421.073.847.131 1.278.17l.158.012c.429.035.863.058 1.3.058s.866-.023 1.293-.057l.162-.012q.641-.058 1.267-.167l.109-.02a15.855 15.855 0 0 0 3.815-1.2l.133-.061q.538-.253 1.054-.545.128-.072.255-.147c.313-.184.621-.377.92-.582.108-.073.213-.151.319-.227.255-.184.506-.374.75-.572.054-.044.112-.081.165-.126l.532-.445-.016-.013A15.959 15.959 0 0 0 32 16zM1.164 16a14.836 14.836 0 1 1 24.675 11.091 4.36 4.36 0 0 0-.52-.312l-4.926-2.463a1.29 1.29 0 0 1-.717-1.16v-1.72c.114-.141.234-.3.359-.475a11.856 11.856 0 0 0 1.522-2.981 2.112 2.112 0 0 0 1.213-1.914V14a2.117 2.117 0 0 0-.516-1.378V9.91a4.692 4.692 0 0 0-1.1-3.412C20.087 5.274 18.351 4.655 16 4.655s-4.087.62-5.159 1.843a4.693 4.693 0 0 0-1.1 3.412v2.715A2.12 2.12 0 0 0 9.229 14v2.063a2.116 2.116 0 0 0 .78 1.641 10.932 10.932 0 0 0 1.8 3.717v1.684a1.3 1.3 0 0 1-.676 1.139l-4.6 2.509a4.2 4.2 0 0 0-.438.277A14.8 14.8 0 0 1 1.164 16z\" />\n </Fragment>\n);\n\nexport default wrapSvgPath(userIconPath, '0 0 32 32');\n","import React from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst pushIconPath = (\n <path id=\"push_notification\" fill=\"#c5c5c5\" d=\"M21.269 15.972l-2.234-2.234V9.931a8.336 8.336 0 0 0-7.448-8.276V0H9.931v1.655a8.4 8.4 0 0 0-7.448 8.276v3.807L.248 15.972a.751.751 0 0 0-.248.58v2.483a.816.816 0 0 0 .745.828h5.876a4.138 4.138 0 0 0 8.276 0h5.793a.816.816 0 0 0 .828-.745v-2.566a.751.751 0 0 0-.249-.58zm-10.51 6.372a2.438 2.438 0 0 1-2.483-2.483h4.966a2.438 2.438 0 0 1-2.483 2.484zm9.1-4.138H1.655v-1.323l2.235-2.235a.751.751 0 0 0 .248-.579V9.931a6.621 6.621 0 1 1 13.241 0v4.138a.751.751 0 0 0 .248.579l2.234 2.234z\"/>\n);\n\nexport default wrapSvgPath(pushIconPath, '0 0 24 24');\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst placeholderPath = (\n <Fragment>\n <g id=\"placeholders\" transform=\"translate(-1.221)\">\n <path\n id=\"Path_611\"\n color=\"#c5c5c5\"\n d=\"M5.468 7.3C3 7.3 1.587 8.439 1.278 10.685a7.141 7.141 0 0 0 .133 2.515 17.213 17.213 0 0 0 4.057 7.924A17.2 17.2 0 0 0 9.525 13.2a7.141 7.141 0 0 0 .133-2.512C9.349 8.439 7.94 7.3 5.468 7.3zm0 6.268a2.584 2.584 0 0 1-2.639-2.519 2.584 2.584 0 0 1 2.639-2.517 2.584 2.584 0 0 1 2.639 2.519 2.584 2.584 0 0 1-2.639 2.518z\"\n data-name=\"Path 611\"\n transform=\"translate(0 -5.122)\"\n />\n <path\n id=\"Path_612\"\n color=\"#c5c5c5\"\n d=\"M34 3.384C33.688 1.138 32.279 0 29.807 0c-2.275 0-3.648.967-4.093 2.871a4.3 4.3 0 0 1 1.242 2.634 7.576 7.576 0 0 1-.139 2.663c-.048.217-.1.426-.156.635a16.6 16.6 0 0 0 3.146 5.017 17.2 17.2 0 0 0 4.057-7.92A7.148 7.148 0 0 0 34 3.384zm-4.19 2.884a2.583 2.583 0 0 1-2.642-2.518 2.642 2.642 0 0 1 5.278 0 2.584 2.584 0 0 1-2.639 2.518z\"\n data-name=\"Path 612\"\n transform=\"translate(-16.833)\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapSvgPath(placeholderPath, ('0 0 18 18'));\n","import React, { useEffect, useState } from 'react';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport { withRouter, RouteComponentProps } from 'react-router-dom';\n\nimport {\n withStyles,\n createStyles,\n WithStyles,\n Theme,\n} from '@material-ui/core/styles';\n\nimport {\n Badge,\n Tooltip,\n Menu,\n MenuItem,\n Avatar,\n IconButton,\n} from '@material-ui/core';\n\nimport { EditOutlined as EditIcon } from '@material-ui/icons';\n// import { SquareEditOutline as EditIcon } from 'mdi-material-ui';\n\nimport { Routers } from '../../../config/constants';\nimport locales from '../../../locales';\nimport { signOut } from '../../../actions/auth/AuthActions';\nimport { openCreateModal, setCurrentRestaurant } from '../../../actions/cabinet/CabinetActions';\nimport { TRestaurant } from '../../../types/ICabinetStore';\nimport { TUser } from '../../../types/IAuthStore';\nimport { IAppStore } from '../../../types/IAppStore';\nimport RestaurantSelect from './RestaurantSelect';\nimport UserIcon from '../Icons/UserIcon';\nimport PushIcon from '../Icons/PushIcon';\nimport PlaceholdersIcon from '../Icons/PlaceholdersIcon';\n// import HeaderHelpIcon from '../Icons/HeaderHelpIcon';\n// import EditIcon from '../Icons/EditIcon';\n\nimport { toggleNotifications } from '../../../actions/notifications/NotificationsActions';\nimport { toggleAppReserves, addAppReserve } from '../../../actions/appReserves/AppReservesActions';\nimport { selectorOpenModal } from '../../../containers/Reservation/selectors';\nimport Reserve from '../../../types/IAppReservesStore';\nimport { Employees } from '../../../entities';\n\nconst styles = (theme: Theme) => createStyles({\n wrap: {\n display: 'flex',\n justifyContent: 'space-between',\n flex: 1,\n },\n ItemWrap: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n width: '100%',\n },\n NameStyle: {\n marginRight: '5px',\n },\n restaurantSelectorIcon: {\n display: 'none',\n [theme.breakpoints.down(600)]: {\n display: 'block',\n },\n },\n headerIcon: {\n fontSize: 18,\n [theme.breakpoints.up(600)]: {\n fontSize: 24,\n },\n },\n headerUserIcon: {\n fontSize: 24,\n [theme.breakpoints.up(600)]: {\n fontSize: 32,\n },\n },\n\n // @todo Проверить стили, размеры\n headerEditIcon: {\n color: '#e7ebee',\n opacity: 0.7,\n\n fontSize: 20,\n [theme.breakpoints.up(600)]: {\n fontSize: 26,\n },\n },\n badge: {\n color: 'white',\n },\n\n '@keyframes shake': {\n '10%, 90%': {\n transform: 'translate(9px, -10px)',\n },\n '20%, 80%': {\n transform: 'translate(11px, -10px)',\n },\n '30%, 50%, 70%': {\n transform: 'translate(7px, -10px)',\n },\n '40%, 60%': {\n transform: 'translate(13px, -10px)',\n },\n },\n\n shake: {\n animation: '$shake 0.82s',\n transform: 'translate(10px, -10px)',\n },\n});\n\ninterface IDispatchToProps {\n openCreateModal: typeof openCreateModal;\n setCurrentRestaurant: typeof setCurrentRestaurant;\n signOut: typeof signOut;\n toggleNotifications: typeof toggleNotifications;\n toggleAppReserves: typeof toggleAppReserves;\n addAppReserve: typeof addAppReserve;\n}\n\ninterface IMapsToPops {\n restaurantList: Array<TRestaurant>;\n currentRestaurant?: TRestaurant;\n user?: TUser;\n notificationsOpen: boolean;\n notificationsCount: number;\n appReservesOpen: boolean;\n appReservesCount: number;\n widgetAppReservesCount: number;\n}\n\ninterface IProps extends\n RouteComponentProps,\n WithStyles<typeof styles>,\n IDispatchToProps,\n IMapsToPops\n{\n isRegistrationCompleted: boolean;\n}\n\ninterface IState {}\n\nfunction Header(props: IProps & IState) {\n const {\n classes,\n user,\n signOut,\n currentRestaurant,\n restaurantList,\n setCurrentRestaurant,\n toggleNotifications,\n notificationsOpen,\n notificationsCount,\n appReservesCount,\n appReservesOpen,\n toggleAppReserves,\n addAppReserve,\n location,\n history,\n widgetAppReservesCount,\n openCreateModal,\n isRegistrationCompleted,\n } = props;\n\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n const hasNotificationsAccess = currentEmployee && (\n Employees.hasAccess(currentEmployee, 'callNotifications:access')\n || Employees.hasAccess(currentEmployee, 'widgetNotifications:access')\n );\n\n const isProfilePage = () => location.pathname.indexOf(Routers.profile) === 0;\n\n // const { anchorEl, shakeReserves, shakeNotifications } = this.state;\n const [anchorEl, setAnchorEl] = useState<null | HTMLAnchorElement>(null);\n const [shakeReserves, setShakeReserves] = useState(false);\n const [shakeNotifications, setShakeNotifications] = useState(false);\n\n const handleMenuClose = () => setAnchorEl(null);\n const handleProfileMenuOpen = (event: any) => setAnchorEl(event.currentTarget);\n\n const handleClickProfile = () => {\n history.push(Routers.profile);\n handleMenuClose();\n };\n\n const scheduleShakeReserves = () => {\n if (widgetAppReservesCount > 0 && !appReservesOpen) {\n setShakeReserves(true);\n setTimeout(() => setShakeReserves(false), 5000);\n }\n };\n\n const scheduleShakeNotifications = () => {\n if (notificationsCount > 0 && !notificationsOpen) {\n setShakeNotifications(true);\n setTimeout(() => setShakeNotifications(false), 5000);\n }\n };\n\n let shakeReservesInterval: number | undefined;\n let shakeNotificationsInterval: number | undefined;\n\n useEffect(() => {\n if (!hasNotificationsAccess) {\n return undefined;\n }\n\n // @todo Зачем тут вложенность запусков?\n window.setTimeout(() => {\n shakeReservesInterval = window.setInterval(() => {\n scheduleShakeReserves();\n }, 10000);\n }, 5000);\n\n shakeNotificationsInterval = window.setInterval(() => {\n scheduleShakeNotifications();\n }, 10000);\n\n return () => {\n clearInterval(shakeReservesInterval);\n clearInterval(shakeNotificationsInterval);\n };\n }, [hasNotificationsAccess]);\n\n const isMenuOpen = Boolean(anchorEl);\n const renderMenu = (\n <Menu\n anchorEl={anchorEl}\n anchorOrigin={{ vertical: 'top', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n open={isMenuOpen}\n onClose={handleMenuClose}\n autoFocus={false}\n >\n {currentEmployee && (\n <MenuItem\n onClick={handleClickProfile}\n disabled={isProfilePage()}\n >\n { locales.t('common.profile') }\n </MenuItem>\n )}\n\n <MenuItem onClick={signOut}>{ locales.t('common.logOut') }</MenuItem>\n </Menu>\n );\n\n const reservesBadgeColor = appReservesCount === 0 ? 'secondary' : 'error';\n const notificationBadgeColor = notificationsCount === 0 ? 'secondary' : 'error';\n\n return (\n <div className={classes.wrap}>\n {restaurantList.length > 0 && (\n <RestaurantSelect\n currentRestaurant={currentRestaurant}\n restaurantList={restaurantList}\n setCurrentRestaurant={setCurrentRestaurant}\n onCreateRestaurant={openCreateModal}\n />\n )}\n <div className={classes.ItemWrap}>\n <IconButton className={classes.restaurantSelectorIcon}>\n <PlaceholdersIcon className={classes.headerIcon} />\n </IconButton>\n\n {/*\n <IconButton>\n <HeaderHelpIcon className={classes.headerIcon} />\n </IconButton>\n */}\n\n {isRegistrationCompleted && currentEmployee && Employees.hasAccess(currentEmployee, 'reserves:access') && (\n <Tooltip title={locales.t('common.reserveQueue.appBarTooltip')}>\n <span>\n <IconButton\n // disabled={appReservesCount === 0}\n onClick={() => {\n if (appReservesCount === 0) {\n addAppReserve(new Reserve('APP'));\n } else {\n toggleAppReserves();\n }\n }}\n >\n <Badge\n badgeContent={appReservesCount}\n color={appReservesCount > 0 && appReservesOpen ? 'primary' : reservesBadgeColor}\n classes={{\n colorError: classes.badge,\n badge: (shakeReserves && classes.shake) || undefined,\n }}\n // showZero\n >\n <EditIcon className={classes.headerEditIcon} />\n </Badge>\n </IconButton>\n </span>\n </Tooltip>\n )}\n\n {isRegistrationCompleted && hasNotificationsAccess && (\n <IconButton\n disabled={notificationsCount === 0}\n onClick={() => toggleNotifications()}\n >\n <Badge\n badgeContent={notificationsCount}\n color={\n notificationsCount > 0 && notificationsOpen ? 'primary' : notificationBadgeColor\n }\n classes={{\n colorError: classes.badge,\n badge: (shakeNotifications && classes.shake) || undefined,\n }}\n // showZero\n >\n <PushIcon className={classes.headerIcon} />\n </Badge>\n </IconButton>\n )}\n\n <IconButton onClick={handleProfileMenuOpen}>\n {user && user.imageUrl\n ? <Avatar className={classes.headerUserIcon} />\n : <UserIcon className={classes.headerUserIcon} />}\n </IconButton>\n </div>\n { renderMenu }\n </div>\n );\n}\n\nconst mapStateToProps = (state: IAppStore): IMapsToPops => {\n const reserves = state.appReserves.items || [];\n\n return {\n restaurantList: state.cabinet.restaurantList,\n currentRestaurant: state.cabinet.currentRestaurant,\n user: state.auth.user,\n\n notificationsOpen: state.notifications.open,\n notificationsCount: state.notifications.items.length,\n\n appReservesOpen: !!selectorOpenModal(state),\n appReservesCount: reserves.length || 0,\n widgetAppReservesCount: reserves.filter((item: Reserve) => item.type === 'WIDGET').length || 0,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch): IDispatchToProps => bindActionCreators({\n openCreateModal,\n setCurrentRestaurant,\n signOut,\n toggleNotifications,\n toggleAppReserves,\n addAppReserve,\n}, dispatch);\n\nexport default withStyles(styles)(\n withRouter(\n connect(mapStateToProps, mapDispatchToProps)(\n Header,\n ),\n ),\n);\n","import React from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst homeIconPath = (\n <path id=\"home\" fill=\"#323232\" d=\"M14.56.21a.849.849 0 0 0-1.12 0L0 10.663l1.12 1.493L2.8 10.85v11.573a1.872 1.872 0 0 0 1.867 1.867h18.666a1.872 1.872 0 0 0 1.867-1.867V10.85l1.68 1.307L28 10.663zm1.307 22.213h-3.734v-7.466h3.733zm1.867 0v-7.466a1.872 1.872 0 0 0-1.867-1.867h-3.734a1.872 1.872 0 0 0-1.867 1.867v7.467h-5.6V9.45L14 2.17l9.333 7.28v12.973z\" />\n);\n\nexport default wrapSvgPath(homeIconPath, '0 0 28 24');\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst bookingPath = (\n <Fragment>\n <path id=\"reserv\" fill=\"#323232\" d=\"M14 4h14v2H14zm0 14h14v2H14zm-6-8H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2zM2 2v6h6V2zm6 22H2a2 2 0 0 1-2-2v-6a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2zm-6-8v6h6v-6z\" />\n </Fragment>\n);\n\nexport default wrapWithPath(bookingPath, '0 0 28 24');\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst settingsIconPath = (\n <Fragment>\n <g id=\"settings\" transform=\"translate(0 -.9)\">\n <path\n id=\"Path_700\"\n d=\"M25.342 16.161v-1.65l1.958-1.753a2.046 2.046 0 0 0 .412-2.578l-2.473-4.124a2.127 2.127 0 0 0-1.753-1.031 1.308 1.308 0 0 0-.619.1l-2.475.825c-.412-.309-.928-.516-1.34-.825l-.515-2.575A2.008 2.008 0 0 0 16.475.9h-4.847a2.107 2.107 0 0 0-2.062 1.65l-.618 2.681c-.412.309-.928.516-1.34.825l-2.475-.928c-.206 0-.412-.1-.619 0a2.069 2.069 0 0 0-1.856 1.031L.286 10.283A2.046 2.046 0 0 0 .7 12.861l1.959 1.753v1.65L.7 18.017a2 2 0 0 0-.412 2.578l2.475 4.124a2.127 2.127 0 0 0 1.751 1.031 1.308 1.308 0 0 0 .619-.1l2.475-.928c.412.309.928.516 1.34.825l.516 2.578a2.008 2.008 0 0 0 2.062 1.65h4.949a2.107 2.107 0 0 0 2.062-1.65l.516-2.578a5.846 5.846 0 0 0 1.34-.825l2.475.825a1.308 1.308 0 0 0 .619.1 2 2 0 0 0 1.753-1.031l2.372-4.124a2.046 2.046 0 0 0-.412-2.578zm-1.856 7.527L19.98 22.45a9.472 9.472 0 0 1-2.78 1.65l-.825 3.712h-4.85L10.8 24.2a9.473 9.473 0 0 1-2.784-1.65l-3.502 1.138-2.475-4.125 2.784-2.475a8.335 8.335 0 0 1 0-3.2l-2.784-2.573L4.514 7.19 8.02 8.427a9.473 9.473 0 0 1 2.78-1.649l.722-3.712h4.846l.722 3.712a9.472 9.472 0 0 1 2.784 1.65l3.612-1.238 2.475 4.124-2.784 2.475a8.335 8.335 0 0 1 0 3.2l2.784 2.578z\"\n className=\"cls-1\"\n data-name=\"Path 700\"\n />\n <path\n id=\"Path_701\"\n d=\"M13.578 21a6 6 0 1 1 6-6 5.933 5.933 0 0 1-5.9 6zm0-10a3.906 3.906 0 0 0-4 3.8v.2a3.906 3.906 0 0 0 3.8 4h.2a3.906 3.906 0 0 0 4-3.8V15a3.906 3.906 0 0 0-3.8-4z\"\n className=\"cls-1\"\n data-name=\"Path 701\"\n transform=\"translate(.422 .441)\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapSvgPath(settingsIconPath, '0 0 28 28.871');\n","import React, { Fragment, MouseEvent } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport classNames from 'classnames';\n\nimport {\n withStyles,\n WithStyles,\n createStyles,\n Theme,\n} from '@material-ui/core/styles';\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport Typography from '@material-ui/core/Typography';\nimport IconButton from '@material-ui/core/IconButton';\nimport ExpandLess from '@material-ui/icons/ExpandLess';\nimport ExpandMore from '@material-ui/icons/ExpandMore';\n\nconst styles = (theme: Theme) => createStyles({\n item: {\n height: 46,\n padding: '0 6px',\n margin: '8px 0',\n borderRadius: 4,\n '&:click': {\n backgroundColor: theme.palette.primary.main,\n },\n },\n active: {\n backgroundColor: 'rgb(106, 233, 197, 0.3)',\n '&:focus': {\n backgroundColor: 'rgb(106, 233, 197, 0.3)',\n },\n },\n text: {\n color: '#323232',\n },\n subMenuItem: {\n display: 'flex',\n alignItems: 'center',\n padding: '0 6px',\n margin: '0 0 8px 0',\n borderRadius: 4,\n height: 48,\n },\n subMenuText: {\n paddingLeft: 50,\n fontSize: 14,\n },\n wrapList: {\n display: 'flex',\n flexDirection: 'column',\n paddingLeft: 0,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n text: string;\n icon: React.ReactElement;\n route: string;\n pathname: string;\n subMenu?: Array<{ name: string; route: string; }>;\n showSubMenu?: boolean;\n checkIsRestaurantItem?: (pathname: string) => void;\n handleSwitchSubMenu?: (event: MouseEvent<HTMLButtonElement>) => void;\n handleSwitchDrawerClose?: () => void;\n disabled?: boolean;\n}\n\nconst SideBarItem: React.FC<IProps> = ({\n classes,\n text,\n icon,\n route,\n pathname,\n subMenu,\n showSubMenu,\n checkIsRestaurantItem,\n handleSwitchSubMenu,\n handleSwitchDrawerClose,\n disabled,\n}) => {\n const isRestaurantItem = checkIsRestaurantItem && checkIsRestaurantItem(pathname);\n\n const subMenuList = showSubMenu && (\n <Collapse\n className={classes.wrapList}\n in={showSubMenu}\n timeout=\"auto\"\n unmountOnExit\n >\n <List\n // @ts-ignore\n component=\"div\"\n disablePadding\n >\n {subMenu && subMenu.map(element => (\n <ListItem\n disabled={disabled}\n className={classNames(classes.subMenuItem, {\n [classes.active]: element.route === pathname,\n })}\n onClick={handleSwitchDrawerClose}\n // @ts-ignore\n component={NavLink}\n to={element.route}\n key={element.name}\n button\n >\n <ListItemText\n primary={(\n <Typography\n className={classNames(classes.text, classes.subMenuText)}\n >\n {element.name}\n </Typography>\n )}\n />\n </ListItem>\n ))}\n </List>\n </Collapse>\n );\n\n return (\n <Fragment>\n <ListItem\n disabled={disabled}\n className={classNames(classes.item, {\n [classes.active]: route === pathname || isRestaurantItem,\n })}\n // @ts-ignore\n component={NavLink}\n onClick={handleSwitchDrawerClose}\n to={route}\n button\n >\n <ListItemIcon style={{ minWidth: 48 }}>\n { icon }\n </ListItemIcon>\n <ListItemText primary={(\n <Typography\n variant=\"body1\"\n className={classes.text}\n >\n { text }\n </Typography>\n )}\n />\n\n {subMenu && (\n <IconButton\n className={classes.text}\n onClick={handleSwitchSubMenu}\n >\n {showSubMenu ? <ExpandLess /> : <ExpandMore />}\n </IconButton>\n )}\n </ListItem>\n {subMenuList}\n <Divider />\n </Fragment>\n );\n};\n\nexport default withStyles(styles)(SideBarItem);\n","import React, { Fragment } from 'react';\nimport wrapSvgPath from './wrapSvgPath';\n\nconst settingsIconPath = (\n <Fragment>\n <path id=\"statistic\" fill=\"#323232\" fillRule=\"evenodd\" d=\"M20.677 1.077A1.077 1.077 0 0 1 21.754 0h5.169A1.077 1.077 0 0 1 28 1.077v25.846A1.077 1.077 0 0 1 26.923 28h-5.169a1.077 1.077 0 0 1-1.077-1.077zm2.154 1.077v23.692h3.015V2.154zm-12.493 9.261a1.077 1.077 0 0 1 1.077-1.077h5.169a1.077 1.077 0 0 1 1.077 1.077v15.508A1.077 1.077 0 0 1 16.585 28h-5.17a1.077 1.077 0 0 1-1.077-1.077zm2.154 1.077v13.354h3.015V12.492zM0 21.754a1.077 1.077 0 0 1 1.077-1.077h5.169a1.077 1.077 0 0 1 1.077 1.077v5.169A1.077 1.077 0 0 1 6.246 28H1.077A1.077 1.077 0 0 1 0 26.923zm2.154 1.077v3.015h3.015v-3.015z\"/>\n </Fragment>\n);\n\nexport default wrapSvgPath(settingsIconPath, '0 0 28 28');\n","import React, { MouseEvent, useState, useCallback } from 'react';\n\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core/styles';\nimport List from '@material-ui/core/List';\nimport Button from '@material-ui/core/Button';\n\nimport locales from '../../locales';\nimport { Routers } from '../../config/constants';\nimport HomeIcon from '../Common/Icons/HomeIcon';\nimport BookingIcon from '../Common/Icons/BookingIcon';\nimport CardIcon from '../Common/Icons/SettingsIcon';\nimport SideBarItem from './SideBarItem';\nimport StatisticIcon from '../Common/Icons/StatisticIcon';\nimport { Employees } from '../../entities';\n\nconst styles = createStyles({\n menu: {\n padding: '0px 18px',\n display: 'flex',\n flexDirection: 'column',\n overflow: 'hidden',\n height: '100%',\n color: '#323232',\n },\n menuHeader: {\n paddingTop: '22px',\n paddingBottom: '15px',\n marginBottom: '10px',\n },\n menuIcon: {\n fontSize: 32,\n color: '#323232',\n },\n newReserveWrap: {\n marginTop: 24,\n width: '100%',\n height: 52,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n pathname: string;\n handleSwitchDrawerClose: () => void;\n isRegistrationCompleted: boolean;\n handleOpenReserveCreateModal?: () => void;\n}\n\ninterface IState {\n showSubMenu: boolean;\n}\n\n/** @description Компонент сайдбара */\nconst SideBar: React.FC<IProps> = ({\n classes,\n pathname,\n handleSwitchDrawerClose,\n handleOpenReserveCreateModal,\n isRegistrationCompleted,\n}) => {\n /** @description Стейт видимости сайдбара */\n const [state, setState] = useState<IState>({ showSubMenu: false });\n\n /**\n * @description Функция проверки адреса подменю на принадлежность разделу \"Ресторан\"\n * @param pathname\n * @returns {boolean}\n */\n const checkIsRestaurantItem = useCallback((pathname: string) => {\n const restaurantSubMenuRouters = {\n [Routers.reservesSystem]: 'card',\n [Routers.restaurantScheme]: 'card',\n [Routers.cardMenu]: 'card',\n [Routers.cardAction]: 'card',\n [Routers.cardSettings]: 'card',\n [Routers.employees]: 'card',\n };\n\n return restaurantSubMenuRouters[pathname] === 'card';\n }, []);\n\n /**\n * @description Ручка для открытия/закрытия подменю\n */\n const handleSwitchSubMenu = useCallback((event: MouseEvent<HTMLButtonElement>) => {\n const { showSubMenu } = state;\n\n event.stopPropagation();\n event.preventDefault();\n setState({ showSubMenu: !showSubMenu });\n }, [state]);\n\n const { data: e } = Employees.useCurrentEmployee();\n const settingItems: Array<{name: string, route: string}> = [];\n\n if (e && Employees.hasAccess(e, 'restaurantSettings:access')) {\n settingItems.push({\n name: locales.t('reservesSystem.title'),\n route: Routers.reservesSystem,\n });\n\n settingItems.push({\n name: locales.t('restaurantSchema.title'),\n route: Routers.restaurantScheme,\n });\n }\n\n if (e && Employees.hasAccess(e, 'employees:access')) {\n settingItems.push({\n name: locales.t('employees.title'),\n route: Routers.employees,\n });\n }\n\n // settingItems.push({\n // name: locales.t('common.profile'),\n // route: Routers.profile,\n // });\n\n return (\n <List className={classes.menu}>\n {(!isRegistrationCompleted || (e && Employees.hasAccess(e, 'stats:access'))) && (\n <SideBarItem\n route={Routers.home}\n pathname={pathname}\n handleSwitchDrawerClose={handleSwitchDrawerClose}\n text={locales.t('sideBar.home')}\n icon={<HomeIcon className={classes.menuIcon} />}\n />\n )}\n\n {(!isRegistrationCompleted || (e && Employees.hasAccess(e, 'reserves:access'))) && (\n <SideBarItem\n disabled={!isRegistrationCompleted}\n route={Routers.booking}\n pathname={pathname}\n handleSwitchDrawerClose={handleSwitchDrawerClose}\n text={locales.t('sideBar.booking')}\n icon={<BookingIcon className={classes.menuIcon} />}\n />\n )}\n\n {(!isRegistrationCompleted || (e && Employees.hasAccess(e, 'stats:access'))) && (\n <SideBarItem\n disabled={!isRegistrationCompleted}\n route={Routers.statistics}\n pathname={pathname}\n handleSwitchDrawerClose={handleSwitchDrawerClose}\n text={locales.t('statistics.title')}\n icon={<StatisticIcon className={classes.menuIcon} />}\n />\n )}\n\n {(!isRegistrationCompleted || settingItems.length > 0) && (\n <SideBarItem\n // Пусть пункт всегда будет доступен, чтобы можно было удалить ресторан, даже\n // если подключение еще было не полностью закончено\n // disabled={!isRegistrationCompleted}\n // route={Routers.reservesSystem}\n disabled={!e}\n route={settingItems.length > 0 ? settingItems[0].route : Routers.settings}\n pathname={pathname}\n showSubMenu={!!e && state.showSubMenu}\n handleSwitchSubMenu={handleSwitchSubMenu}\n handleSwitchDrawerClose={handleSwitchDrawerClose}\n checkIsRestaurantItem={checkIsRestaurantItem}\n text={locales.t('sideBar.settings')}\n icon={<CardIcon className={classes.menuIcon} />}\n subMenu={e ? settingItems : undefined}\n />\n )}\n\n {(!isRegistrationCompleted || (e && Employees.hasAccess(e, 'reserves:access')))\n && handleOpenReserveCreateModal && (\n <Button\n disabled={!isRegistrationCompleted}\n className={classes.newReserveWrap}\n variant=\"contained\"\n color=\"primary\"\n onClick={handleOpenReserveCreateModal}\n >\n { locales.t('sideBar.newReserve') }\n </Button>\n )}\n </List>\n );\n};\n\nexport default withStyles(styles)(SideBar);\n","import React, { Fragment, useState, useCallback } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport classNames from 'classnames';\n\nimport { withStyles, WithStyles, useTheme } from '@material-ui/core/styles';\nimport { useMediaQuery } from '@material-ui/core';\nimport AppBar from '@material-ui/core/AppBar';\nimport CloseIcon from '@material-ui/icons/Close';\nimport Drawer from '@material-ui/core/Drawer';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuIcon from '@material-ui/icons/Menu';\n\nimport styles from './styles';\nimport Header from '../Header/Header';\nimport SideBar from '../../SideBar/SideBar';\nimport logo from '../../../images/logo.svg';\nimport { Routers } from '../../../config/constants';\nimport { Employees } from '../../../entities';\n\ninterface IProps extends WithStyles<typeof styles> {\n isRegistrationCompleted: boolean;\n pathname: string;\n handleOpenReserveCreateModal?: () => void;\n reservationsIsOpen: boolean;\n}\n\nconst DrawerAndHeaderComp: React.FC<IProps> = ({\n isRegistrationCompleted,\n pathname,\n classes,\n handleOpenReserveCreateModal,\n reservationsIsOpen,\n}) => {\n const [open, changeVisible] = useState(false);\n\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n\n /** @description Ручка для открытия/закрытия главного меню */\n const handleSwitchDrawerOpen = useCallback(() => {\n changeVisible(!open);\n }, [open]);\n\n /** @description Ручка для закрытия главного меню */\n const handleSwitchDrawerClose = useCallback(() => {\n changeVisible(false);\n }, []);\n\n const theme = useTheme();\n const matches = useMediaQuery(theme.breakpoints.up('lg'));\n\n return (\n <Fragment>\n <AppBar\n position=\"fixed\"\n className={classes.appBar}\n >\n <Toolbar style={{ padding: '0 12px 0 16px' }}>\n {currentEmployee && (\n <IconButton\n aria-label=\"Open drawer\"\n onClick={handleSwitchDrawerOpen}\n className={classes.menuButton}\n >\n {\n open\n ? <CloseIcon style={{ fontSize: 32 }} />\n : <MenuIcon style={{ fontSize: 32 }} />\n }\n </IconButton>\n )}\n\n <Header isRegistrationCompleted={isRegistrationCompleted} />\n </Toolbar>\n </AppBar>\n <Drawer\n variant={matches ? 'permanent' : 'temporary'}\n className={classNames({ [classes.drawerOpen]: matches })}\n classes={{ paper: classes.drawerOpen }}\n open={open}\n onClose={handleSwitchDrawerClose}\n >\n { reservationsIsOpen && <div className={classes.isDisabled} /> }\n <div className={classes.toolbar}>\n <NavLink to={Routers.home}>\n <img className={classes.logo} src={logo} alt=\"logo\" />\n </NavLink>\n </div>\n\n <SideBar\n isRegistrationCompleted={isRegistrationCompleted}\n pathname={pathname}\n handleSwitchDrawerClose={handleSwitchDrawerClose}\n handleOpenReserveCreateModal={handleOpenReserveCreateModal}\n />\n </Drawer>\n </Fragment>\n );\n};\n\nexport default withStyles(styles, { withTheme: true })(DrawerAndHeaderComp);\n","import { Component } from 'react';\nimport { bindActionCreators } from 'redux';\nimport { connect } from 'react-redux';\nimport { withSnackbar } from 'notistack';\nimport { removeSnackbar } from '../../../actions/snackbars/SnackBarsActions';\n\nclass Notifier extends Component {\n displayed = [];\n\n shouldComponentUpdate({ notifications: newSnacks = [] }) {\n const { notifications: currentSnacks } = this.props;\n let notExists = false;\n for (let i = 0; i < newSnacks.length; i += 1) {\n if (notExists) {\n break;\n }\n\n notExists = notExists || !currentSnacks.filter(({ key }) => newSnacks[i].key === key).length;\n }\n return notExists;\n }\n\n componentDidUpdate() {\n const { notifications = [], enqueueSnackbar, removeSnackbar } = this.props;\n\n notifications.forEach((notification) => {\n // Do nothing if snackbar is already displayed\n if (this.displayed.includes(notification.key)) return;\n // Display snackbar using notistack\n enqueueSnackbar(notification.message, notification.options);\n // Keep track of snackbars that we've displayed\n this.storeDisplayed(notification.key);\n // Dispatch action to remove snackbar from redux store\n removeSnackbar(notification.key);\n });\n }\n\n storeDisplayed = (id) => {\n this.displayed = [...this.displayed, id];\n };\n\n render() {\n return null;\n }\n}\n\nconst mapStateToProps = state => ({\n notifications: state.snackbars.notifications,\n});\n\nconst mapDispatchToProps = dispatch => bindActionCreators({ removeSnackbar }, dispatch);\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps,\n)(withSnackbar(Notifier));\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport { confirmEmail, getSession } from '../actions/auth/AuthActions';\n\nconst NotFoundPage = () => (\n <div style={{\n display: 'flex', height: '100vh', alignItems: 'center', justifyContent: 'center',\n }}\n >\n <h1>404 - Страница не найдена</h1>\n </div>\n);\n\nexport default connect(null, { getSession, confirmEmail })(NotFoundPage);\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Countdown from 'react-countdown-now';\nimport { primaryColor } from '../theme';\n\ntype IProps = {\n onReconnect: () => void\n}\n\n/**\n * @description Simple wrapper around Countdown, remove delay before initial call\n */\nconst CountdownWrapper: React.FC<IProps> = ({\n onReconnect,\n}) => {\n const [isInit, setInit] = useState<boolean>(true);\n const onComplete = useCallback(() => {\n onReconnect();\n setInit(false);\n }, []);\n useEffect(() => {\n if (isInit) onComplete();\n }, []);\n\n return (\n <Countdown\n date={Date.now() + (isInit ? 1 : 5000)}\n renderer={(props:any) => (<span style={{ color: primaryColor }}>{ `${props.seconds}c` }</span>)}\n onComplete={onComplete}\n />\n );\n};\n\nexport default CountdownWrapper;\n","import React, { PureComponent } from 'react';\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport CircularProgress from '@material-ui/core/CircularProgress';\n\nimport CountdownWrapper from '../../components/CountdownWrapper';\n\nimport { IProps } from './ISocketErrorScreen';\nimport locales from '../../locales';\n\nclass SocketErrorScreen extends PureComponent<IProps, {}> {\n socketReconnect = () => {\n const { socketReconnect, socketIsReconnect, socketIsConnect } = this.props;\n if (!socketIsReconnect && !socketIsConnect) socketReconnect();\n }\n\n render() {\n const { socketIsConnect, socketIsReconnect } = this.props;\n\n const msg = !socketIsReconnect ? (\n <DialogContentText>\n { locales.t('common.errors.websocket.badConnection') }\n <CountdownWrapper\n onReconnect={this.socketReconnect}\n />\n </DialogContentText>\n ) : (\n <CircularProgress />\n );\n\n return (\n <Dialog\n fullWidth\n maxWidth=\"sm\"\n open={socketIsConnect === false}\n >\n <DialogTitle style={{ textAlign: 'center', padding: '24px 0 0 0' }}>\n {\n socketIsReconnect\n ? locales.t('common.errors.websocket.reconnect')\n : locales.t('common.errors.websocket.title')\n }\n </DialogTitle>\n <DialogContent style={{ textAlign: 'center' }}>\n { msg }\n </DialogContent>\n <DialogActions />\n </Dialog>\n );\n }\n}\n\nexport default SocketErrorScreen;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport SocketErrorScreen from './SocketErrorScreen';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IDispatchProps, IStateProps } from './ISocketErrorScreen';\nimport { IAppActions } from '../../types/IAppActions';\nimport { socketReconnect } from '../../actions/webSocketService/WebSocketActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n return {\n socketIsConnect: state.websocket.socketIsConnect,\n socketIsReconnect: state.websocket.socketIsReconnect,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n socketReconnect,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SocketErrorScreen);\n","import React from 'react';\nimport {\n withStyles,\n createStyles,\n WithStyles,\n Theme,\n} from '@material-ui/core/styles';\nimport Typography from '@material-ui/core/Typography';\nimport classNames from 'classnames';\n\nimport { ITable } from '../../../../types/IRestaurantTablesStore';\nimport { parseTableHall } from '../../../../helpers/bookingHelpers';\n\nconst styles = (theme: Theme) => createStyles({\n wrap: {\n display: 'flex',\n height: 85,\n flex: 1,\n borderRadius: 10,\n border: '1px solid rgba(0, 0, 0, 0.54)',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n cursor: 'pointer',\n backgroundColor: '#ffffff',\n },\n numberWrap: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n textAlign: 'center',\n },\n number: {\n margin: theme.spacing(),\n },\n marker: {\n backgroundColor: theme.palette.primary.main,\n width: 25,\n height: 25,\n position: 'absolute',\n borderRadius: 60,\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex',\n color: 'white',\n top: -10,\n right: -10,\n },\n active: {\n border: '2px solid rgba(0, 0, 0, 0.87)',\n backgroundColor: '#6ae9c5',\n },\n // disabled: {\n // backgroundColor: '#707070',\n // },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n table: ITable;\n handleSelect: (table: ITable) => void;\n active: boolean;\n // disabled: boolean;\n}\n\nfunction RestaurantIcon(props: IProps) {\n const {\n classes,\n handleSelect,\n active,\n table,\n // disabled,\n } = props;\n\n // const onClick = () => !disabled && handleSelect(table);\n const onClick = () => handleSelect(table);\n\n return (\n <div\n onClick={onClick}\n className={classNames(classes.wrap, {\n [classes.active]: active,\n // [classes.disabled]: disabled,\n })}\n >\n <div className={classes.numberWrap}>\n <Typography style={{ fontSize: 12 }}>\n {parseTableHall(table.hall)}\n </Typography>\n <Typography variant=\"h6\">\n {table.number}\n </Typography>\n </div>\n </div>\n );\n}\n\nexport default withStyles(styles)(RestaurantIcon);\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowTopPath = (\n <Fragment>\n <g id=\"left-arrow\" className=\"cls-1\" transform=\"translate(24) rotate(90)\">\n <path\n id=\"Path_464\"\n data-name=\"Path 464\"\n d=\"M11.77,23.782a.782.782,0,0,0,1.1-1.1C9.192,19.117,5.571,15.557,1.888,12c3.683-3.56,7.3-7.121,10.988-10.681.737-.675-.368-1.78-1.1-1.1C7.9,3.955,4.036,7.7.23,11.444a.778.778,0,0,0,0,1.1C4.036,16.293,7.9,20.038,11.77,23.782Z\"\n transform=\"translate(0)\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapWithPath(arrowTopPath, '0 0 24 13.118');\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowBottomPath = (\n <Fragment>\n <g id=\"left-arrow\" className=\"cls-1\" transform=\"translate(-2 -2.441) rotate(-90)\">\n <path\n id=\"Path_464\"\n data-name=\"Path 464\"\n d=\"M11.77,23.782a.782.782,0,0,0,1.1-1.1C9.192,19.117,5.571,15.557,1.888,12c3.683-3.56,7.3-7.121,10.988-10.681.737-.675-.368-1.78-1.1-1.1C7.9,3.955,4.036,7.7.23,11.444a.778.778,0,0,0,0,1.1C4.036,16.293,7.9,20.038,11.77,23.782Z\"\n transform=\"translate(-15.56 2)\"\n />\n </g>\n </Fragment>\n);\n\nexport default wrapWithPath(arrowBottomPath, '0 0 24 13.118');\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\n\nimport RestaurantIcon from './RestaurantIcons';\nimport RestaurantSchema from './RestaurantSchema';\nimport ArrowTop from '../../Common/Icons/ArrowTop';\nimport ArrowBottom from '../../Common/Icons/ArrowBottom';\nimport { ITable } from '../../../types/IRestaurantTablesStore';\nimport { TActiveTables } from '../../../types/IReserveModalStore';\nimport { TSectionAdaptSchema } from '../../../types/IRestaurantTablesSchemaStore';\nimport { ViewID } from '../ReservesDataFields';\nimport locales from '../../../locales';\n\nconst styles = createStyles({\n wrap: {\n padding: 20,\n display: 'flex',\n flex: 1,\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n // height: 'calc(100vh - 226px)',\n height: 'calc(100vh - 203px)',\n },\n arrowMargins: {\n marginBottom: 18,\n marginTop: 20,\n },\n iconsWrap: {\n flex: 1,\n display: 'flex',\n justifyContent: 'flex-start',\n alignContent: 'flex-start',\n flexWrap: 'wrap',\n width: '100%',\n overflowY: 'scroll',\n msOverflowStyle: 'none',\n overflow: '-moz-scrollbars-none',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n pointer: {\n cursor: 'pointer',\n },\n msgWrap: {\n height: '85%',\n width: '100%',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n tables: Array<ITable> | void;\n handleSelectTable: (table: ITable) => void;\n activeTables: TActiveTables;\n isMergeTables: boolean;\n schema: TSectionAdaptSchema | void;\n viewId: ViewID;\n isSchemasEnabled: boolean;\n persons: number;\n alreadySelectedTables: Array<number>;\n}\n\nconst RestaurantView: React.FC<IProps> = ({\n classes,\n tables,\n handleSelectTable,\n activeTables,\n isMergeTables,\n schema,\n viewId,\n isSchemasEnabled,\n persons,\n alreadySelectedTables,\n}) => {\n const tableCont = React.createRef<any>();\n const [initialized, onInit] = useState(false);\n\n useEffect(() => {\n const tablesReady = tables && tables.length > 0;\n if (viewId === 'scheme') {\n if (tablesReady && schema && !initialized) {\n onInit(true);\n }\n } else if (tablesReady && !initialized) {\n onInit(true);\n }\n });\n\n const initMessage = (\n <div className={classes.msgWrap}>\n <Typography>\n Укажите кол-во гостей, дату и время,\n </Typography>\n <Typography>\n чтобы увидеть доступные столики\n </Typography>\n </div>\n );\n\n const noFreeTables = (\n <div className={classes.msgWrap}>\n {\n !isMergeTables ? (\n <span>\n <Typography>\n Нет доступных столов, Попробуйте\n </Typography>\n <Typography>\n включить опцию \"Объединить столы\"\n </Typography>\n </span>\n ) : (\n <Typography>\n Нет доступных столов\n </Typography>\n )\n }\n </div>\n );\n\n if (viewId === 'scheme') {\n const disabledSchema = (\n <div className={classes.msgWrap}>\n <Typography>\n { locales.t('restaurantSchema.note.schemasDisabled') }\n </Typography>\n </div>\n );\n if (!isSchemasEnabled && initialized) {\n return (\n <div className={classes.wrap}>\n { disabledSchema }\n </div>\n );\n }\n\n const emptySchema = (\n <div className={classes.msgWrap}>\n <Typography>\n { locales.t('restaurantSchema.note.schemaDontExists') }\n </Typography>\n </div>\n );\n const message = schema ? noFreeTables : emptySchema;\n const tablesSchema = schema && tables && tables.length > 0 ? (\n <RestaurantSchema\n activeTables={activeTables}\n data={schema}\n tables={tables || []}\n handleSelect={handleSelectTable}\n persons={persons}\n customWidthOffset\n // @todo Реализовать на схеме\n // alreadySelectedTables={alreadySelectedTables}\n />\n ) : message;\n\n return (\n <div className={classes.wrap}>\n { tables === undefined ? initMessage : tablesSchema }\n </div>\n );\n }\n\n const scrollToElement = (type: string): void => {\n if (type === 'top') {\n tableCont.current.scrollTop -= 80;\n } else {\n tableCont.current.scrollTop += 80;\n }\n };\n\n const tablesGrid = (\n tables && tables.length > 0 ? (\n <Grid container spacing={3} alignItems=\"stretch\">\n {tables.map(\n table => (\n <Grid item xs={6} sm={3} xl={2} key={table.id}>\n <RestaurantIcon\n table={table}\n handleSelect={handleSelectTable}\n active={!!activeTables[table.id]}\n // Локальная блокировка отключена, так как текущая реализация\n // не покрывает 100% случаев. Не удаляем, так как планируем\n // вернуться к этому позже\n // disabled={alreadySelectedTables.indexOf(table.id) !== -1}\n />\n </Grid>\n ),\n )}\n </Grid>\n )\n : noFreeTables\n );\n\n return (\n <div className={classes.wrap}>\n <ArrowTop\n className={classes.pointer}\n onClick={() => scrollToElement('top')}\n />\n <div\n ref={tableCont}\n className={classNames(classes.iconsWrap, classes.arrowMargins)}\n >\n { tables === undefined ? initMessage : tablesGrid }\n </div>\n <ArrowBottom\n className={classes.pointer}\n onClick={() => scrollToElement('down')}\n />\n </div>\n );\n};\n\nexport default withStyles(styles)(RestaurantView);\n","import React, { ReactElement } from 'react';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport TextField from '@material-ui/core/TextField';\n\ninterface IProps {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n staticValue: string;\n label: string;\n readOnly?: boolean;\n type: string;\n endAdornment: any;\n disabled?: boolean;\n errorAsHelperText?: boolean;\n helperText?: React.ReactNode;\n required?: boolean;\n}\n\nconst TextFieldComp: React.FC<IProps> = ({\n input,\n label,\n type,\n staticValue,\n readOnly,\n endAdornment,\n meta: { touched, error },\n disabled,\n errorAsHelperText,\n helperText,\n required,\n}) => {\n const isError = touched && !!error;\n let l: ReactElement = <>{label}</>;\n\n if (isError) {\n if (!errorAsHelperText) l = error;\n } else if (required) {\n l = (\n <>\n {label}\n <sup style={{ color: '#f45858', fontSize: 13 }}>*</sup>\n </>\n );\n }\n\n return (\n <TextField\n fullWidth\n label={l}\n error={isError}\n type={type}\n helperText={errorAsHelperText && isError ? error : helperText}\n {...input}\n disabled={!!staticValue || disabled}\n InputProps={{\n readOnly: !!readOnly,\n endAdornment,\n }}\n />\n );\n};\n\nexport default TextFieldComp;\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport FormControl from '@material-ui/core/FormControl';\nimport TextField from '@material-ui/core/TextField';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport { withStyles, WithStyles, createStyles } from '@material-ui/core';\n\nconst styles = createStyles({\n formTextInput: {\n // fontSize: '0.8125rem'\n },\n wrap: {\n textAlign: 'right',\n },\n textAreaCont: {\n '&& textarea': {\n overflowX: 'hidden',\n },\n },\n});\n\ninterface IProps extends WithStyles<typeof styles>, WrappedFieldProps {\n label: string;\n type: string;\n staticValue: string;\n rows: number;\n disabled: boolean;\n}\n\nconst TextAreaComp: React.FC<IProps> = ({\n input,\n label,\n type,\n staticValue,\n meta: { touched, error },\n rows = 3,\n classes,\n disabled,\n}) => (\n <FormControl fullWidth>\n <TextField\n className={classes.textAreaCont}\n {...input}\n multiline\n rows={rows}\n label={(touched && !!error) ? error : label}\n error={touched && !!error}\n type={type}\n inputProps={{ maxLength: 160 }}\n disabled={!!staticValue || disabled}\n />\n <div className={classes.wrap}>\n <Typography variant=\"caption\">\n {input.value ? input.value.length : 0}\n /160\n </Typography>\n </div>\n </FormControl>\n);\n\nexport default withStyles(styles)(TextAreaComp);\n","import React, { useState, useEffect, ReactElement } from 'react';\n\nimport { createStyles, withStyles, WithStyles } from '@material-ui/core';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport TextField from '@material-ui/core/TextField';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport {\n getCodePhoneNumber,\n getLocale,\n normalizePhone,\n onlyNumbers,\n} from '../../helpers/reserveHelpers';\nimport { phoneCode, getPhoneCodes } from '../../config/constants';\n\nconst styles = createStyles({\n fieldWrap: {\n display: 'flex',\n paddingTop: 12,\n },\n phoneField: {\n marginRight: 8,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n staticValue: string;\n label: string;\n readOnly: boolean;\n type: string;\n endAdornment: any;\n disabled?: boolean;\n countryCode: string;\n locale?: string;\n required?: boolean;\n}\n\n// TODO видимо нужно рефакторить логику переключения локалей\nconst PhoneFieldComp: React.FC<IProps> = ({\n classes,\n input,\n label,\n type,\n staticValue,\n readOnly,\n endAdornment,\n meta: { touched, error },\n disabled,\n locale,\n required,\n}) => {\n const [value, setValue] = useState({\n code: phoneCode.ru.code,\n number: '',\n });\n\n //\n // useEffect(() => {\n // if (input.value !== '') {\n // change({\n // ...getCodePhoneNumber(input.value),\n // });\n // } else {\n // change({\n // number: '',\n // code: locale === 'RU' ? phoneCode.ru.code : phoneCode.ukr.code,\n // });\n // }\n // }, []);\n\n let firstCountryKey: undefined | string;\n\n useEffect(() => {\n if (input.value !== '') {\n setValue({\n ...getCodePhoneNumber(input.value),\n });\n } else {\n let codeValue;\n switch (locale) {\n case 'UA':\n codeValue = phoneCode.ukr.code;\n break;\n case 'EE':\n codeValue = phoneCode.est.code;\n break;\n case 'UZ':\n codeValue = phoneCode.uz.code;\n break;\n case 'AM':\n codeValue = phoneCode.am.code;\n break;\n case 'GE':\n codeValue = phoneCode.ge.code;\n break;\n case 'KZ':\n codeValue = phoneCode.kz.code;\n break;\n case 'AE':\n codeValue = phoneCode.ae.code;\n break;\n case 'US':\n codeValue = phoneCode.us.code;\n break;\n case 'AZ':\n codeValue = phoneCode.az.code;\n break;\n case 'BY':\n codeValue = phoneCode.by.code;\n break;\n case 'KG':\n codeValue = phoneCode.kg.code;\n break;\n case 'TM':\n codeValue = phoneCode.tm.code;\n break;\n default:\n case 'RU':\n codeValue = phoneCode.ru.code;\n break;\n }\n\n setValue({\n number: '',\n code: codeValue,\n });\n\n firstCountryKey = locale && Object.prototype.hasOwnProperty.call(phoneCode, codeValue)\n ? undefined\n : 'ru';\n }\n }, []);\n\n const onChange = (e: any) => {\n const number = normalizePhone(e.target.value, value.code);\n\n input.onChange(`${value.code}${onlyNumbers(number)}`);\n setValue({\n ...value,\n [e.target.name]: number,\n });\n };\n\n const onChangeCode = (e: any) => {\n input.onChange(`${e.target.value}`);\n\n setValue({\n code: e.target.value,\n number: '', // normalizePhone(value.number, e.target.value),\n });\n };\n\n const isError = touched && !!error;\n let l: ReactElement = <>{label}</>;\n\n if (isError) {\n l = error;\n } else if (required) {\n l = (\n <>\n {label}\n <sup style={{ color: '#f45858', fontSize: 13 }}>*</sup>\n </>\n );\n }\n\n return (\n <FormControl error={isError}>\n <InputLabel>{ l }</InputLabel>\n\n <div className={classes.fieldWrap}>\n <Select\n name=\"code\"\n onChange={onChangeCode}\n disableUnderline\n disabled={!!staticValue || disabled}\n className={classes.phoneField}\n value={value.code}\n defaultValue={getLocale(locale)}\n renderValue={(code) => {\n switch (code) {\n case phoneCode.ru.code:\n return phoneCode.ru.firstLabel;\n case phoneCode.ukr.code:\n return phoneCode.ukr.firstLabel;\n case phoneCode.est.code:\n return phoneCode.est.firstLabel;\n case phoneCode.uz.code:\n return phoneCode.uz.firstLabel;\n case phoneCode.am.code:\n return phoneCode.am.firstLabel;\n case phoneCode.ge.code:\n return phoneCode.ge.firstLabel;\n case phoneCode.kz.code:\n return phoneCode.kz.firstLabel;\n case phoneCode.ae.code:\n return phoneCode.ae.firstLabel;\n case phoneCode.us.code:\n return phoneCode.us.firstLabel;\n case phoneCode.az.code:\n return phoneCode.az.firstLabel;\n case phoneCode.by.code:\n return phoneCode.by.firstLabel;\n case phoneCode.kg.code:\n return phoneCode.kg.firstLabel;\n case phoneCode.tm.code:\n return phoneCode.tm.firstLabel;\n default:\n return phoneCode.ru.firstLabel;\n }\n }}\n >\n {getPhoneCodes(firstCountryKey, true).map(phoneCode => (\n <MenuItem value={phoneCode.code} key={phoneCode.key}>\n { phoneCode.secondLabel }\n </MenuItem>\n ))}\n </Select>\n <TextField\n name=\"number\"\n fullWidth\n type={type}\n error={isError}\n onChange={onChange}\n value={value.number}\n disabled={!!staticValue || disabled}\n InputProps={{\n readOnly,\n endAdornment,\n }}\n />\n </div>\n </FormControl>\n );\n};\n\nexport default withStyles(styles)(PhoneFieldComp);\n","import React from 'react';\n\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core';\nimport FormControl from '@material-ui/core/FormControl';\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Typography from '@material-ui/core/Typography';\nimport Circle from '@material-ui/icons/FiberManualRecord';\n\nconst styles = createStyles({\n formWrap: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n marginLeft: '-8px',\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {\n onChange: any;\n label: string;\n value?: boolean;\n isClickableLabel?: boolean;\n disabled?: boolean;\n}\n\nconst CircleCheckBox: React.FC<IProps> = ({\n classes, onChange, label, value, isClickableLabel, disabled,\n}) => {\n const CircleActive = <Circle color=\"secondary\" style={{ fontSize: 36 }} />;\n const CircleInactive = <Circle color=\"primary\" style={{ fontSize: 36 }} />;\n\n if (isClickableLabel) {\n return (\n <div>\n <label className={classes.formWrap}>\n <Checkbox\n style={{ padding: 0 }}\n color=\"primary\"\n checked={!!value}\n onChange={onChange}\n icon={CircleActive}\n checkedIcon={CircleInactive}\n disabled={disabled}\n />\n <div style={{ paddingLeft: 8, cursor: 'pointer' }}>\n <Typography variant=\"body1\">\n { label }\n </Typography>\n </div>\n </label>\n </div>\n );\n }\n\n return (\n <FormControl className={classes.formWrap}>\n <Checkbox\n style={{ padding: 0 }}\n color=\"primary\"\n checked={!!value}\n onChange={onChange}\n icon={CircleActive}\n checkedIcon={CircleInactive}\n disabled={disabled}\n />\n <div style={{ paddingLeft: 8, cursor: 'pointer' }}>\n <Typography variant=\"body1\">\n { label }\n </Typography>\n </div>\n </FormControl>\n );\n};\n\nexport default withStyles(styles)(CircleCheckBox);\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\n\nimport locales from '../../locales';\nimport { errorColor } from '../../theme';\nimport { IPropsSelectOption } from '../../reducers/selectors';\n\ninterface IProps extends WrappedFieldProps {\n disabled: boolean;\n options: Array<IPropsSelectOption>;\n allOptionDisabled: boolean;\n}\n\n/** @description Селектор для выбора зала */\nconst ReserveSectionSelect: React.FC<IProps> = ({\n input,\n meta: { touched, error },\n disabled,\n options,\n allOptionDisabled,\n}) => {\n const isError = touched && error;\n const colorError = isError ? { color: errorColor } : {};\n\n return (\n <FormControl fullWidth error={isError} disabled={disabled}>\n <InputLabel htmlFor=\"section\">{ locales.t('common.reserveModal.sections') }</InputLabel>\n <Select {...input} style={colorError}>\n <MenuItem\n alignItems=\"center\"\n value={0}\n disabled={allOptionDisabled}\n >\n { locales.t('common.reserveModal.allSections') }\n </MenuItem>\n\n {\n options.map((t, i) => (\n <MenuItem\n alignItems=\"center\"\n key={t.value + i.toString()}\n value={t.value}\n >\n {t.label}\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n );\n};\n\nexport default ReserveSectionSelect;\n","import React from 'react';\nimport moment from 'moment';\nimport { WrappedFieldProps } from 'redux-form';\n\nimport { DatePicker } from '@material-ui/pickers';\nimport TextField from '@material-ui/core/TextField';\n\nimport locales from '../../../locales';\nimport { emptyTime } from '../../../config/constants';\nimport { errorColor } from '../../../theme';\n\ninterface IProps extends WrappedFieldProps {}\n\n// TODO Переписать логику отображения значений для \"Сегодня\" и \"Выберете дату\"\nconst ReserveDatePicker: React.FC<IProps> = ({\n input,\n meta: { touched, error },\n}) => {\n const renderDate = input.value !== emptyTime && moment(input.value).isSame(moment(), 'day')\n ? ''\n : input.value;\n\n const isError = touched && error;\n\n const FieldComp = (props: any) => {\n const {\n error, label, value, onClick, inputRef,\n } = props;\n const colorError = error ? { color: errorColor } : {};\n\n return (\n <TextField\n inputRef={inputRef}\n value={value}\n onClick={onClick}\n label={label}\n error={error}\n fullWidth\n InputProps={{\n style: colorError,\n }}\n />\n );\n };\n\n return (\n <DatePicker\n {...input}\n autoOk\n variant=\"inline\"\n value={!input.value || input.value === emptyTime ? null : renderDate}\n label={locales.t('common.reserveModal.selectDate')}\n disablePast\n format=\"DD.MM.YYYY\"\n error={isError}\n invalidLabel={locales.t('common.rangeDatePicker.todayLabel')}\n emptyLabel={locales.t('common.rangeDatePicker.blank')}\n TextFieldComponent={FieldComp}\n />\n );\n};\n\nexport default ReserveDatePicker;\n","import React from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Select from '@material-ui/core/Select';\n\nimport locales from '../../locales';\nimport { errorColor } from '../../theme';\n\ninterface IProps extends WrappedFieldProps {\n maxCapacity: number;\n disabled: boolean;\n}\n\n/** @description Селектор для выбора количества персон */\nconst ReservePersonSelect: React.FC<IProps> = ({\n input,\n meta: { touched, error },\n maxCapacity,\n disabled,\n}) => {\n const isError = touched && error;\n const colorError = isError ? { color: errorColor } : {};\n const capacityList = new Array(maxCapacity)\n .fill('')\n .map((v, i) => i + 1);\n\n return (\n <FormControl fullWidth error={isError} disabled={disabled}>\n <InputLabel htmlFor=\"person\">{ locales.t('common.reserveModal.persons') }</InputLabel>\n <Select\n {...input}\n style={colorError}\n >\n {\n input.value === 0 && (\n <MenuItem value={0}>\n { locales.t('common.reserveModal.emptyPersons') }\n </MenuItem>\n )\n }\n {\n capacityList.map(person => (\n <MenuItem key={person} value={person}>\n { `${person} чел.` }\n </MenuItem>\n ))\n }\n </Select>\n </FormControl>\n );\n};\n\nexport default ReservePersonSelect;\n","import React, { ChangeEvent } from 'react';\nimport { WrappedFieldProps } from 'redux-form';\nimport moment from 'moment';\n\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport { Divider, ListSubheader, FormHelperText } from '@material-ui/core';\n\nimport locales from '../../locales';\nimport { emptyString, emptyTime } from '../../config/constants';\nimport { IWorkTime } from '../../types/IScheduleStore';\nimport { errorColor } from '../../theme';\n\ninterface IProps extends WrappedFieldProps {\n time: Array<IWorkTime>;\n selectedTime: string;\n handleSetTime: (event: ChangeEvent<HTMLSelectElement>) => void;\n}\n\n/** @description Селектор для выбора времени бронирования */\nconst ReserveTimeSelect: React.FC<IProps> = ({\n input,\n meta: { touched, error },\n time,\n}) => {\n const pastTime = moment(input.value) < moment();\n const isError = (touched && error) || pastTime;\n const colorError = isError ? { color: errorColor } : {};\n\n return (\n <FormControl fullWidth error={isError} disabled={!time || time.length === 0}>\n <InputLabel htmlFor=\"time\">\n { locales.t('common.reserveModal.time') }\n </InputLabel>\n <Select\n style={colorError}\n {...input}\n inputProps={{\n name: 'time',\n id: 'time',\n }}\n fullWidth\n >\n {\n input.value === emptyTime && (\n <MenuItem selected value={emptyTime} key={emptyTime}>\n { locales.t('common.reserveModal.emptyTime') }\n </MenuItem>\n )\n }\n {\n time.map((t, i) => t.value === emptyString\n ? (\n <ListSubheader key={t.value}>\n <Divider />\n </ListSubheader>\n )\n : (\n <MenuItem alignItems=\"center\" key={t.value + i.toString()} value={t.value}>\n { t.label }\n </MenuItem>\n ))\n }\n </Select>\n {\n pastTime && (\n <FormHelperText>\n { locales.t('common.reserveModal.formErrors.pastTime') }\n </FormHelperText>\n )\n }\n </FormControl>\n );\n};\n\nexport default ReserveTimeSelect;\n","/**\n * @description: Should parse current redux-form Field.value and return\n * appropriate type. Handle two cases:\n * 1. when user enters correct numeric value, return number\n * 2. when user clears input, return empty string\n */\nexport default function normalizeDurationHours(\n value: number | string,\n): string | number {\n return ((value > 0) ? Number(value) : '');\n}\n","import React, { ChangeEvent, PureComponent } from 'react';\nimport { Field, WrappedFieldInputProps } from 'redux-form';\nimport moment from 'moment';\n\nimport {\n Box,\n createStyles,\n FormControl,\n FormLabel,\n InputAdornment,\n Tab,\n Tabs,\n Theme,\n withStyles,\n WithStyles,\n} from '@material-ui/core';\nimport TextField from '@material-ui/core/TextField/TextField';\n\nimport locales from '../../locales';\nimport TextFieldComp from '../Common/TextFieldComp';\nimport TextAreaComp from '../Common/TextAreaComp';\nimport PhoneFieldComp from './PhoneField';\nimport CircleCheckBox from '../Common/CircleCheckBox';\nimport { reserveModal, reserveSource } from '../../config/constants';\nimport { TEditReserveInfo } from '../../containers/ReservationPageEditCont/IReserveEditPage';\nimport { TConfirmReserveInfo } from '../../containers/ReservationPageConfirmCont/IReserveConfirmPage';\nimport ReserveSectionSelect from './ReserveSectionSelect';\nimport { IPropsSelectOption } from '../../reducers/selectors';\nimport { IWorkTime } from '../../types/IScheduleStore';\n\nimport ReserveDatePicker from '../Common/DatePickers/ReserveDatePicker';\nimport ReservePersonSelect from './ReservePersonSelect';\nimport ReserveTimeSelect from './ReserveTimeSelect';\nimport { TUpdateReserveInfo } from '../../types/IReserveModalStore';\nimport { parseDateForReq } from '../../helpers/dateHelpers';\nimport normalizeDurationHours from '../../helpers/normalizeDurationHours';\n\nconst StyledTab = withStyles({\n root: {\n minWidth: 80,\n fontSize: '16px',\n },\n})(Tab);\n\nconst styles = (theme: Theme) => createStyles({\n wrap: {\n weight: '40%',\n backgroundColor: '#FFFFFF',\n overflow: 'scroll',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n // height: 'calc(100vh - 226px)',\n height: 'calc(100vh - 203px)',\n width: '100%',\n flexShrink: 0,\n maxWidth: 254,\n minWidth: 230,\n [theme.breakpoints.down('md')]: {\n maxWidth: 254,\n minWidth: 230,\n },\n [theme.breakpoints.down('xs')]: {\n maxWidth: '100%',\n paddingBottom: 16,\n height: '100%',\n },\n },\n wrapContent: {\n padding: '0 24px',\n width: '100%',\n },\n tabs: {\n position: 'sticky',\n top: 0,\n backgroundColor: '#FFFFFF',\n boxShadow: '0 2px 6px 0 rgba(0, 0, 0, 0.16)',\n zIndex: 1,\n },\n fieldStyle: {\n paddingTop: 24,\n },\n durationFieldStyle: {\n display: 'flex',\n },\n fieldEdit: {\n paddingTop: 30,\n },\n});\n\nexport type ViewID = 'table' | 'scheme';\n\ninterface IProps extends WithStyles<typeof styles> {\n reserveInfo?: TEditReserveInfo | TConfirmReserveInfo | TUpdateReserveInfo;\n getFreeTables: (field: { value: string | number, type: string }) => void;\n isMergeTables: boolean;\n sections: Array<IPropsSelectOption>;\n handleMergeTables: () => void;\n handleErrorMsg?: (msg: string) => void;\n minutes?: number;\n type?: 'online' | 'new' | 'edit';\n locale?: string;\n viewId: ViewID;\n onViewChange: (table: ViewID) => void;\n\n timeList: Array<IWorkTime>;\n maxCapacity: number;\n\n onReservePropertyChange: (name: string, value: any) => void;\n disabled?: boolean;\n isBanquet: boolean;\n}\n\nclass ReservesDataFields extends PureComponent<IProps> {\n onPropertyChange = (e: ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n const { onReservePropertyChange } = this.props;\n\n onReservePropertyChange(name, value);\n }\n\n render() {\n const {\n disabled,\n reserveInfo,\n classes,\n getFreeTables,\n isMergeTables,\n sections,\n handleMergeTables,\n handleErrorMsg,\n minutes,\n locale,\n viewId,\n onViewChange,\n timeList,\n maxCapacity,\n isBanquet,\n } = this.props;\n\n const firstName = reserveInfo ? reserveInfo.firstName : null;\n // const lastName = reserveInfo ? reserveInfo.lastName : null;\n\n const phone = reserveInfo ? reserveInfo.phone : null;\n const type = (reserveInfo && 'type' in reserveInfo && reserveInfo.type) || reserveModal.NEW;\n const source = (reserveInfo && 'source' in reserveInfo && reserveInfo.source) || null;\n\n const canEdited = reserveInfo\n && source === reserveSource.RESTAURATEUR\n && type !== reserveModal.CONFIRM;\n\n // TODO Костыль на запрет редактирования банкетов\n const disabledEditBanquet = type === 'edit' && isBanquet;\n\n const banquetCheckBox = ({ input }: { input: WrappedFieldInputProps }) => (\n <CircleCheckBox\n label={locales.t('common.reserveModal.banquetCheckBox')}\n value={input.value}\n onChange={isBanquet && handleErrorMsg\n ? () => handleErrorMsg(locales.t('common.editReserveModal.banquetErrorMsg'))\n : input.onChange}\n isClickableLabel\n disabled={disabled || disabledEditBanquet}\n />\n );\n\n const readonly = reserveInfo\n && 'type' in reserveInfo\n && reserveInfo.type === reserveModal.CONFIRM;\n\n return (\n <div className={classes.wrap}>\n <Tabs\n className={classes.tabs}\n value={viewId}\n onChange={(event: any, value) => onViewChange(value)}\n scrollButtons=\"off\"\n indicatorColor=\"primary\"\n textColor=\"primary\"\n variant=\"fullWidth\"\n centered\n >\n <StyledTab\n label={locales.t('common.reserveModal.list')}\n value=\"table\"\n />\n <StyledTab\n label={locales.t('common.reserveModal.schema')}\n value=\"scheme\"\n />\n </Tabs>\n <div className={classes.wrapContent}>\n <div style={{ paddingTop: 16 }}>\n {(readonly && (\n <TextField\n fullWidth\n name=\"persons\"\n disabled\n value={reserveInfo && reserveInfo.persons}\n label={locales.t('common.reserveModal.persons')}\n />\n )) || (\n <Field\n disabled={disabled}\n name=\"persons\"\n component={ReservePersonSelect}\n maxCapacity={maxCapacity}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n const { onReservePropertyChange } = this.props;\n const { name, value } = e.target;\n\n onReservePropertyChange(name, value);\n getFreeTables({ value, type: name });\n }}\n />\n )}\n </div>\n <div className={classes.fieldStyle}>\n {((readonly || (\n reserveInfo\n && 'source' in reserveInfo\n && reserveInfo.source !== reserveSource.RESTAURATEUR\n )) && (\n <TextField\n fullWidth\n name=\"date\"\n value={reserveInfo && moment(reserveInfo.date).format('DD.MM.YYYY')}\n disabled\n label={locales.t('common.reserveModal.selectDate')}\n />\n )) || (\n <Field\n disabled={disabled}\n name=\"date\"\n component={ReserveDatePicker}\n onChange={(date: any) => {\n const { onReservePropertyChange } = this.props;\n const value = parseDateForReq(date);\n\n onReservePropertyChange('date', value);\n getFreeTables({ type: 'date', value });\n }}\n />\n )}\n </div>\n <div className={classes.fieldStyle}>\n {((readonly || (\n reserveInfo\n && 'source' in reserveInfo\n && reserveInfo.source !== reserveSource.RESTAURATEUR\n )) && (\n <TextField\n fullWidth\n name=\"time\"\n disabled\n value={reserveInfo && moment(reserveInfo.date).format('HH:mm')}\n label={locales.t('common.reserveModal.time')}\n />\n )) || (\n <Field\n name=\"time\"\n component={ReserveTimeSelect}\n time={timeList || []}\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n const { onReservePropertyChange } = this.props;\n const { name, value } = e.target;\n\n onReservePropertyChange(name, value);\n getFreeTables({ value, type: name });\n }}\n />\n )}\n </div>\n\n {/* <div style={{ paddingTop: 16 }}> */}\n <div className={classes.fieldStyle}>\n <Field\n disabled={disabled}\n name=\"section\"\n component={ReserveSectionSelect}\n options={sections}\n allOptionDisabled={viewId === 'scheme'}\n onChange={this.onPropertyChange}\n />\n </div>\n\n {/* <div className={classes.fieldStyle}> */}\n {/*\n <div style={{ paddingTop: 14 }}>\n <Field\n name=\"name\"\n component={TextFieldComp}\n staticValue={!canEdited && name}\n label={locales.t('common.reserveModal.name')}\n disabled={disabledEditBanquet}\n />\n </div>\n */}\n\n <Box mt={3}>\n <Field\n name=\"firstName\"\n component={TextFieldComp}\n staticValue={!canEdited && firstName}\n disabled={disabled || disabledEditBanquet}\n label={locales.t('common.reserveModal.firstName')}\n required\n onChange={this.onPropertyChange}\n />\n {/*\n <Box width=\"50%\" mr={1}>\n <Field\n name=\"firstName\"\n component={TextFieldComp}\n staticValue={!canEdited && firstName}\n disabled={disabledEditBanquet}\n label={locales.t('common.reserveModal.firstName')}\n required\n onChange={this.onPropertyChange}\n />\n </Box>\n <Box width=\"50%\">\n <Field\n name=\"lastName\"\n component={TextFieldComp}\n staticValue={!canEdited && lastName}\n label={locales.t('common.reserveModal.lastName')}\n disabled={disabledEditBanquet}\n onChange={this.onPropertyChange}\n />\n </Box>\n */}\n </Box>\n\n <div className={classes.fieldStyle}>\n <Field\n name=\"phone\"\n component={PhoneFieldComp}\n staticValue={!canEdited && phone}\n label={locales.t('common.reserveModal.phone')}\n locale={locale}\n disabled={disabled || disabledEditBanquet}\n required\n onChange={(value: any) => {\n const { onReservePropertyChange } = this.props;\n onReservePropertyChange('phone', value);\n }}\n />\n </div>\n\n {/* <div className={classes.fieldStyle}> */}\n <Box mt={5}>\n <CircleCheckBox\n label={locales.t('common.reserveModal.tableMerge')}\n // onChange={handleMergeTables}\n\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const { onReservePropertyChange } = this.props;\n const { checked } = e.target;\n\n onReservePropertyChange('isMergeTables', checked);\n\n handleMergeTables();\n }}\n\n value={isMergeTables}\n isClickableLabel\n disabled={disabled || disabledEditBanquet}\n />\n </Box>\n\n <div style={{ paddingTop: 4 }}>\n <Field\n name=\"isBanquet\"\n component={banquetCheckBox}\n disabled={disabled || disabledEditBanquet}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n const { onReservePropertyChange } = this.props;\n const { checked } = e.target;\n\n onReservePropertyChange('isBanquet', checked);\n }}\n />\n </div>\n\n {/* <div className={classes.fieldStyle}> */}\n <Box mt={2}>\n <Field\n name=\"comment\"\n component={TextAreaComp}\n rows={4}\n staticValue={type === reserveModal.CONFIRM}\n multiline\n label={locales.t('common.reserveModal.comment')}\n disabled={disabled || disabledEditBanquet}\n onChange={this.onPropertyChange}\n />\n </Box>\n\n {/*\n <div className={classes.fieldStyle}>\n <FormControl>\n <FormLabel style={{ fontSize: 10, marginBottom: 6 }}>\n {locales.t('common.reserveModal.duration')}\n </FormLabel>\n <div className={classes.durationFieldStyle}>\n <div style={{ marginRight: 12, width: '100%' }}>\n <Field\n name=\"hours\"\n component={TextFieldComp}\n type=\"number\"\n onChange={\n (e: ChangeEvent<HTMLSelectElement>) => getFreeTables({\n value: e.target.value,\n type: e.target.name,\n })\n }\n staticValue={type === reserveModal.CONFIRM}\n normalize={normalizeDurationHours}\n endAdornment={(\n <InputAdornment\n position=\"end\"\n >\n час.\n </InputAdornment>\n )}\n disabled={disabledEditBanquet}\n />\n </div>\n {/~~*\n <Field\n name=\"minutes\"\n component={TextFieldComp}\n type=\"number\"\n onChange={\n (e: ChangeEvent<HTMLSelectElement>) => getFreeTables({ value: e.target.value, type: e.target.name })\n }\n staticValue\n endAdornment={<InputAdornment position=\"end\">мин.</InputAdornment>}\n />\n *~~/}\n <TextField\n fullWidth\n value={minutes || 0}\n type={type}\n disabled\n InputProps={{\n endAdornment: <InputAdornment position=\"end\">мин.</InputAdornment>,\n }}\n />\n </div>\n </FormControl>\n </div>\n */}\n\n <Box mt={2} mb={4}>\n <FormControl>\n <FormLabel style={{ fontSize: 10 }}>\n {locales.t('common.reserveModal.duration')}\n </FormLabel>\n <Box display=\"flex\">\n <Box width=\"50%\" mr={1}>\n <Field\n name=\"hours\"\n component={TextFieldComp}\n type=\"number\"\n onChange={(e: ChangeEvent<HTMLSelectElement>) => {\n const { onReservePropertyChange } = this.props;\n const { name, value } = e.target;\n\n onReservePropertyChange(name, value);\n getFreeTables({ value, type: name });\n }}\n staticValue={type === reserveModal.CONFIRM}\n normalize={normalizeDurationHours}\n endAdornment={<InputAdornment position=\"end\">час.</InputAdornment>}\n disabled={disabled || disabledEditBanquet}\n errorAsHelperText\n />\n </Box>\n <Box width=\"50%\" pt={2}>\n <TextField\n fullWidth\n value={minutes || 0}\n type={type}\n disabled\n InputProps={{\n endAdornment: <InputAdornment position=\"end\">мин.</InputAdornment>,\n }}\n onChange={this.onPropertyChange}\n />\n </Box>\n </Box>\n </FormControl>\n </Box>\n </div>\n </div>\n );\n }\n}\n\nexport default withStyles(styles)(ReservesDataFields);\n","import { createStyles, Theme } from '@material-ui/core';\nimport { errorColor, errorHoverColor, errorContrastText } from '../../theme';\n\nconst styles = (theme: Theme) => createStyles({\n actions: {\n display: 'flex',\n height: '84px',\n padding: '16px 23px 16px 24px',\n boxShadow: '0 -3px 6px 0 rgba(0, 0, 0, 0.16)',\n backgroundColor: '#ffffff',\n justifyContent: 'space-between',\n zIndex: 20,\n },\n formWrap: {\n display: 'flex',\n flexDirection: 'column',\n flex: 1,\n height: '100%',\n minHeight: 'calc(100vh - 64px)',\n },\n // header: {\n // display: 'flex',\n // alignItems: 'center',\n // height: 55,\n // padding: '0px 24px 0 6px',\n // boxShadow: '0 3px 6px 0 rgba(0, 0, 0, 0.16)',\n // backgroundColor: '#ffffff',\n // zIndex: 20,\n // [theme.breakpoints.down('xs')]: {\n // alignItems: 'flex-start',\n // flexDirection: 'column',\n // height: '100%',\n // paddingBottom: 24,\n // },\n // },\n\n headerTitleWrap: {\n display: 'flex',\n alignItems: 'center',\n maxWidth: 250,\n minWidth: 234,\n width: '100%',\n },\n headerTitle: {\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n },\n justHeaderTitle: {\n display: 'flex',\n alignItems: 'center',\n paddingLeft: 12,\n minHeight: 48,\n [theme.breakpoints.down('xs')]: {\n paddingLeft: 24,\n },\n },\n\n content: {\n display: 'flex',\n flex: 1,\n [theme.breakpoints.down('xs')]: {\n flexDirection: 'column',\n },\n },\n btnStyle: {\n width: '100%',\n height: 52,\n },\n btnEdit: {\n color: errorContrastText,\n backgroundColor: errorColor,\n '&:hover': {\n backgroundColor: errorHoverColor,\n },\n },\n banquetError: {\n width: '100%',\n height: 52,\n display: 'flex',\n alignItems: 'center',\n textAlign: 'center',\n justifyContent: 'center',\n },\n banquetErrorText: {\n maxWidth: 370,\n fontFamily: 'GolosTextWebMedium',\n },\n});\n\nexport default styles;\n","import React, { useState, useEffect } from 'react';\nimport classNames from 'classnames';\n\nimport {\n // Theme,\n makeStyles,\n Button,\n} from '@material-ui/core';\n\nimport Reserve from '../../../types/IAppReservesStore';\nimport { parsePhoneNumber } from '../../../helpers/reserveHelpers';\n\n// const useStyles = makeStyles((theme: Theme) => ({\nconst useStyles = makeStyles(() => ({\n actionButton: {\n boxShadow: 'none',\n borderRadius: 0,\n },\n buttonBorder: {\n borderRight: '1px solid #e7ebee',\n },\n reserveButton: {\n backgroundColor: '#e7ebee',\n\n '& .MuiButton-label': {\n color: 'rgba(50, 50, 50, 0.5)',\n width: '100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: 'inline-block',\n },\n\n '&:hover .MuiButton-label': {\n color: 'rgba(50, 50, 50, 1)',\n },\n },\n activeReserve: {\n backgroundColor: 'white',\n '& .MuiButton-label': {\n color: 'rgba(50, 50, 50, 1)',\n },\n },\n reserveWarning: {\n backgroundColor: 'rgba(244, 88, 88, 0.2)',\n transition: 'background 3s ease',\n '& .MuiButton-label': {\n transition: 'color 3s ease',\n color: 'rgba(50, 50, 50, 1)',\n },\n },\n reserveWarningOn: {\n backgroundColor: '#e7ebee',\n '& .MuiButton-label': {\n color: 'rgba(50, 50, 50, 0.5)',\n },\n },\n addButton: {\n '& svg': {\n fontSize: 28,\n },\n },\n}));\n\ninterface IProps {\n reserve: Reserve;\n onClick: () => void;\n open: boolean;\n width?: number;\n}\n\n\nconst NavItem: React.FunctionComponent<IProps> = ({\n reserve,\n onClick,\n open,\n width,\n}) => {\n const [params, setParams] = useState({\n attention: false,\n warning: false,\n });\n\n const { attention, warning } = params;\n\n useEffect(() => {\n setParams(prevState => ({\n ...prevState,\n attention: !open && reserve.type === 'WIDGET' && reserve.outerChangeType !== 'CANCELED',\n }));\n }, [open, reserve.type]);\n\n useEffect(() => {\n const interval = setInterval(() => {\n setParams(prevState => ({\n ...prevState,\n warning: prevState.attention,\n }));\n\n setTimeout(() => {\n setParams(prevState => ({\n ...prevState,\n warning: false,\n }));\n }, 3000);\n }, 5000);\n\n return () => clearInterval(interval);\n }, []);\n\n const {\n actionButton,\n buttonBorder,\n reserveButton,\n activeReserve,\n reserveWarning,\n reserveWarningOn,\n } = useStyles();\n\n const cssNames = classNames([\n actionButton,\n buttonBorder,\n reserveButton,\n open && activeReserve,\n attention && reserveWarning,\n attention && warning && reserveWarningOn,\n ]);\n\n const title = [];\n const name = [];\n\n if (reserve.payload) {\n const { firstName, lastName, phone } = reserve.payload;\n\n if (firstName) {\n name.push(firstName);\n }\n\n if (lastName) {\n name.push(lastName);\n }\n\n if (name.length || phone) {\n title.push(name.join(' '));\n title.push((phone && parsePhoneNumber(phone)) || '');\n }\n }\n\n return (\n <Button\n onClick={() => onClick()}\n disabled={open}\n className={cssNames}\n style={width ? { width } : {}}\n >\n {(title && title.join(', ')) || 'Новый резерв'}\n </Button>\n );\n};\n\nexport default NavItem;\n","import React from 'react';\n\nimport {\n // Theme,\n makeStyles,\n Button,\n Box,\n} from '@material-ui/core';\n\nimport { Add, ArrowBack } from '@material-ui/icons';\nimport Reserve, { TAppReserves } from '../../types/IAppReservesStore';\nimport NavItem from './Nav/Item';\nimport { useWindowSize } from '../../helpers/callHelpers';\n\nconst tabWidth = 206;\nconst backButtonWidth = 72;\nconst addButtonWidth = 64;\nconst serviceButtonsWidth = backButtonWidth + addButtonWidth;\n\n// const useStyles = makeStyles((theme: Theme) => ({\nconst useStyles = makeStyles(() => ({\n nav: {\n display: 'flex',\n height: 55,\n boxShadow: '0 3px 6px 0 rgba(0, 0, 0, 0.16)',\n backgroundColor: '#ffffff',\n zIndex: 20,\n\n // [theme.breakpoints.down('xs')]: {\n // alignItems: 'flex-start',\n // flexDirection: 'column',\n // height: '100%',\n // paddingBottom: 24,\n // },\n },\n actionButton: {\n boxShadow: 'none',\n borderRadius: 0,\n },\n buttonBorder: {\n borderRight: '1px solid #e7ebee',\n },\n backButton: {\n width: backButtonWidth,\n },\n reserveButton: {\n width: tabWidth,\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n },\n reserveButtonLong: {\n justifyContent: 'flex-start',\n },\n reserveWarning: {\n backgroundColor: 'rgba(244, 88, 88, 0.2)',\n },\n reserveWarningLabel: {\n color: 'rgba(50, 50, 50, 0.5)',\n },\n addButton: {\n '& svg': {\n fontSize: 28,\n },\n },\n}));\n\ninterface IProps {\n reserves: TAppReserves;\n onBack: () => void;\n onAddReserve: () => void;\n onClickReserve: (reserve: Reserve) => void;\n}\n\n\nconst Nav: React.FunctionComponent<IProps> = ({\n reserves,\n onBack,\n onAddReserve,\n onClickReserve,\n}) => {\n const {\n nav,\n actionButton,\n backButton,\n buttonBorder,\n addButton,\n } = useStyles();\n\n const size = useWindowSize();\n\n let maxWidth: number | undefined;\n let itemWidth: number | undefined;\n\n if (size.width) {\n // Ширина кнопки назад и кнопки добавить\n maxWidth = size.width - serviceButtonsWidth;\n\n // Если открыта боковая панель слева\n if (size.width > 1280) {\n maxWidth -= 270;\n }\n\n itemWidth = Math.min(maxWidth / reserves.length, tabWidth);\n }\n\n return (\n <Box clone display=\"flex\" flexDirection=\"row\">\n <nav className={nav}>\n <Box clone>\n <Button\n className={`${actionButton} ${backButton} ${buttonBorder}`}\n onClick={onBack}\n >\n <ArrowBack />\n </Button>\n </Box>\n\n <Box\n display=\"flex\"\n flexWrap=\"nowrap\"\n style={{ maxWidth: maxWidth || `calc(100vw - ${serviceButtonsWidth}px)` }}\n >\n {reserves.map(\n (reserve: Reserve) => (\n <NavItem\n key={reserve.key}\n reserve={reserve}\n onClick={() => onClickReserve(reserve)}\n open={reserve.open}\n width={itemWidth}\n />\n ),\n )}\n </Box>\n\n <Box clone>\n <Button\n variant=\"contained\"\n color=\"primary\"\n className={`${actionButton} ${addButton}`}\n onClick={() => onAddReserve()}\n >\n <Add />\n </Button>\n </Box>\n </nav>\n </Box>\n );\n};\n\nexport default Nav;\n","import React, { useState } from 'react';\nimport { reduxForm } from 'redux-form';\nimport { compose } from 'recompose';\nimport { Moment } from 'moment';\n\nimport { withStyles, WithStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nimport RestaurantView from './View';\nimport UserFields, { ViewID } from './ReservesDataFields';\nimport styles from './styles';\nimport { ITable } from '../../types/IRestaurantTablesStore';\nimport { IWorkTime } from '../../types/IScheduleStore';\nimport { TEditReserveInfo } from '../../containers/ReservationPageEditCont/IReserveEditPage';\nimport { TConfirmReserveInfo } from '../../containers/ReservationPageConfirmCont/IReserveConfirmPage';\nimport { TActiveTables, TUpdateReserveInfo } from '../../types/IReserveModalStore';\nimport { TSectionAdaptSchema } from '../../types/IRestaurantTablesSchemaStore';\nimport { emptyTime, reserveModal } from '../../config/constants';\nimport locales from '../../locales';\nimport { IPropsSelectOption } from '../../reducers/selectors';\n\nimport Reserve, { IAppReservesStore, TAppReserveOuterChangeType, TNewReserveFields }\n from '../../types/IAppReservesStore';\n\nimport { IAppReserveCloseOptions } from '../../actions/appReserves/IAppReservesActions';\nimport Nav from './Nav';\n\ninterface IProps extends WithStyles<typeof styles> {\n disabled?: boolean;\n form: string;\n outerChangeType?: TAppReserveOuterChangeType;\n\n title: string;\n type?: 'online' | 'new' | 'edit';\n isSchemasEnabled: boolean,\n sections: Array<IPropsSelectOption>;\n persons: number;\n section: number;\n schema: TSectionAdaptSchema | void;\n freeTables: Array<ITable> | void;\n handleCloseDialog: (options?: IAppReserveCloseOptions) => void;\n handleSelectTable: (table: ITable) => void;\n handleSubmit?: (props: any) => void;\n handleReject?: () => void;\n handleMergeTables: () => void;\n handleGetFreeTables: (field?: { value: string | number, type: string }) => void;\n handleErrorMsg?: (msg: string) => void;\n handleViewChange: (sectionId: number) => void;\n activeTables: TActiveTables;\n timeList: Array<IWorkTime>;\n reserveInfo?: TEditReserveInfo | TConfirmReserveInfo | TUpdateReserveInfo;\n reserveBtnText?: string;\n rejectBtnText?: string;\n maxCapacity: number;\n isMergeTables: boolean;\n minutes?: number;\n locale?: string;\n\n appReserves: IAppReservesStore;\n selectedAppReserve?: Reserve;\n addAppReserve: (reserve: Reserve) => void;\n removeAppReserve: (key: string) => void;\n openAppReserve: (key: string) => void;\n closeAppReserve: (key?: string, options?: IAppReserveCloseOptions) => void;\n changeAppReserve: (name: string, value?: any) => void;\n appReserveFormValues?: TNewReserveFields;\n alreadySelectedTables: Array<number>;\n isBanquet: boolean;\n}\n\n// TODO Отказаться от redux-form\nconst ReserveModal: React.FC<IProps> = ({\n activeTables,\n type,\n classes,\n isSchemasEnabled,\n freeTables,\n sections,\n section,\n schema,\n persons,\n handleCloseDialog,\n handleSelectTable,\n handleSubmit,\n handleGetFreeTables,\n handleMergeTables,\n handleErrorMsg,\n handleViewChange,\n timeList,\n reserveInfo,\n handleReject,\n reserveBtnText,\n rejectBtnText,\n maxCapacity,\n isMergeTables,\n minutes,\n locale,\n\n appReserves,\n selectedAppReserve,\n // addAppReserve,\n // openAppReserve,\n closeAppReserve,\n changeAppReserve,\n // appReserveFormValues,\n alreadySelectedTables,\n disabled,\n outerChangeType,\n\n isBanquet,\n}) => {\n const isEdit = reserveInfo && 'type' in reserveInfo && reserveInfo.type === reserveModal.EDIT;\n const isEditStyles = isEdit ? classes.btnEdit : '';\n\n const [viewId, onViewChange] = useState<ViewID>('table');\n React.useEffect(() => {\n if (viewId === 'scheme' && typeof handleViewChange === 'function') {\n // reset Section to first item in list if option \"All sections\" selected\n if (!section && sections && sections.length) {\n handleViewChange(sections[0].value);\n }\n }\n }, [viewId]);\n\n const closeButton = (\n <Button\n style={{ marginLeft: 12 }}\n className={classes.btnStyle}\n variant=\"outlined\"\n onClick={() => handleCloseDialog({\n remove: true,\n openNext: true,\n })}\n >\n { locales.t('common.editReserveModal.close') }\n </Button>\n );\n\n let buttons = (\n <>\n <Button\n className={`${classes.btnStyle} ${isEditStyles}`}\n style={{ marginRight: 12 }}\n variant={isEdit ? 'contained' : 'outlined'}\n onClick={handleReject}\n >\n { rejectBtnText }\n </Button>\n <Button\n style={{ marginLeft: 12 }}\n className={classes.btnStyle}\n variant=\"contained\"\n type=\"submit\"\n color=\"primary\"\n >\n { reserveBtnText }\n </Button>\n </>\n );\n\n if (outerChangeType === 'CANCELED') {\n buttons = (\n <>\n {closeButton}\n <div className={classes.banquetError}>\n <Typography\n variant=\"body2\"\n color=\"error\"\n className={classes.banquetErrorText}\n >\n { locales.t('common.editReserveModal.remoteCancel') }\n </Typography>\n </div>\n </>\n );\n } else if (disabled) {\n buttons = closeButton;\n } else if (isBanquet && type === 'edit') {\n buttons = (\n <>\n <div className={classes.banquetError}>\n <Typography\n variant=\"body2\"\n color=\"error\"\n className={classes.banquetErrorText}\n >\n { locales.t('common.editReserveModal.banquetMsg') }\n </Typography>\n </div>\n {closeButton}\n </>\n );\n }\n\n return (\n <form onSubmit={handleSubmit} className={classes.formWrap}>\n <Nav\n reserves={appReserves ? appReserves.items : []}\n onBack={() => closeAppReserve()}\n onClickReserve={(reserve: Reserve) => {\n if (selectedAppReserve) {\n closeAppReserve(\n selectedAppReserve.key,\n { openNextKey: reserve.key },\n );\n }\n }}\n onAddReserve={() => {\n if (selectedAppReserve) {\n closeAppReserve(\n selectedAppReserve.key,\n { openNewReserve: new Reserve('APP') },\n );\n }\n\n // addAppReserve(new Reserve('APP'));\n }}\n />\n\n <div className={classes.content}>\n <UserFields\n disabled={disabled}\n type={type}\n reserveInfo={reserveInfo}\n locale={locale}\n isMergeTables={isMergeTables}\n getFreeTables={handleGetFreeTables}\n handleMergeTables={handleMergeTables}\n sections={sections}\n viewId={viewId}\n onViewChange={onViewChange}\n handleErrorMsg={handleErrorMsg}\n minutes={minutes}\n timeList={timeList}\n maxCapacity={maxCapacity}\n onReservePropertyChange={(name, value: any) => changeAppReserve(name, value)}\n isBanquet={isBanquet}\n />\n\n <RestaurantView\n activeTables={activeTables}\n isMergeTables={isMergeTables}\n handleSelectTable={handleSelectTable}\n tables={freeTables}\n schema={schema}\n viewId={viewId}\n isSchemasEnabled={isSchemasEnabled}\n persons={isMergeTables ? 0 : persons}\n alreadySelectedTables={alreadySelectedTables}\n />\n </div>\n\n <div className={classes.actions}>{buttons}</div>\n </form>\n );\n};\n\nexport type TReserveFormCurrentData = {\n firstName: string;\n persons: number;\n phone: string;\n name: string;\n date: Moment | typeof emptyTime;\n time: string;\n hours: string | number;\n minutes: string;\n section: number;\n isBanquet: boolean;\n}\n\nconst validate = ({\n firstName,\n phone,\n hours,\n time,\n persons,\n date,\n}: TReserveFormCurrentData) => {\n const errors: any = {};\n\n if (time === emptyTime) errors.time = true;\n if (date === emptyTime) errors.date = true;\n if (persons === 0) errors.persons = true;\n if (!firstName) errors.firstName = locales.t('common.reserveModal.formErrors.nameError');\n if (!phone) errors.phone = locales.t('common.reserveModal.formErrors.phoneError');\n if (!hours) errors.hours = locales.t('common.reserveModal.formErrors.durationError');\n return errors;\n};\n\nexport default compose<any, IProps>(\n withStyles(styles),\n reduxForm({\n validate,\n }),\n)(ReserveModal);\n","/**\n * @description: Convert hours to minutes\n */\nexport default function genDurationFromHours(hours: string | number): number {\n return parseInt(String(hours)) * 60;\n}\n","import React, { Component } from 'react';\nimport moment from 'moment';\n\nimport Reservations from '../../components/Reservations';\nimport {\n getTimeList,\n getSelectedTimeFromByNewDate,\n parseDateForReq,\n} from '../../helpers/dateHelpers';\nimport locales from '../../locales';\nimport { IState, IProps, TCreateReserveFields } from './IReserveCreatePage';\nimport { TCreateReserveInfo } from '../../types/IReserveModalStore';\nimport { validateReserveFields } from '../../helpers/bookingHelpers';\nimport { ITable } from '../../types/IRestaurantTablesStore';\nimport { emptyTime } from '../../config/constants';\nimport { IAppReserveCloseOptions } from '../../actions/appReserves/IAppReservesActions';\nimport genDurationFromHours from '../../helpers/genDurationFromHours';\n\nexport default class ReserveCreatePage extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n timeList: getTimeList(moment(), props.workTime),\n };\n }\n\n componentDidUpdate() {\n const { freeTables } = this.props;\n\n if (!freeTables) {\n window.clearTimeout(this.getTablesTimeout);\n\n this.getTablesTimeout = window.setTimeout(() => {\n this.handleGetFreeTables();\n }, 200);\n }\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.getTablesTimeout);\n }\n\n getTablesTimeout: number | undefined;\n\n /** @description Закрытие модального окна */\n handleCloseDialog = (options?: IAppReserveCloseOptions): void => {\n const { closeAppReserve, selectedAppReserve } = this.props;\n\n if (options && options.remove) {\n // Нажали на кнопку формы «Отмена»: нужно закрыть таб\n closeAppReserve(\n selectedAppReserve && selectedAppReserve.key,\n options,\n );\n } else {\n // Нажали на кнопку «Назад»: таб нужно сохранить,\n // только спрятать форму\n closeAppReserve(undefined, options);\n }\n };\n\n /** @description Выбор стола для резерва */\n handleSelectTable = (activeTable: ITable): void => {\n const { setActiveTable } = this.props;\n setActiveTable(activeTable);\n };\n\n /** @description Обновление списка столов */\n handleGetFreeTables = (field?: {value: any, type: string}): void => {\n const {\n formName,\n currentValue,\n getFreeTables,\n workTime,\n changeCurrentTime,\n isMergeTables,\n changeAppReserve,\n } = this.props;\n\n const { timeList } = this.state;\n\n if (field && field.type === 'date') {\n const newTimeList = getTimeList(field.value, workTime);\n\n if (currentValue.time !== emptyTime) {\n const newTime = getSelectedTimeFromByNewDate(timeList, newTimeList, currentValue.time);\n changeAppReserve('time', newTime);\n changeCurrentTime(formName, newTime);\n }\n\n this.setState({\n timeList: newTimeList,\n });\n }\n\n if (validateReserveFields({\n ...currentValue,\n ...(field ? { [field.type]: [field.value] } : {}),\n })) {\n const newData = {\n // date: currentValue.time,\n date: parseDateForReq(currentValue.date),\n persons: currentValue.persons,\n duration: genDurationFromHours(currentValue.hours),\n };\n\n if (field) {\n switch (field.type) {\n case 'date': {\n const newTimeList = getTimeList(field.value, workTime);\n newData.date = getSelectedTimeFromByNewDate(\n timeList,\n newTimeList,\n currentValue.time,\n );\n break;\n }\n case 'time': {\n newData.date = field.value;\n break;\n }\n case 'persons': {\n newData.persons = field.value;\n break;\n }\n case 'hours': {\n newData.duration = parseInt(field.value) * 60;\n break;\n }\n default:\n break;\n }\n }\n\n if (isMergeTables) {\n newData.persons = 0;\n }\n\n if (newData.duration && newData.date !== emptyTime) {\n getFreeTables(newData.date, newData.persons, newData.duration);\n }\n }\n };\n\n /** @description Отправка запроса на создание новой брони */\n handleSendReq = (reserveInfo: TCreateReserveFields): void => {\n const {\n createReserve,\n activeTables,\n customErrorShackBar,\n closeAppReserve,\n selectedAppReserve,\n } = this.props;\n\n const activeTablesIds = Object.keys(activeTables).map(id => parseInt(id));\n\n if (activeTablesIds.length > 0) {\n const createReserveInfo: TCreateReserveInfo = {\n firstName: reserveInfo.firstName,\n lastName: reserveInfo.lastName,\n comment: reserveInfo.comment,\n phone: reserveInfo.phone,\n duration: parseInt(reserveInfo.hours) * 60,\n persons: reserveInfo.persons,\n date: parseDateForReq(reserveInfo.time),\n tables: activeTablesIds,\n isBanquet: reserveInfo.isBanquet,\n };\n\n createReserve(createReserveInfo);\n\n closeAppReserve(selectedAppReserve && selectedAppReserve.key, {\n remove: true,\n openNext: true,\n // skipModalClosing: true,\n });\n } else {\n customErrorShackBar(locales.t('common.reserveModal.emptyActiveTables'));\n }\n };\n\n /** @description Переключение в режим объеденения столов */\n handleMergeTables = () => {\n const {\n mergeTables,\n isMergeTables,\n currentValue,\n } = this.props;\n\n const newTableType = !isMergeTables;\n\n if (newTableType && validateReserveFields(currentValue)) {\n mergeTables(newTableType, {\n date: currentValue.time,\n persons: 0,\n duration: genDurationFromHours(currentValue.hours),\n });\n } else if (!newTableType && validateReserveFields(currentValue)) {\n mergeTables(newTableType, {\n date: currentValue.time,\n persons: currentValue.persons,\n duration: genDurationFromHours(currentValue.hours),\n });\n }\n };\n\n handleViewChange = (sectionId: number) => {\n const { changeSectionToFirstItem, formName } = this.props;\n\n changeSectionToFirstItem(formName, sectionId);\n };\n\n render() {\n const {\n formName,\n disabled,\n\n modalOpen,\n // reserveInfo,\n initialData,\n freeTables,\n // bookingDuration,\n activeTables,\n maxCapacity,\n isMergeTables,\n isSchemasEnabled,\n sections,\n schema,\n currentValue,\n locale,\n\n selectedAppReserve,\n appReserves,\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n appReserveFormValues,\n alreadySelectedTables,\n } = this.props;\n\n const { timeList } = this.state;\n\n if (!modalOpen) {\n return null;\n }\n\n return (\n <Reservations\n form={formName}\n disabled={disabled}\n locale={locale}\n maxCapacity={maxCapacity}\n\n title={locales.t('common.reserveModal.title')}\n reserveBtnText={locales.t('common.reserveModal.reserve')}\n rejectBtnText={locales.t('common.reject')}\n freeTables={freeTables}\n isSchemasEnabled={isSchemasEnabled}\n sections={sections}\n section={currentValue.section}\n schema={schema}\n persons={currentValue.persons}\n // @ts-ignore\n onSubmit={this.handleSendReq}\n handleCloseDialog={this.handleCloseDialog}\n handleReject={() => {\n this.handleCloseDialog({\n remove: true,\n openNext: true,\n });\n }}\n handleSelectTable={this.handleSelectTable}\n handleGetFreeTables={this.handleGetFreeTables}\n handleMergeTables={this.handleMergeTables}\n handleViewChange={this.handleViewChange}\n isMergeTables={isMergeTables}\n activeTables={activeTables}\n timeList={currentValue && currentValue.date ? timeList : []}\n initialValues={initialData}\n enableReinitialize\n\n selectedAppReserve={selectedAppReserve}\n appReserves={appReserves}\n addAppReserve={addAppReserve}\n removeAppReserve={removeAppReserve}\n openAppReserve={openAppReserve}\n closeAppReserve={closeAppReserve}\n changeAppReserve={changeAppReserve}\n appReserveFormValues={appReserveFormValues}\n alreadySelectedTables={alreadySelectedTables}\n\n isBanquet={!!(selectedAppReserve\n && selectedAppReserve.originPayload\n && selectedAppReserve.originPayload.isBanquet)}\n />\n );\n }\n}\n","import { change } from 'redux-form';\n\n/**\n * @description Экшен для установки зала, используется при переключении на зал\n */\nexport const changeSectionToFirstItem = (formName: string, sectionId: number) => change(formName, 'section', sectionId);\n\nexport const changeCurrentTime = (formName: string, time: string) => change(formName, 'time', time);\n","import { connect } from 'react-redux';\nimport { Dispatch, bindActionCreators } from 'redux';\n\nimport ReserveCreatePage from './ReserveCreatePage';\nimport { StateProps, DispatchProps } from './IReserveCreatePage';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { customErrorShackBar } from '../../actions/snackbars/SnackBarsActions';\nimport { changeCurrentTime, changeSectionToFirstItem } from '../Reservation/actions';\nimport { selectorSectionAvailableOptions } from '../../reducers/selectors';\nimport { getReserveFormName } from '../Reservation/constants';\n\nimport {\n getFreeTables,\n closeReserveCreateModal,\n createReserve,\n setActiveTable,\n mergeTables,\n} from '../../actions/reservationsPage/ReservationsPageActions';\n\nimport {\n selectorFreeTables,\n selectorForm,\n selectorCurrentSectionSchema,\n selectorSelectedAppReserve, selectorAlreadySelectedTables,\n} from '../Reservation/selectors';\n\nimport {\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n} from '../../actions/appReserves/AppReservesActions';\n\n\nconst formName = getReserveFormName('CREATE');\n\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n activeTables,\n createReserveModalInitialData,\n createReserveModalIsOpen,\n } = state.reserveModal;\n\n const payload = createReserveModalInitialData || {};\n\n const { currentRestaurant } = state.cabinet;\n const { bookingDuration, isSchemasEnabled } = currentRestaurant\n ? currentRestaurant.settings\n : { bookingDuration: 2, isSchemasEnabled: false };\n\n return {\n formName,\n disabled: false,\n\n activeTables,\n modalOpen: createReserveModalIsOpen,\n isSchemasEnabled,\n schema: selectorCurrentSectionSchema(state),\n sections: selectorSectionAvailableOptions(state),\n freeTables: selectorFreeTables(state),\n workTime: state.schedule.restaurantWorkTimes,\n maxCapacity: state.reserveModal.maxCapacity,\n isMergeTables: state.reserveModal.isMergeTables,\n\n appReserves: state.appReserves,\n selectedAppReserve: selectorSelectedAppReserve(state),\n alreadySelectedTables: selectorAlreadySelectedTables(state),\n\n currentValue: {\n date: selectorForm(formName)(state, 'date'),\n time: selectorForm(formName)(state, 'time'),\n firstName: selectorForm(formName)(state, 'firstName'),\n phone: selectorForm(formName)(state, 'phone'),\n name: selectorForm(formName)(state, 'name'),\n persons: selectorForm(formName)(state, 'persons'),\n isBanquet: selectorForm(formName)(state, 'isBanquet'),\n hours: selectorForm(formName)(state, 'hours'),\n minutes: selectorForm(formName)(state, 'minutes'),\n section: selectorForm(formName)(state, 'section'),\n },\n\n initialData: {\n persons: payload.persons || 2,\n date: payload.date,\n time: payload.time || payload.date,\n section: payload.section || 0,\n firstName: payload.firstName,\n lastName: payload.lastName,\n phone: payload.phone,\n isBanquet: payload.isBanquet,\n comment: payload.comment,\n hours: payload.hours || Math.ceil(bookingDuration / 60).toString(),\n },\n\n locale: (currentRestaurant && currentRestaurant.address.countryCode) || 'RU',\n bookingDuration,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n closeReserveCreateModal,\n createReserve,\n getFreeTables,\n setActiveTable,\n changeCurrentTime,\n changeSectionToFirstItem,\n mergeTables,\n customErrorShackBar,\n\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReserveCreatePage);\n","import React, { Component } from 'react';\nimport moment from 'moment';\nimport _ from 'lodash';\n\nimport Reservations from '../../components/Reservations';\nimport locales from '../../locales';\nimport { IProps } from './IReserveConfirmPage';\nimport { ITable } from '../../types/IRestaurantTablesStore';\nimport {\n validateConfirmReserveFields,\n} from '../../helpers/bookingHelpers';\nimport { getHoursAndMinutes } from '../../helpers/dateHelpers';\nimport { IAppReserveCloseOptions } from '../../actions/appReserves/IAppReservesActions';\n\n\nclass ReserveConfirmPage extends Component<IProps> {\n /** @description Закрытие модального окна */\n handleCloseDialog = (options?: IAppReserveCloseOptions): void => {\n const { closeAppReserve, selectedAppReserve } = this.props;\n\n closeAppReserve(\n selectedAppReserve && selectedAppReserve.key,\n options,\n );\n };\n\n /** @description Выбор стола для резерва */\n handleSelectTable = (activeTable: ITable): void => {\n const { setActiveTable } = this.props;\n\n setActiveTable(activeTable);\n };\n\n /** @description Отмена резерва */\n handleRejectReserve = (): void => {\n const {\n rejectNewReserve,\n reserveInfo,\n closeAppReserve,\n selectedAppReserve,\n } = this.props;\n\n rejectNewReserve(reserveInfo.id);\n\n closeAppReserve(selectedAppReserve && selectedAppReserve.key, {\n remove: true,\n openNext: true,\n // skipModalClosing: true,\n });\n };\n\n /** @description Отправка запроса на подтверждения новой брони с выбранным столом */\n handleSendReq = (): void => {\n const {\n confirmReserve,\n reserveInfo,\n activeTable,\n customErrorShackBar,\n closeAppReserve,\n selectedAppReserve,\n } = this.props;\n\n if (!_.isEmpty(activeTable)) {\n const updateReserveInfo = {\n tables: Object.keys(activeTable).map(id => parseInt(id)),\n isBanquet: reserveInfo.isBanquet,\n };\n\n confirmReserve(reserveInfo.id, updateReserveInfo);\n\n closeAppReserve(selectedAppReserve && selectedAppReserve.key, {\n remove: true,\n openNext: true,\n // skipModalClosing: true,\n });\n } else {\n customErrorShackBar(locales.t('common.reserveModal.emptyActiveTables'));\n }\n };\n\n /** @description Переключение в режим объеденения столов */\n handleMergeTables = () => {\n const {\n mergeTables,\n isMergeTables,\n reserveInfo,\n } = this.props;\n\n const newTableType = !isMergeTables;\n\n if (newTableType && validateConfirmReserveFields(reserveInfo)) {\n mergeTables(newTableType, {\n date: reserveInfo.date,\n persons: 0,\n duration: reserveInfo.duration,\n });\n } else if (!newTableType && validateConfirmReserveFields(reserveInfo)) {\n mergeTables(newTableType, {\n date: reserveInfo.date,\n persons: reserveInfo.persons,\n duration: reserveInfo.duration,\n });\n }\n };\n\n handleViewChange = (sectionId: number) => {\n const { changeSectionToFirstItem, formName } = this.props;\n\n changeSectionToFirstItem(formName, sectionId);\n };\n\n render() {\n const {\n formName,\n disabled,\n outerChangeType,\n\n modalOpen,\n freeTables,\n reserveInfo,\n activeTable,\n isMergeTables,\n isSchemasEnabled,\n sections,\n schema,\n\n selectedAppReserve,\n appReserves,\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n appReserveFormValues,\n alreadySelectedTables,\n } = this.props;\n\n if (!modalOpen) {\n return null;\n }\n\n const duration = getHoursAndMinutes(reserveInfo.duration);\n\n return (\n <Reservations\n form={formName}\n disabled={disabled}\n outerChangeType={outerChangeType}\n\n type=\"online\"\n reserveInfo={reserveInfo}\n\n title={locales.t('common.newReserveModal.title')}\n reserveBtnText={locales.t('common.newReserveModal.reserve')}\n rejectBtnText={locales.t('common.newReserveModal.reject')}\n freeTables={freeTables}\n isSchemasEnabled={isSchemasEnabled}\n sections={sections}\n section={reserveInfo.section}\n schema={schema}\n persons={reserveInfo.persons}\n // @ts-ignore\n onSubmit={this.handleSendReq}\n handleSelectTable={this.handleSelectTable}\n handleCloseDialog={this.handleCloseDialog}\n handleReject={this.handleRejectReserve}\n handleMergeTables={this.handleMergeTables}\n handleViewChange={this.handleViewChange}\n isMergeTables={isMergeTables}\n activeTables={activeTable}\n initialValues={{\n hours: duration.h,\n minutes: duration.m,\n comment: reserveInfo.comment,\n firstName: reserveInfo.firstName,\n lastName: reserveInfo.lastName,\n phone: reserveInfo.phone,\n time: moment(reserveInfo.date).format('HH:mm'),\n date: moment(reserveInfo.date).format('DD.MM.YYYY'),\n persons: reserveInfo.persons,\n section: reserveInfo.section,\n }}\n enableReinitialize\n\n selectedAppReserve={selectedAppReserve}\n appReserves={appReserves}\n addAppReserve={addAppReserve}\n removeAppReserve={removeAppReserve}\n openAppReserve={openAppReserve}\n closeAppReserve={closeAppReserve}\n changeAppReserve={changeAppReserve}\n appReserveFormValues={appReserveFormValues}\n alreadySelectedTables={alreadySelectedTables}\n\n isBanquet={!!(selectedAppReserve\n && selectedAppReserve.originPayload\n && selectedAppReserve.originPayload.isBanquet)}\n />\n );\n }\n}\n\nexport default ReserveConfirmPage;\n","import moment from 'moment';\nimport { createSelector } from 'reselect';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { getTimeList } from '../../helpers/dateHelpers';\n\n/** @description Получение времени работы ресторана */\nexport const selectorGetTimeList = createSelector([\n (state: IAppStore) => state.schedule.restaurantWorkTimes,\n], workTime => getTimeList(moment(), workTime));\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { formValueSelector } from 'redux-form';\nimport { first } from 'lodash';\n\nimport ReserveConfirmPage from './ReserveConfirmPage';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { editableReserveStates, reserveModal } from '../../config/constants';\nimport { selectorGetTimeList } from './selectors';\nimport { customErrorShackBar } from '../../actions/snackbars/SnackBarsActions';\nimport { selectorSectionAvailableOptions } from '../../reducers/selectors';\nimport { changeSectionToFirstItem } from '../Reservation/actions';\nimport { getReserveFormName } from '../Reservation/constants';\n\nimport {\n getFreeTables,\n closeReserveConfirmModal,\n confirmReserve,\n rejectNewReserve,\n setActiveTable,\n mergeTables,\n} from '../../actions/reservationsPage/ReservationsPageActions';\n\nimport {\n DispatchProps,\n StateProps,\n TConfirmReserveInfo,\n} from './IReserveConfirmPage';\n\nimport {\n selectorFreeTables,\n selectorCurrentSectionSchema,\n selectorSelectedAppReserve,\n selectorAlreadySelectedTables,\n} from '../Reservation/selectors';\n\nimport {\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n} from '../../actions/appReserves/AppReservesActions';\n\n\nconst formName = getReserveFormName('CONFIRM');\nconst selector = formValueSelector(formName);\n\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const { currentReserve } = state.reserveModal;\n const { tables } = currentReserve || {};\n const { currentRestaurant } = state.cabinet;\n const { isSchemasEnabled } = currentRestaurant ? currentRestaurant.settings : { isSchemasEnabled: false };\n\n const reserveInfo: TConfirmReserveInfo = {\n type: reserveModal.CONFIRM,\n id: currentReserve ? currentReserve.id : 0,\n firstName: currentReserve ? currentReserve.firstName : '',\n lastName: currentReserve ? currentReserve.lastName : null,\n phone: currentReserve ? currentReserve.phone : '',\n locale: state.cabinet.currentRestaurant ? state.cabinet.currentRestaurant.address.countryCode : 'RU',\n duration: currentReserve ? currentReserve.duration : 2,\n comment: currentReserve ? currentReserve.comment : '',\n persons: currentReserve ? currentReserve.persons : 2,\n date: currentReserve ? currentReserve.date : '',\n // @todo Не хватает source в тех данных, что приходят об открытых резервах?\n source: currentReserve && currentReserve.source ? currentReserve.source.id : '',\n isBanquet: selector(state, 'isBanquet'),\n section: ((first(tables) || {}).section || {}).id || 0,\n };\n\n let disabled = false;\n\n const appReserve = selectorSelectedAppReserve(state);\n if (appReserve && appReserve.outerChangeType) {\n disabled = true;\n }\n\n // @todo Переделать на использование нового appReserve?\n // @todo Собрать все статусы, при которых нельзя редактировать\n if (\n currentReserve\n && currentReserve.state\n && editableReserveStates.indexOf(currentReserve.state) === -1\n ) {\n disabled = true;\n }\n\n return {\n formName,\n disabled,\n outerChangeType: appReserve && appReserve.outerChangeType,\n\n activeTable: state.reserveModal.activeTables,\n modalOpen: state.reserveModal.confirmReserveModalIsOpen,\n isSchemasEnabled,\n schema: selectorCurrentSectionSchema(state),\n sections: selectorSectionAvailableOptions(state),\n freeTables: selectorFreeTables(state),\n workTime: selectorGetTimeList(state),\n isMergeTables: state.reserveModal.isMergeTables,\n\n appReserves: state.appReserves,\n selectedAppReserve: appReserve,\n alreadySelectedTables: selectorAlreadySelectedTables(state),\n\n reserveInfo,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n closeReserveConfirmModal,\n getFreeTables,\n confirmReserve,\n rejectNewReserve,\n setActiveTable,\n mergeTables,\n customErrorShackBar,\n changeSectionToFirstItem,\n\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReserveConfirmPage);\n","import React from 'react';\n\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport MuiDialogContent from '@material-ui/core/DialogContent';\nimport MuiDialogActions from '@material-ui/core/DialogActions';\nimport Typography from '@material-ui/core/Typography';\n\nimport DialogTitle from '../Common/DialogTitle';\nimport locales from '../../locales';\nimport { errorColor, errorContrastText, errorHoverColor } from '../../theme';\n\nconst DialogContent = withStyles(theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(2),\n minWidth: 415,\n minHeight: 160,\n },\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles(theme => ({\n root: {\n borderTop: `1px solid ${theme.palette.divider}`,\n margin: 0,\n padding: theme.spacing(),\n },\n}))(MuiDialogActions);\n\nconst RejectBtn = withStyles(() => ({\n root: {\n color: errorContrastText,\n backgroundColor: errorColor,\n '&:hover': {\n backgroundColor: errorHoverColor,\n },\n },\n}))(Button);\n\n\ninterface IProps {\n isOpen: boolean;\n handleCloseModal: () => void;\n handleRejectReserve: () => void;\n}\n\nconst DeleteReserveModal: React.FC<IProps> = ({\n isOpen,\n handleCloseModal,\n handleRejectReserve,\n}) => (\n <Dialog\n aria-labelledby=\"customized-dialog-title\"\n open={isOpen}\n >\n <DialogTitle onClose={handleCloseModal}>\n { locales.t('booking.rejectReserve.title') }\n </DialogTitle>\n <DialogContent>\n <Typography gutterBottom>\n { locales.t('booking.rejectReserve.confirm') }\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button\n variant=\"contained\"\n onClick={handleCloseModal}\n color=\"secondary\"\n // style={{ color: 'white', width: 108 }}\n >\n { locales.t('booking.rejectReserve.no') }\n </Button>\n <RejectBtn\n variant=\"contained\"\n onClick={handleRejectReserve}\n >\n { locales.t('booking.rejectReserve.yes') }\n </RejectBtn>\n </DialogActions>\n </Dialog>\n);\n\nexport default DeleteReserveModal;\n","import React, { Component } from 'react';\nimport { Moment } from 'moment';\nimport _ from 'lodash';\n\nimport Reservations from '../../components/Reservations';\nimport locales from '../../locales';\nimport DeleteReserveModal from '../../components/Booking/DeleteReserveModal';\nimport { IProps, IState } from './IReserveEditPage';\nimport { TUpdateReserveInfo } from '../../types/IReserveModalStore';\nimport { ITable } from '../../types/IRestaurantTablesStore';\nimport { parsePhoneNumber } from '../../helpers/reserveHelpers';\nimport { validateReserveFields, compareTables } from '../../helpers/bookingHelpers';\nimport { emptyTime } from '../../config/constants';\nimport { IAppReserveCloseOptions } from '../../actions/appReserves/IAppReservesActions';\n\nimport {\n getSelectedTimeFromByNewDate,\n getTimeList,\n parseDateForReq,\n getHoursAndMinutes,\n} from '../../helpers/dateHelpers';\nimport genDurationFromHours from '../../helpers/genDurationFromHours';\n\nclass ReserveEditPage extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n this.state = {\n rejectModalIsOpen: false,\n timeList: getTimeList(props.reserveInfo.date, props.workTime, true),\n };\n }\n\n componentDidUpdate() {\n const { freeTables } = this.props;\n\n if (!freeTables) {\n window.clearTimeout(this.getTablesTimeout);\n\n this.getTablesTimeout = window.setTimeout(() => {\n this.handleGetFreeTables();\n }, 200);\n }\n }\n\n componentWillUnmount() {\n window.clearTimeout(this.getTablesTimeout);\n }\n\n getTablesTimeout: number | undefined;\n\n /** @description Закрытие модального окна */\n handleCloseDialog = (options?: IAppReserveCloseOptions): void => {\n const { closeAppReserve, selectedAppReserve } = this.props;\n\n closeAppReserve(\n selectedAppReserve && selectedAppReserve.key,\n options,\n );\n };\n\n /** @description Выбор стола для резерва */\n handleSelectTable = (newActiveTable: ITable): void => {\n const { setActiveTable, reserveInfo } = this.props;\n\n if (!reserveInfo.isBanquet) {\n setActiveTable(newActiveTable);\n }\n };\n\n /** @description Обновление списка столов */\n handleGetFreeTables = (field?: {value: any, type: string}): void => {\n const {\n formName,\n currentValue,\n getFreeTables,\n workTime,\n reserveInfo, // Единственное отличие от формы создания. Нужен рефакторинг\n isMergeTables,\n changeCurrentTime,\n changeAppReserve,\n } = this.props;\n\n const { timeList } = this.state;\n\n if (field && field.type === 'date') {\n const newTimeList = getTimeList(field.value, workTime);\n\n if (currentValue.time !== emptyTime) {\n const newTime = getSelectedTimeFromByNewDate(timeList, newTimeList, currentValue.time);\n changeAppReserve('time', newTime);\n changeCurrentTime(formName, newTime);\n }\n\n this.setState({\n timeList: newTimeList,\n });\n }\n\n if (validateReserveFields({\n ...currentValue,\n ...(field ? { [field.type]: [field.value] } : {}),\n })) {\n const newData = {\n date: parseDateForReq(currentValue.date),\n persons: currentValue.persons,\n duration: genDurationFromHours(currentValue.hours),\n };\n\n if (field) {\n switch (field.type) {\n case 'date': {\n const newTimeList = getTimeList(field.value, workTime);\n newData.date = getSelectedTimeFromByNewDate(\n timeList, newTimeList, currentValue.time,\n );\n break;\n }\n case 'time': {\n newData.date = field.value;\n break;\n }\n case 'persons': {\n newData.persons = field.value;\n break;\n }\n case 'hours': {\n newData.duration = parseInt(field.value) * 60;\n break;\n }\n default:\n break;\n }\n }\n\n if (isMergeTables) {\n newData.persons = 0;\n }\n\n // @todo Быстро-фикс. Будет время, нужно разобраться\n // getFreeTables(newData.date, newData.persons, newData.duration, reserveInfo.id);\n if (newData.duration) {\n getFreeTables(newData.date, newData.persons, newData.duration, reserveInfo.id);\n }\n }\n };\n\n /** @description Отправка запроса на редактирование брони */\n handleSendReq = (newReserveInfo: {\n date: Moment;\n time: string;\n persons: number;\n firstName: string;\n lastName: string;\n hours: number;\n minutes: number;\n comment: string;\n phone: string;\n isBanquet: boolean;\n }): void => {\n const {\n updateReserve,\n reserveInfo,\n customErrorShackBar,\n activeTables,\n closeAppReserve,\n selectedAppReserve,\n } = this.props;\n\n const selectedDate = parseDateForReq(newReserveInfo.time);\n const activeTablesIds = Object.keys(activeTables).map(id => parseInt(id));\n const activeTablesByID = activeTablesIds.map(id => activeTables[id]);\n\n const reserveInfoForUpdate: TUpdateReserveInfo = {};\n\n if (reserveInfo.date !== selectedDate) reserveInfoForUpdate.date = selectedDate;\n if (reserveInfo.comment !== newReserveInfo.comment) reserveInfoForUpdate.comment = newReserveInfo.comment;\n if (reserveInfo.duration !== ((newReserveInfo.hours * 60) + newReserveInfo.minutes)) reserveInfoForUpdate.duration = newReserveInfo.hours * 60;\n if (reserveInfo.persons !== newReserveInfo.persons) reserveInfoForUpdate.persons = newReserveInfo.persons;\n\n if (reserveInfo.firstName !== newReserveInfo.firstName) {\n reserveInfoForUpdate.firstName = newReserveInfo.firstName;\n }\n\n if (reserveInfo.lastName !== newReserveInfo.lastName) {\n reserveInfoForUpdate.lastName = newReserveInfo.lastName;\n }\n\n if (parsePhoneNumber(reserveInfo.phone) !== newReserveInfo.phone) reserveInfoForUpdate.phone = newReserveInfo.phone;\n if (!compareTables(activeTablesByID, reserveInfo.tables)) reserveInfoForUpdate.tables = activeTablesIds;\n\n // if (!reserveInfo.isBanquet && newReserveInfo.isBanquet) reserveInfoForUpdate.isBanquet = true;\n reserveInfoForUpdate.isBanquet = newReserveInfo.isBanquet;\n\n if (!_.isEmpty(reserveInfoForUpdate)) {\n if (reserveInfo.persons !== newReserveInfo.persons && activeTablesByID.length === 0) {\n customErrorShackBar(locales.t('common.editReserveModal.needSelectTable'));\n } else {\n updateReserve(reserveInfo.id, reserveInfoForUpdate);\n\n closeAppReserve(selectedAppReserve && selectedAppReserve.key, {\n remove: true,\n openNext: true,\n // skipModalClosing: true,\n });\n }\n } else {\n this.handleCloseDialog({\n remove: true,\n openNext: true,\n });\n }\n };\n\n /** @description Ручка для отмены резерва */\n handleRejectReserve = (): void => {\n const {\n rejectReserve,\n reserveInfo,\n closeAppReserve,\n selectedAppReserve,\n } = this.props;\n\n rejectReserve(reserveInfo.id);\n\n closeAppReserve(selectedAppReserve && selectedAppReserve.key, {\n remove: true,\n openNext: true,\n // skipModalClosing: true,\n });\n };\n\n /** @description Ручка для открытия окна подтверждения отмены резерва */\n handleOpenRejectReserveModal = (): void => {\n this.setState({\n rejectModalIsOpen: true,\n });\n };\n\n /** @description Ручка для закрытия окна подтверждения отмены резерва */\n handleCloseRejectReserveModal = (): void => {\n this.setState({\n rejectModalIsOpen: false,\n });\n };\n\n /** @description Переключение в режим объеденения столов */\n handleMergeTables = () => {\n const {\n mergeTables,\n isMergeTables,\n currentValue,\n reserveInfo,\n } = this.props;\n\n const newTableType = !isMergeTables;\n\n if (newTableType && validateReserveFields(currentValue)) {\n mergeTables(newTableType, {\n date: currentValue.time,\n duration: genDurationFromHours(currentValue.hours),\n persons: 0,\n reserveId: reserveInfo.id,\n });\n } else if (!newTableType && validateReserveFields(currentValue)) {\n mergeTables(newTableType, {\n date: currentValue.time,\n duration: genDurationFromHours(currentValue.hours),\n persons: currentValue.persons,\n reserveId: reserveInfo.id,\n });\n }\n };\n\n handleErrorMsg = (msg: string) => {\n const { customErrorShackBar } = this.props;\n\n customErrorShackBar(msg);\n };\n\n handleViewChange = (sectionId: number) => {\n const { changeSectionToFirstItem, formName } = this.props;\n\n changeSectionToFirstItem(formName, sectionId);\n };\n\n render() {\n const { rejectModalIsOpen, timeList } = this.state;\n\n const {\n formName,\n disabled,\n outerChangeType,\n\n modalOpen,\n reserveInfo,\n freeTables,\n activeTables,\n maxCapacity,\n isMergeTables,\n currentValue,\n isSchemasEnabled,\n sections,\n schema,\n\n selectedAppReserve,\n appReserves,\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n appReserveFormValues,\n alreadySelectedTables,\n } = this.props;\n\n if (!modalOpen) {\n return null;\n }\n\n const duration = getHoursAndMinutes(reserveInfo.duration);\n const minutes = duration.h !== parseInt(String(currentValue.hours)) ? 0 : duration.m;\n\n return (\n <>\n <Reservations\n form={formName}\n disabled={disabled}\n outerChangeType={outerChangeType}\n\n type=\"edit\"\n reserveInfo={reserveInfo}\n\n minutes={minutes}\n timeList={timeList}\n maxCapacity={maxCapacity}\n\n title={locales.t(`common.editReserveModal.${reserveInfo.isBanquet ? 'banquet' : 'title'}`)}\n reserveBtnText={locales.t('common.editReserveModal.update')}\n rejectBtnText={locales.t('common.editReserveModal.reject')}\n freeTables={freeTables}\n isSchemasEnabled={isSchemasEnabled}\n sections={sections}\n section={currentValue.section}\n schema={schema}\n persons={reserveInfo.persons}\n // @ts-ignore\n onSubmit={this.handleSendReq}\n handleCloseDialog={this.handleCloseDialog}\n handleReject={this.handleOpenRejectReserveModal}\n handleSelectTable={this.handleSelectTable}\n handleGetFreeTables={this.handleGetFreeTables}\n handleMergeTables={this.handleMergeTables}\n handleErrorMsg={this.handleErrorMsg}\n handleViewChange={this.handleViewChange}\n isMergeTables={isMergeTables}\n activeTables={activeTables}\n initialValues={{\n time: reserveInfo.date,\n date: reserveInfo.date,\n persons: reserveInfo.persons,\n hours: duration.h,\n minutes: duration.m,\n comment: reserveInfo.comment,\n firstName: reserveInfo.firstName,\n lastName: reserveInfo.lastName,\n phone: parsePhoneNumber(reserveInfo.phone),\n isBanquet: reserveInfo.isBanquet,\n section: reserveInfo.section,\n }}\n enableReinitialize\n\n selectedAppReserve={selectedAppReserve}\n appReserves={appReserves}\n addAppReserve={addAppReserve}\n removeAppReserve={removeAppReserve}\n openAppReserve={openAppReserve}\n closeAppReserve={closeAppReserve}\n changeAppReserve={changeAppReserve}\n appReserveFormValues={appReserveFormValues}\n alreadySelectedTables={alreadySelectedTables}\n\n isBanquet={!!(selectedAppReserve\n && selectedAppReserve.originPayload\n && selectedAppReserve.originPayload.isBanquet)}\n />\n\n <DeleteReserveModal\n isOpen={rejectModalIsOpen && modalOpen}\n handleCloseModal={this.handleCloseRejectReserveModal}\n handleRejectReserve={this.handleRejectReserve}\n />\n </>\n );\n }\n}\n\nexport default ReserveEditPage;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { first } from 'lodash';\n\nimport ReserveEditPage from './ReserveEditPage';\nimport { rejectReserve } from '../../actions/reserveReject/RejectReserveActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { editableReserveStates, reserveModal } from '../../config/constants';\nimport { customErrorShackBar, customMessageShackBar } from '../../actions/snackbars/SnackBarsActions';\nimport { changeCurrentTime, changeSectionToFirstItem } from '../Reservation/actions';\nimport { selectorSectionAvailableOptions } from '../../reducers/selectors';\nimport { getReserveFormName } from '../Reservation/constants';\n\nimport {\n DispatchProps,\n StateProps,\n TEditReserveInfo,\n} from './IReserveEditPage';\n\nimport {\n closeReserveEditModal,\n getFreeTables,\n mergeTables,\n setActiveTable,\n updateReserve,\n} from '../../actions/reservationsPage/ReservationsPageActions';\n\nimport {\n selectorFreeTables,\n selectorForm,\n selectorCurrentSectionSchema,\n selectorSelectedAppReserve,\n selectorAlreadySelectedTables,\n} from '../Reservation/selectors';\n\nimport {\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n} from '../../actions/appReserves/AppReservesActions';\n\n\nconst formName = getReserveFormName('EDIT');\n\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n const {\n activeTables,\n editReserveInfo,\n editReserveModalIsOpen,\n } = state.reserveModal;\n\n const { tables } = editReserveInfo || {};\n const { currentRestaurant } = state.cabinet;\n const { isSchemasEnabled } = currentRestaurant ? currentRestaurant.settings : { isSchemasEnabled: false };\n\n const reserveInfo: TEditReserveInfo = {\n type: reserveModal.EDIT,\n id: editReserveInfo ? editReserveInfo.id : 0,\n firstName: editReserveInfo ? editReserveInfo.firstName : '',\n lastName: editReserveInfo ? editReserveInfo.lastName : null,\n phone: editReserveInfo ? editReserveInfo.phone : '',\n locale: state.cabinet.currentRestaurant ? state.cabinet.currentRestaurant.address.countryCode : 'RU',\n duration: editReserveInfo ? editReserveInfo.duration : 0,\n comment: editReserveInfo ? editReserveInfo.comment : '',\n persons: editReserveInfo ? editReserveInfo.persons : 0,\n date: editReserveInfo ? editReserveInfo.date : '',\n // @todo Не хватает source в тех данных, что приходят об открытых резервах?\n source: editReserveInfo && editReserveInfo.source ? editReserveInfo.source.type : '',\n isBanquet: editReserveInfo ? editReserveInfo.isBanquet : false,\n section: ((first(tables) || {}).section || {}).id || 0,\n\n // Отключаю, так как не нашел, где используется\n // tables: editReserveInfo ? editReserveInfo.tables : undefined,\n };\n\n let disabled = false;\n\n const appReserve = selectorSelectedAppReserve(state);\n if (appReserve && appReserve.outerChangeType) {\n disabled = true;\n }\n\n // @todo Переделать на использование нового appReserve?\n // @todo Собрать все статусы, при которых нельзя редактировать\n if (\n editReserveInfo\n && editReserveInfo.state\n && editableReserveStates.indexOf(editReserveInfo.state) === -1\n ) {\n disabled = true;\n }\n\n return {\n formName,\n disabled,\n outerChangeType: appReserve && appReserve.outerChangeType,\n\n activeTables,\n modalOpen: editReserveModalIsOpen,\n isSchemasEnabled,\n schema: selectorCurrentSectionSchema(state),\n sections: selectorSectionAvailableOptions(state),\n freeTables: selectorFreeTables(state),\n workTime: state.schedule.restaurantWorkTimes,\n maxCapacity: state.reserveModal.maxCapacity,\n isMergeTables: state.reserveModal.isMergeTables,\n\n appReserves: state.appReserves,\n selectedAppReserve: appReserve,\n alreadySelectedTables: selectorAlreadySelectedTables(state),\n\n currentValue: {\n date: selectorForm(formName)(state, 'date'),\n time: selectorForm(formName)(state, 'time'),\n firstName: selectorForm(formName)(state, 'firstName'),\n phone: selectorForm(formName)(state, 'phone'),\n name: selectorForm(formName)(state, 'name'),\n persons: selectorForm(formName)(state, 'persons'),\n isBanquet: selectorForm(formName)(state, 'isBanquet'),\n hours: selectorForm(formName)(state, 'hours'),\n minutes: selectorForm(formName)(state, 'minutes'),\n section: selectorForm(formName)(state, 'section'),\n },\n\n currentRestaurant,\n reserveInfo,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n closeReserveEditModal,\n getFreeTables,\n updateReserve,\n customErrorShackBar,\n rejectReserve,\n customMessageShackBar,\n setActiveTable,\n changeCurrentTime,\n changeSectionToFirstItem,\n mergeTables,\n\n addAppReserve,\n removeAppReserve,\n openAppReserve,\n closeAppReserve,\n changeAppReserve,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReserveEditPage);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { IAppStore } from '../types/IAppStore';\n\nimport ReserveCreateModalCont from '../containers/ReservationPageCreateCont';\nimport ReserveConfirmModalCont from '../containers/ReservationPageConfirmCont';\nimport ReserveEditModalCont from '../containers/ReservationPageEditCont';\n\n\nexport type TModalTypes = 'CONFIRM' | 'EDIT' | 'CREATE' | null;\n\ninterface IProps {\n openModal: TModalTypes,\n}\n\n\nconst ReservationsPage: React.FC<IProps> = ({ openModal }) => (\n <>\n {openModal === 'CONFIRM' && <ReserveConfirmModalCont />}\n {openModal === 'EDIT' && <ReserveEditModalCont />}\n {openModal === 'CREATE' && <ReserveCreateModalCont />}\n </>\n);\n\n\nfunction mapStateToProps(state: IAppStore): IProps {\n const {\n createReserveModalIsOpen,\n confirmReserveModalIsOpen,\n editReserveModalIsOpen,\n } = state.reserveModal;\n\n let openModal: TModalTypes = null;\n\n if (createReserveModalIsOpen) {\n openModal = 'CREATE';\n } else if (editReserveModalIsOpen) {\n openModal = 'EDIT';\n } else if (confirmReserveModalIsOpen) {\n openModal = 'CONFIRM';\n }\n\n return { openModal };\n}\n\nexport default connect(mapStateToProps)(ReservationsPage);\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { ExpandLess, ExpandMore, AccountCircle } from '@material-ui/icons';\n\nimport {\n Box,\n Theme,\n IconButton,\n Typography,\n} from '@material-ui/core';\n\nimport { parsePhoneNumber } from '../../../../helpers/reserveHelpers';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n fakeAvatar: {\n fontSize: 77,\n color: '#c5c5c5',\n margin: '-3px 12px 0 -6px',\n },\n clickableAvatar: {\n cursor: 'pointer',\n },\n name: {\n fontSize: 24,\n fontWeight: 500,\n color: 'white',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n width: 300,\n [theme.breakpoints.up('lg')]: {\n width: 320,\n },\n },\n clickableName: {\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n phone: {\n fontSize: 16,\n color: 'white',\n opacity: 0.65,\n },\n}));\n\ninterface SnackbarHeaderProps {\n id: string;\n name: string;\n phone: string;\n open: boolean;\n clickPerson: (phone: string) => void;\n onToggle: (key: string) => void;\n isGuest: boolean;\n}\n\nfunction Header(props: SnackbarHeaderProps) {\n const {\n id,\n name,\n phone,\n open,\n clickPerson,\n onToggle,\n isGuest,\n } = props;\n\n const classes = useStyles();\n const nameClassNames = [classes.name];\n const avatarClassNames = [classes.fakeAvatar];\n\n if (!isGuest) {\n nameClassNames.push(classes.clickableName);\n avatarClassNames.push(classes.clickableAvatar);\n }\n\n return (\n <Box display=\"flex\" mb={1}>\n <Box clone>\n <AccountCircle\n className={avatarClassNames.join(' ')}\n onClick={() => clickPerson(phone)}\n />\n </Box>\n <Box flexGrow={1} alignSelf=\"center\">\n <Typography\n className={nameClassNames.join(' ')}\n title={name.length > 20 ? name : ''}\n onClick={() => clickPerson(phone)}\n >\n {name}\n </Typography>\n <Typography className={classes.phone}>\n {parsePhoneNumber(phone)}\n </Typography>\n </Box>\n <Box clone alignSelf=\"start\">\n <IconButton\n onClick={() => onToggle(id)}\n style={{ color: '#c5c5c5', marginTop: -9 }}\n >\n {open ? <ExpandLess color=\"inherit\" /> : <ExpandMore color=\"inherit\" />}\n </IconButton>\n </Box>\n </Box>\n );\n}\n\nexport default Header;\n","import React from 'react';\nimport { useHistory } from 'react-router-dom';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { TransitionProps } from '@material-ui/core/transitions';\nimport {\n SnackbarContent,\n Theme,\n Snackbar,\n Slide,\n} from '@material-ui/core';\n\nimport { TNotification } from '../../../../types/INotificationsStore';\n// import { TCreateReserveInitialData } from '../../../../types/IReserveModalStore';\n\nimport { Routers } from '../../../../config/constants';\nimport locales from '../../../../locales';\n\nimport Header from './Header';\n\nconst useStyles = makeStyles((theme: Theme) => ({\n // root: {\n // top: (props: any) => props.offset,\n // },\n contentRoot: {\n backgroundColor: 'rgba(84, 110, 122, 0.95)',\n width: 444,\n [theme.breakpoints.up('lg')]: {\n width: 468,\n },\n },\n contentRootActive: {\n backgroundColor: 'rgba(50, 50, 50, 0.95)',\n width: 444,\n [theme.breakpoints.up('lg')]: {\n width: 468,\n },\n },\n contentMessage: {\n width: '100%',\n },\n}));\n\ninterface Props {\n notification: TNotification;\n onToggle: (key: string) => void;\n body: React.ReactElement;\n footer: React.ReactElement;\n}\n\nfunction SlideTransition(props: TransitionProps) {\n return <Slide {...props} direction=\"left\" />;\n}\n\nconst NotificationSnackbar: React.FunctionComponent<Props> = ({\n notification,\n onToggle,\n body,\n footer,\n}) => {\n const history = useHistory();\n const classes = useStyles();\n\n const { payload, offset, open } = notification;\n const { id, phone, state } = payload;\n\n const guestFirstName = notification.getFirstName();\n const guestLastName = notification.getLastName();\n\n // const toggleFold = (event: React.SyntheticEvent | React.MouseEvent, reason?: string) => {\n // if (reason === 'clickaway') {\n // return;\n // }\n //\n // onToggle(notification.getKey());\n // };\n\n const names = [];\n\n if (guestFirstName) {\n names.push(guestFirstName);\n }\n\n if (guestLastName) {\n names.push(guestLastName);\n }\n\n const isGuest = names.length === 0;\n const name = isGuest ? locales.t('notifications.guest') : names.join(' ');\n\n const goToUser = (phone: string) => {\n if (!isGuest) {\n history.push(`${Routers.userStatistics}/${phone}`);\n }\n };\n\n return (\n <Snackbar\n style={{\n top: offset,\n }}\n anchorOrigin={{\n vertical: 'top',\n horizontal: 'right',\n }}\n transitionDuration={250}\n TransitionComponent={SlideTransition}\n open\n >\n <SnackbarContent\n classes={{\n root: state === 'ACTIVE' ? classes.contentRootActive : classes.contentRoot,\n message: classes.contentMessage,\n }}\n message={(\n <>\n <Header\n id={notification.getKey()}\n name={name}\n phone={phone}\n isGuest={isGuest}\n open={open}\n clickPerson={phone => goToUser(phone)}\n onToggle={onToggle}\n />\n\n {body}\n {footer}\n </>\n )}\n />\n </Snackbar>\n );\n};\n\nexport default NotificationSnackbar;\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Box, Typography } from '@material-ui/core';\n\ninterface BodyItemProps {\n label: string;\n value?: string;\n rightIndent?: number;\n}\n\nconst useStyles = makeStyles(() => ({\n label: {\n color: '#aaaaaa',\n fontSize: 11,\n textTransform: 'uppercase',\n },\n value: {\n color: '#6ae9c5',\n fontSize: 16,\n fontWeight: 500,\n },\n}));\n\nfunction BodyItem(props: BodyItemProps) {\n const { label, value, rightIndent } = props;\n const classes = useStyles();\n\n return (\n <Box textAlign=\"center\" mr={rightIndent === undefined ? 2 : rightIndent}>\n <Typography className={classes.value}>{value || '–'}</Typography>\n <Typography className={classes.label}>{label}</Typography>\n </Box>\n );\n}\n\nexport default BodyItem;\n","import React, { memo } from 'react';\n\nimport { Box } from '@material-ui/core';\n\nimport BodyItem from './BodyItem';\nimport locales from '../../../../locales';\nimport { TNotification } from '../../../../types/INotificationsStore';\n\ninterface BodyVisitsProps {\n notification: TNotification;\n}\n\nfunction BodyVisits(props: BodyVisitsProps) {\n const { notification } = props;\n\n const lastVisit = notification.getLastVisit();\n const totalVisits = notification.getTotalVisits();\n\n return (\n <Box display=\"flex\" mb={2}>\n <BodyItem\n label={locales.t('notifications.properties.visits')}\n value={(totalVisits && totalVisits.toString()) || undefined}\n />\n\n <BodyItem\n label={locales.t('notifications.properties.lastVisit')}\n value={(lastVisit && lastVisit.format('DD.MM.YY')) || undefined}\n rightIndent={0}\n />\n </Box>\n );\n}\n\nexport default memo(BodyVisits);\n","import React from 'react';\n\nimport { CallNotification } from '../../../../../types/INotificationsStore';\nimport BodyVisits from '../BodyVisits';\n\ninterface CallBodyProps {\n notification: CallNotification;\n}\n\nfunction CallBody(props: CallBodyProps) {\n const { notification } = props;\n\n return notification.open ? <BodyVisits notification={notification} /> : null;\n}\n\nexport default CallBody;\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Box, Button } from '@material-ui/core';\n\nimport locales from '../../../../../locales';\nimport { CallNotification } from '../../../../../types/INotificationsStore';\n\ninterface CallFooterProps {\n notification: CallNotification;\n onRemove: (notificationKey: string, itemId: number) => void;\n // onCreateReserve: (callId: number, payloadInitialData: TCreateReserveInitialData) => void;\n onCreateReserve: (notificationKey: string, itemId: number) => void;\n}\n\nconst useStyles = makeStyles(theme => ({\n secondaryButtonWrapper: {\n width: '50%',\n paddingRight: theme.spacing(1),\n '& button': {\n height: 48,\n width: '100%',\n backgroundColor: '#e7ebee',\n },\n },\n buttonWrapper: {\n width: '50%',\n paddingLeft: theme.spacing(1),\n '& button': {\n height: 48,\n width: '100%',\n },\n },\n}));\n\nfunction CallFooter(props: CallFooterProps) {\n const { notification: n, onRemove, onCreateReserve } = props;\n const classes = useStyles();\n\n return (\n <Box display=\"flex\">\n <Box className={classes.secondaryButtonWrapper}>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => onRemove(n.getKey(), n.payload.id)}\n >\n {locales.t('notifications.call.actions.close')}\n </Button>\n </Box>\n <Box className={classes.buttonWrapper}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => onCreateReserve(n.getKey(), n.payload.id)}\n >\n {locales.t('notifications.call.actions.reserve')}\n </Button>\n </Box>\n </Box>\n );\n}\n\nexport default CallFooter;\n","import React from 'react';\n\nimport { Box, Typography } from '@material-ui/core';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { MessageOutlined } from '@material-ui/icons';\n\nimport BodyVisits from '../BodyVisits';\nimport BodyItem from '../BodyItem';\nimport locales from '../../../../../locales';\nimport { ReserveNotification } from '../../../../../types/INotificationsStore';\n\ninterface ReserveBodyProps {\n notification: ReserveNotification;\n}\n\nconst useStyles = makeStyles(() => ({\n comment: {\n color: '#aaaaaa',\n fontSize: 12,\n },\n commentIcon: {\n color: '#6ae9c5',\n fontSize: 18,\n },\n}));\n\nfunction ReserveBody(props: ReserveBodyProps) {\n const classes = useStyles();\n\n const { notification } = props;\n const { payload } = notification;\n\n const comment = notification.getComment();\n const visitDate = notification.getVisitDate();\n\n return (\n <>\n <Box display=\"flex\" mb={2}>\n <BodyItem\n label={locales.t('notifications.properties.persons')}\n value={('persons' in payload && payload.persons.toString()) || '?'}\n rightIndent={3}\n />\n <BodyItem\n label={locales.t('notifications.properties.visitDate')}\n value={visitDate && visitDate.format('lll')}\n rightIndent={3}\n />\n <BodyItem\n label={locales.t('notifications.properties.table')}\n value={notification.getTable() || '?'}\n rightIndent={0}\n />\n </Box>\n\n {comment && (\n <Box display=\"flex\" mb={2}>\n <Box mr={1} clone>\n <MessageOutlined className={classes.commentIcon} />\n </Box>\n <Box>\n <Typography className={classes.comment}>{comment}</Typography>\n </Box>\n </Box>\n )}\n\n {notification.open && (\n <>\n <Box mb={2} clone>\n <div\n style={{\n width: 256,\n height: 1,\n backgroundColor: '#c5c5c5',\n margin: '0 auto',\n }}\n />\n </Box>\n\n <BodyVisits notification={notification} />\n </>\n )}\n </>\n );\n}\n\nexport default ReserveBody;\n","import React from 'react';\n\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Box, Button } from '@material-ui/core';\n\nimport locales from '../../../../../locales';\nimport { ReserveNotification } from '../../../../../types/INotificationsStore';\nimport { errorHoverColor, errorColor } from '../../../../../theme';\nimport Reserve from '../../../../../types/IAppReservesStore';\nimport { TOpenReserve } from '../../../../../types/IBookingStore';\n\ninterface ReserveFooterProps {\n notification: ReserveNotification;\n onRemove: (notificationKey: string, itemId: number) => void;\n onConfirm: (notificationKey: string, itemId: number) => void;\n // onEdit: (notificationKey: string, itemId: number) => void;\n onEdit: (notificationKey: string, reserve: Reserve) => void;\n}\n\nconst useStyles = makeStyles(theme => ({\n secondaryButtonWrapper: {\n width: '50%',\n paddingRight: theme.spacing(1),\n '& button': {\n height: 48,\n width: '100%',\n backgroundColor: errorColor,\n // color: errorContrastText,\n color: 'white',\n },\n '& button:hover': {\n backgroundColor: errorHoverColor,\n },\n },\n buttonWrapper: {\n width: '50%',\n paddingLeft: theme.spacing(1),\n '& button': {\n height: 48,\n width: '100%',\n },\n },\n}));\n\nfunction ReserveFooter(props: ReserveFooterProps) {\n const {\n notification: n,\n onRemove,\n onConfirm,\n onEdit,\n } = props;\n\n const classes = useStyles();\n\n return (\n <>\n <Box display=\"flex\" mb={1}>\n <Box className={classes.secondaryButtonWrapper}>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => onRemove(n.getKey(), n.payload.id)}\n >\n {locales.t('notifications.reserve.actions.cancel')}\n </Button>\n </Box>\n <Box className={classes.buttonWrapper}>\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => onConfirm(n.getKey(), n.payload.id)}\n disabled={!n.isTable()}\n >\n {locales.t('notifications.reserve.actions.confirm')}\n </Button>\n </Box>\n </Box>\n <Box display=\"flex\" justifyContent=\"center\">\n <Button\n style={{\n textTransform: 'uppercase',\n color: '#e7ebee',\n }}\n onClick={() => onEdit(\n n.getKey(),\n new Reserve('WIDGET', n.payload as TOpenReserve),\n )}\n >\n {locales.t(n.isTable()\n ? 'notifications.reserve.actions.anotherTable'\n : 'notifications.reserve.actions.table')}\n </Button>\n </Box>\n </>\n );\n}\n\nexport default ReserveFooter;\n","import React from 'react';\n\n// import { TCreateReserveInitialData } from '../../../types/IReserveModalStore';\n\nimport {\n TNotifications,\n TNotification,\n CallNotification,\n ReserveNotification,\n IWindowSize,\n // TNotificationPayload,\n} from '../../../types/INotificationsStore';\n\nimport { useWindowSize } from '../../../helpers/callHelpers';\n\nimport Snackbar from './Snackbar/index';\nimport CallBody from './Snackbar/Call/Body';\nimport CallFooter from './Snackbar/Call/Footer';\nimport ReserveBody from './Snackbar/Reserve/Body';\nimport ReserveFooter from './Snackbar/Reserve/Footer';\nimport Reserve from '../../../types/IAppReservesStore';\n\ninterface Props {\n items: TNotifications;\n onToggle: (key: string) => void;\n\n onRemoveCall: (notificationKey: string, itemId: number) => void;\n onCreateReserveFromCall: (notificationKey: string, itemId: number) => void;\n\n onRemoveReserve: (notificationKey: string, itemId: number) => void;\n onConfirmReserve: (notificationKey: string, itemId: number) => void;\n // onEditReserve: (notificationKey: string, itemId: number) => void;\n onEditReserve: (notificationKey: string, reserve: Reserve) => void;\n}\n\n// @todo Происходит ненужный render. Заметно с включенным таймером нотификаций\n// @todo Сделать container для карточек звонка, в котором будет и логика таймера,\n// чтобы не прокидывать по дереву частые изменения?\nconst Notifications: React.FunctionComponent<Props> = ({\n items,\n onToggle,\n\n onRemoveCall,\n onCreateReserveFromCall,\n\n onRemoveReserve,\n onConfirmReserve,\n onEditReserve,\n}) => {\n if (!items.length) {\n return null;\n }\n\n const size = useWindowSize();\n if (!size.width || !size.height) {\n return null;\n }\n\n const windowSize: IWindowSize = {\n width: size.width,\n height: size.height,\n };\n\n // const headerOffset = 66;\n let offset = 66;\n let fiftyFiftyOffset = offset;\n // let maxOffset = offset;\n const margin = 2;\n\n const notificationsWithOffset = items.map((notification: TNotification, index: number) => {\n const item = {\n ...notification,\n offset,\n fiftyFiftyOffset,\n // maxOffset,\n };\n\n const foldHeight = notification.getFoldHeight(windowSize);\n const unfoldHeight = notification.getUnfoldHeight(windowSize);\n\n offset += (notification.open ? unfoldHeight : foldHeight) + margin;\n fiftyFiftyOffset += (index % 2 === 0 ? unfoldHeight : foldHeight) + margin;\n // maxOffset += unfoldHeight + margin;\n\n return item;\n });\n\n const visibleCalls = notificationsWithOffset.filter(\n x => size.height && x.fiftyFiftyOffset + x.getUnfoldHeight() < size.height,\n );\n\n return (\n <>\n {visibleCalls.map((x) => {\n switch (x.type) {\n case 'CALL':\n return (\n <Snackbar\n key={x.getKey()}\n notification={x}\n onToggle={onToggle}\n\n body={(\n <CallBody notification={x as CallNotification} />\n )}\n\n footer={(\n <CallFooter\n notification={x as CallNotification}\n onRemove={onRemoveCall}\n onCreateReserve={onCreateReserveFromCall}\n />\n )}\n />\n );\n\n case 'RESERVE':\n return (\n <Snackbar\n key={x.getKey()}\n notification={x}\n onToggle={onToggle}\n\n body={(\n <ReserveBody notification={x as ReserveNotification} />\n )}\n\n footer={(\n <ReserveFooter\n notification={x as ReserveNotification}\n onRemove={onRemoveReserve}\n onConfirm={onConfirmReserve}\n onEdit={onEditReserve}\n />\n )}\n />\n );\n\n default:\n return null;\n }\n })}\n </>\n );\n};\n\nexport default Notifications;\n","import React, { useEffect } from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport { Grid, Typography } from '@material-ui/core';\n\nimport { IProps, IState } from './ICabinetPage';\nimport { Routers } from '../../config/constants';\nimport {\n ReservesSystemPage,\n RestaurantSchemePage,\n ReservesSystemEmployeesPage,\n ReservesSystemProfilePage,\n} from '../../pages/ReservesSystemPage';\nimport HomeCont from '../../containers/Home';\nimport BookingCont from '../../containers/Booking';\nimport StatisticsCont from '../../containers/Statistics';\nimport AddRestaurantModal from '../../components/Common/CreateRestaurantModal';\nimport Preloader from '../../components/Common/Preloader';\nimport UserStatisticCont from '../../containers/UserStatistic';\nimport SourceStatisticCont from '../../containers/SourceStatistic';\nimport AuthIkkoModalCont from '../../containers/AuthIikoModalCont';\nimport DrawerAndHeaderComp from '../../components/Common/DrawerAndHeader/DrawerAndHeaderComp';\nimport Notifier from '../../components/Common/Snackbar/Notifier';\nimport NotFoundPage from '../../pages/NotFoundPage';\nimport SocketErrorScreen from '../../containers/SocketErrorScreenCont';\nimport ReservationsPage from '../../pages/ReservationsPage';\nimport Notifications from '../../components/Common/Notifications';\nimport Reserve from '../../types/IAppReservesStore';\nimport { IRestaurantCall } from '../../types/IRestaurantCallsStore';\nimport { Employees } from '../../entities';\nimport { TNotifications } from '../../types/INotificationsStore';\nimport { useRestaurantId } from '../../selectors/RestaurantSelectors';\nimport InitMessages from '../../components/Home/InitMessages';\nimport PageHeaderWrap from '../../components/Common/PageHeaderWrap';\nimport PageContentWrap from '../../components/Common/PageContentWrap';\nimport locales from '../../locales';\n\nfunction CabinetPage(props: IProps & IState) {\n const {\n classes,\n isInit,\n loading,\n modalOpen,\n cashBoxStatus,\n needAuthFromIiko,\n modalAuthIikoOpen,\n reservationsIsOpen,\n withoutRestaurants,\n pathName,\n notifications,\n notificationsOpen,\n removeNotification,\n toggleNotification,\n removeRestaurantCall,\n confirmOpenReserve,\n rejectOpenReserve,\n addAppReserve,\n calls,\n idle,\n resetRestaurantSuccessStatus,\n createRestaurantSuccess,\n history,\n openCreateModal,\n initStarting,\n } = props;\n\n let interval: number | undefined;\n\n const resetIdleTimer = () => {\n window.clearInterval(interval);\n interval = window.setInterval(idle, 10000);\n };\n\n // Редирект на главную страницу после успешного создания ресторана\n useEffect(() => {\n if (createRestaurantSuccess) {\n resetRestaurantSuccessStatus();\n if (history.location.pathname !== Routers.home) {\n history.push(Routers.home);\n }\n }\n }, [createRestaurantSuccess]);\n\n useEffect(() => {\n initStarting();\n resetIdleTimer();\n\n document.addEventListener('mousemove', resetIdleTimer);\n document.addEventListener('click', resetIdleTimer);\n document.addEventListener('keypress', resetIdleTimer);\n\n return () => {\n document.removeEventListener('mousemove', resetIdleTimer);\n document.removeEventListener('click', resetIdleTimer);\n document.removeEventListener('keypress', resetIdleTimer);\n window.clearInterval(interval);\n };\n }, [initStarting]);\n\n const { data: currentEmployee } = Employees.useCurrentEmployee();\n const restaurantId = useRestaurantId();\n\n if (!isInit) {\n return <Preloader loading />;\n }\n\n // У пользователя нет ни одного ресторана, показываем форму создания ресторана\n if (!restaurantId) {\n return (\n <div className={classes.root} style={{ height: '100vh' }}>\n <DrawerAndHeaderComp\n isRegistrationCompleted={false}\n pathname={pathName}\n reservationsIsOpen={false}\n handleOpenReserveCreateModal={() => {}}\n />\n\n <main className={classes.content}>\n <PageHeaderWrap>\n <Typography variant=\"h6\">\n {locales.t('home.title')}\n </Typography>\n </PageHeaderWrap>\n\n <PageContentWrap fullWidth>\n <Grid item lg={6}>\n <InitMessages handleClickOpen={openCreateModal} />\n </Grid>\n </PageContentWrap>\n\n {modalOpen && <AddRestaurantModal />}\n </main>\n </div>\n );\n }\n\n // По идее это условие не должно срабатывать, так как сотрудника не будет,\n // если нет ресторана, на что есть проверка выше. Это условие оставляю, чтобы\n // не делать лишних проверок по коду ниже, где ожидается, что currentEmployee есть.\n if (!currentEmployee) {\n return <Preloader loading />;\n }\n\n const isCallNotifications = Employees.hasAccess(currentEmployee, 'callNotifications:access');\n const isWidgetNotifications = Employees.hasAccess(currentEmployee, 'widgetNotifications:access');\n let userNotifications: TNotifications = [];\n\n if (notifications && (isCallNotifications || isWidgetNotifications)) {\n userNotifications = notifications.filter(\n notification => (notification.type === 'CALL' && isCallNotifications)\n || (notification.type === 'RESERVE' && isWidgetNotifications),\n );\n }\n\n const hasStatsAccess = Employees.hasAccess(currentEmployee, 'stats:access');\n const hasReservesAccess = Employees.hasAccess(currentEmployee, 'reserves:access');\n\n return (\n <div className={classes.root} style={{ height: '100vh' }}>\n <DrawerAndHeaderComp\n isRegistrationCompleted={!(withoutRestaurants || !cashBoxStatus)}\n pathname={pathName}\n handleOpenReserveCreateModal={() => addAppReserve(new Reserve('APP'))}\n reservationsIsOpen={reservationsIsOpen}\n />\n\n <Notifier />\n\n {notificationsOpen && userNotifications && (\n <Notifications\n items={userNotifications}\n onToggle={(key: string) => { toggleNotification(key); }}\n onRemoveCall={(notificationKey: string, itemId: number) => {\n removeRestaurantCall(itemId, true);\n }}\n onCreateReserveFromCall={(notificationKey: string, itemId: number) => {\n const call = calls && calls.find((i: IRestaurantCall) => i.id === itemId);\n\n if (call) {\n removeNotification(notificationKey);\n\n addAppReserve(new Reserve('WIDGET', {\n phone: call.phone,\n firstName: call.guestFirstName,\n lastName: call.guestLastName,\n }));\n }\n }}\n onRemoveReserve={(notificationKey: string, itemId: number) => {\n rejectOpenReserve(itemId);\n }}\n onConfirmReserve={(notificationKey: string, itemId: number) => {\n confirmOpenReserve(itemId);\n }}\n onEditReserve={(notificationKey, reserve: Reserve) => {\n removeNotification(notificationKey);\n\n addAppReserve(reserve);\n }}\n />\n )}\n\n <Preloader loading={loading} />\n <SocketErrorScreen />\n\n <main className={classes.content}>\n {reservationsIsOpen ? <ReservationsPage /> : (\n <>\n <Switch>\n <Route\n exact\n path={Routers.main}\n render={() => {\n if (hasStatsAccess) {\n return <Redirect to={Routers.home} />;\n }\n\n if (hasReservesAccess) {\n return <Redirect to={Routers.booking} />;\n }\n\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.home}\n render={() => {\n if (hasStatsAccess) {\n return <HomeCont />;\n }\n\n if (hasReservesAccess) {\n return <Redirect to={Routers.booking} />;\n }\n\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.booking}\n render={() => {\n if (hasReservesAccess) {\n return <BookingCont />;\n }\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.reservesSystem}\n render={() => {\n if (Employees.hasAccess(currentEmployee, 'restaurantSettings:access')) {\n return <ReservesSystemPage />;\n }\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.restaurantScheme}\n render={() => {\n if (Employees.hasAccess(currentEmployee, 'restaurantSettings:access')) {\n return <RestaurantSchemePage />;\n }\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.statistics}\n render={() => {\n if (hasStatsAccess) {\n return <StatisticsCont />;\n }\n return <NotFoundPage />;\n }}\n />\n\n {/* @todo Проверить: могут быть ошибки в UI */}\n <Route\n path={`${Routers.userStatistics}/:phone`}\n render={() => {\n if (hasStatsAccess) {\n return UserStatisticCont;\n }\n return <NotFoundPage />;\n }}\n />\n\n {/* @todo Проверить: могут быть ошибки в UI */}\n <Route\n path={`${Routers.sourceStatistics}/:source`}\n render={() => {\n if (hasStatsAccess) {\n return SourceStatisticCont;\n }\n return <NotFoundPage />;\n }}\n />\n\n <Route\n path={Routers.employees}\n render={() => {\n if (Employees.hasAccess(currentEmployee, 'employees:access')) {\n return <ReservesSystemEmployeesPage />;\n }\n return <NotFoundPage />;\n }}\n />\n\n <Route path={Routers.profile} component={ReservesSystemProfilePage} />\n <Route component={NotFoundPage} />\n </Switch>\n {modalOpen && <AddRestaurantModal />}\n {needAuthFromIiko && modalAuthIikoOpen && <AuthIkkoModalCont />}\n </>\n )}\n </main>\n </div>\n );\n}\n\nexport default CabinetPage;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { withRouter } from 'react-router-dom';\nimport { withStyles } from '@material-ui/core';\nimport styles from './styles';\n\nimport CabinetPage from './CabinetPage';\nimport { initStarting, openCreateModal, resetRestaurantSuccessStatus } from '../../actions/cabinet/CabinetActions';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IStateProps, IDispatchProps } from './ICabinetPage';\nimport { IAppActions } from '../../types/IAppActions';\n\nimport {\n removeOpenReserve,\n confirmOpenReserve,\n rejectOpenReserve,\n} from '../../actions/reservationsPage/ReservationsPageActions';\n\nimport { removeRestaurantCall } from '../../actions/restaurantsCalls/RestaurantsCallsActions';\n\nimport {\n removeNotification,\n toggleNotification,\n closeNotifications,\n idle,\n} from '../../actions/notifications/NotificationsActions';\n\nimport { notificationsSelector } from '../../containers/Reservation/selectors';\n\nimport {\n addAppReserve,\n removeAppReserve,\n toggleAppReserves,\n} from '../../actions/appReserves/AppReservesActions';\n\nfunction mapStateToProps(state: IAppStore): IStateProps {\n const reservationsIsOpen = state.reserveModal.editReserveModalIsOpen\n || state.reserveModal.createReserveModalIsOpen\n || state.reserveModal.confirmReserveModalIsOpen;\n\n return {\n isInit: state.cabinet.isInit,\n loading: state.loading.isLoading,\n createRestaurantSuccess: state.cabinet.createRestaurantSuccess,\n modalOpen: state.cabinet.modalOpen,\n cashBoxStatus: state.cabinet.cashBoxStatus,\n needAuthFromIiko: state.cabinet.iikoAuth.needAuthFromIiko,\n modalAuthIikoOpen: state.cabinet.modalAuthIikoOpen,\n reservationsIsOpen,\n withoutRestaurants: state.cabinet.restaurantList.length === 0,\n pathName: state.router.location.pathname,\n\n notifications: notificationsSelector(state),\n notificationsOpen: state.notifications.open,\n\n appReserves: state.appReserves,\n calls: state.calls && state.calls.items,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): IDispatchProps {\n return bindActionCreators({\n initStarting,\n resetRestaurantSuccessStatus,\n\n openCreateModal,\n\n closeNotifications,\n removeNotification,\n toggleNotification,\n idle,\n\n removeRestaurantCall,\n removeOpenReserve,\n confirmOpenReserve,\n rejectOpenReserve,\n\n addAppReserve,\n removeAppReserve,\n toggleAppReserves,\n }, dispatch);\n}\n\nexport default withStyles(styles, { withTheme: true, name: 'CabinetPage' })(\n withRouter(\n connect(mapStateToProps, mapDispatchToProps)(\n CabinetPage,\n ),\n ),\n);\n","import React, { Component } from 'react';\nimport { Redirect, Route } from 'react-router-dom';\nimport { connect } from 'react-redux';\n\nimport { Routers } from '../../config/constants';\nimport { getSession } from '../../actions/auth/AuthActions';\nimport Preloader from './Preloader';\n\nclass ProtectedRoute extends Component {\n componentDidMount() {\n const { authorized, getSession } = this.props;\n if (!authorized) {\n getSession();\n }\n }\n\n renderProtected = (routeProps) => {\n const { component: ProtectedComponent, authorized } = this.props;\n return authorized ? <ProtectedComponent {...routeProps} /> : <Redirect to={Routers.login} />;\n };\n\n render() {\n const { getSessionProcess, component, ...rest } = this.props;\n\n if (getSessionProcess) {\n return <Preloader loading />;\n }\n\n return <Route {...rest} render={this.renderProtected} />;\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n authorized: state.auth.authorized,\n getSessionProcess: state.auth.getSessionProcess,\n };\n}\n\nexport default connect(\n mapStateToProps,\n { getSession },\n null,\n { pure: false },\n)(ProtectedRoute);\n","import React, { Component, Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport { NavLink } from 'react-router-dom';\nimport { compose } from 'recompose';\n\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport Button from '@material-ui/core/Button';\nimport Typography from '@material-ui/core/Typography';\n\nimport { Routers } from '../config/constants';\nimport { confirmEmail, getSession } from '../actions/auth/AuthActions';\nimport AuthWrapComp from '../components/Auth/AuthWrapComp';\nimport Logo from '../components/Auth/CommonAuth/Logo';\nimport UseRules from '../components/Auth/CommonAuth/UseRules';\n\nconst styles = {\n contentTitle: {\n marginTop: 34,\n fontSize: 20,\n lineHeight: '24px',\n },\n contentText: {\n marginTop: 20,\n fontSize: 16,\n },\n contentBtn: {\n marginTop: 50,\n height: 46,\n width: 226,\n fontFamily: 'inherit',\n },\n};\n\nclass ConfirmationPage extends Component {\n componentDidMount() {\n const { confirmEmail, match } = this.props;\n confirmEmail(match.params.key);\n }\n\n render() {\n const { confirmEmailStatus, confirmEmailProcess } = this.props.auth;\n const { classes } = this.props;\n\n if (confirmEmailProcess) {\n return (\n <AuthWrapComp>\n <Logo text=\"Подтверждение email\" />\n </AuthWrapComp>\n );\n }\n return (\n <AuthWrapComp>\n <Logo text={confirmEmailStatus ? 'Регистрация завершена' : 'Не удалось подтвердить email'} />\n {confirmEmailStatus\n && (\n <Fragment>\n <Typography align=\"center\" className={classes.contentTitle}>\n Адрес email подтвержден!\n </Typography>\n <Typography align=\"center\" className={classes.contentText}>\n Теперь Вы можете войти в Личный Кабинет\n </Typography>\n <NavLink to={Routers.home}>\n <Button variant=\"contained\" color=\"primary\" className={classes.contentBtn}>\n ВОЙТИ\n </Button>\n </NavLink>\n </Fragment>\n )\n }\n <UseRules />\n </AuthWrapComp>\n );\n }\n}\n\nfunction mapStateToProps(state) {\n return {\n auth: state.auth,\n };\n}\n\nexport default compose(\n connect(mapStateToProps, { getSession, confirmEmail }),\n withStyles(styles),\n)(ConfirmationPage);\n","import React from 'react';\nimport { WrappedFieldInputProps, WrappedFieldMetaProps } from 'redux-form';\n\nimport Checkbox from '@material-ui/core/Checkbox/Checkbox';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport FormControlLabel from '@material-ui/core/FormControlLabel/FormControlLabel';\n\ninterface IProps {\n input: WrappedFieldInputProps;\n meta: WrappedFieldMetaProps;\n label: string;\n}\n\nconst CheckBoxComp: React.FC<IProps> = ({\n input, label, meta: { touched, error },\n}) => {\n // eslint-disable-next-line\n delete input.value; // грязный хак\n\n return (\n <FormControlLabel\n control={(\n <Checkbox\n color=\"primary\"\n {...input}\n />\n )}\n label={(\n <Typography variant=\"body1\" color={touched && error ? 'error' : 'initial'}>\n { (touched && error) || label }\n </Typography>\n )}\n />\n );\n};\n\nexport default CheckBoxComp;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Field, reduxForm, InjectedFormProps } from 'redux-form';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography';\nimport * as EmailValidator from 'email-validator';\n\nimport locales from '../../locales';\nimport TextField from '../Common/TextFieldComp';\nimport { Routers } from '../../config/constants';\nimport CheckBoxComp from '../Common/CheckBoxComp';\n\n// import systems from '../../config/systems';\n// import { GoogleLogin } from 'react-google-login';\n\n// TODO Обернуть checkbox remember в Field от redux-form\nconst SigInForm: React.FC<InjectedFormProps<{}, {}>> = ({ handleSubmit }) => (\n <form onSubmit={handleSubmit} style={{ marginTop: '30px' }}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Field\n name=\"email\"\n component={TextField}\n label={locales.t('common.email')}\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n name=\"password\"\n component={TextField}\n type=\"password\"\n label={locales.t('common.password')}\n />\n </Grid>\n <Grid item xs={12} container direction=\"row\" alignItems=\"center\" justify=\"space-between\">\n <Field\n name=\"remember\"\n type=\"checkbox\"\n label={locales.t('common.rememberMe')}\n component={CheckBoxComp}\n />\n <Typography variant=\"body1\">\n <NavLink to={Routers.resPassword}>{ locales.t('common.restorePasswordLink') }</NavLink>\n </Typography>\n </Grid>\n <Grid item xs={12} sm={6}>\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n >\n { locales.t('common.login') }\n </Button>\n </Grid>\n <Grid item xs={12} sm={6}>\n <NavLink to={Routers.registration}>\n <Button\n fullWidth\n variant=\"outlined\"\n >\n { locales.t('common.registrationLink') }\n </Button>\n </NavLink>\n </Grid>\n {/* <Grid item xs={ 12 } container justify={'center'}> */}\n {/* <GoogleLogin */}\n {/* clientId={ systems.googleId } */}\n {/* buttonText=\"Log in with Google\" */}\n {/* onSuccess={ () => console.log('google Success') } */}\n {/* onFailure={ () => console.log('google Failure') } */}\n {/* /> */}\n {/* </Grid> */}\n </Grid>\n </form>\n);\n\ninterface IErrors {\n email?: string;\n password?: string;\n}\n\nfunction validate({ email, password }: IErrors): IErrors {\n const errors: IErrors = {};\n\n if (!email) errors.email = 'Заполните поле email';\n else if (!EmailValidator.validate(email)) errors.email = 'Введите корректный email';\n\n if (!password) errors.password = 'Заполните поле пароль';\n\n return errors;\n}\n\nexport default reduxForm<{}, {}>({\n form: 'auth',\n validate,\n})(SigInForm);\n","import React, { Component } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\n\nimport { IAuthContProps } from './IAuthCont';\nimport SigInForm from '../../components/Auth/SigInForm';\nimport UseRules from '../../components/Auth/CommonAuth/UseRules';\nimport Logo from '../../components/Auth/CommonAuth/Logo';\nimport AuthWrapComp from '../../components/Auth/AuthWrapComp';\nimport { Routers } from '../../config/constants';\nimport locales from '../../locales';\n\nclass AuthCont extends Component<IAuthContProps, {}> {\n componentDidMount(): void {\n const { getSession, authorized } = this.props;\n\n if (!authorized) {\n getSession();\n }\n }\n\n /** @description Ручка для авторизации */\n handleSignIn = (value: any) => {\n const { email, password, remember } = value;\n const { signIn } = this.props;\n signIn(email, password, remember);\n };\n\n render() {\n const { error, authorized } = this.props;\n\n const errorText = error\n && (\n <Typography style={{ margin: '20px 0 20px 0' }} color=\"error\" variant=\"subtitle1\">\n { error }\n </Typography>\n );\n\n if (authorized) {\n return <Redirect to={Routers.home} />;\n }\n\n return (\n <AuthWrapComp>\n <Logo text={locales.t('common.loginWelcome')} />\n <SigInForm onSubmit={this.handleSignIn} />\n { errorText }\n <UseRules />\n </AuthWrapComp>\n );\n }\n}\n\nexport default AuthCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport AuthCont from './AuthCont';\nimport { StateProps, DispatchProps } from './IAuthCont';\nimport { getSession, signIn } from '../../actions/auth/AuthActions';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IAppStore } from '../../types/IAppStore';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n return {\n authorized: state.auth.authorized,\n error: state.auth.error,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n signIn,\n getSession,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthCont);\n","import React from 'react';\nimport { Field, InjectedFormProps, reduxForm } from 'redux-form';\nimport * as EmailValidator from 'email-validator';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport Typography from '@material-ui/core/Typography/Typography';\n\nimport TextField from '../Common/TextFieldComp';\nimport CheckBoxComp from '../Common/CheckBoxComp';\nimport locales from '../../locales';\n\ninterface IProps {\n regError?: string\n}\n\nconst RegistrationForm: React.FC<IProps & InjectedFormProps<{}, IProps>> = ({ handleSubmit, regError }) => (\n <form onSubmit={handleSubmit}>\n <Grid container spacing={2}>\n <Grid item xs={12} sm={6}>\n <Field\n name=\"firstName\"\n component={TextField}\n label={locales.t('common.firstName')}\n />\n </Grid>\n <Grid item xs={12} sm={6}>\n <Field\n name=\"lastName\"\n component={TextField}\n label={locales.t('common.lastName')}\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n name=\"email\"\n component={TextField}\n label={locales.t('common.email')}\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n name=\"password\"\n component={TextField}\n type=\"password\"\n label={locales.t('common.password')}\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n name=\"password2\"\n component={TextField}\n type=\"password\"\n label={locales.t('common.confirmPassword')}\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n name=\"acceptRules\"\n type=\"checkbox\"\n label={locales.t('common.agreeProcessingPersonalData')}\n component={CheckBoxComp}\n />\n </Grid>\n <Grid item xs={12} container justify=\"center\">\n <div style={{ width: '50%' }}>\n <Button\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n >\n { locales.t('common.registration') }\n </Button>\n </div>\n </Grid>\n {\n regError\n && (\n <Grid item xs={12} container justify=\"center\">\n <Typography color=\"error\" variant=\"subtitle1\">{regError}</Typography>\n </Grid>\n )\n }\n </Grid>\n </form>\n);\n\ninterface IError {\n email?: string;\n password?: string;\n password2?: string;\n firstName?: string;\n lastName?: string;\n}\n\nconst validateName = (value: string | undefined): boolean => {\n const re = new RegExp(/^[\\p{L}\\s-]+$/u);\n return !!(value && value.match(re));\n}\n\nconst validate = ({\n email, password, firstName, lastName, password2,\n}: IError) => {\n const errors: IError = {};\n\n if (!firstName) {\n errors.firstName = locales.t('common.errors.fieldErrors.name.empty');\n } else if (firstName.length < 3) {\n errors.firstName = locales.t('common.errors.fieldErrors.name.short');\n } else if (!validateName(firstName)) {\n errors.firstName = locales.t('common.errors.fieldErrors.name.characters');\n }\n\n if (!lastName) {\n errors.lastName = locales.t('common.errors.fieldErrors.lastName.empty');\n } else if (lastName.length < 3) {\n errors.lastName = locales.t('common.errors.fieldErrors.lastName.short');\n } else if (!validateName(lastName)) {\n errors.lastName = locales.t('common.errors.fieldErrors.lastName.characters');\n }\n\n if (!email) errors.email = locales.t('common.errors.fieldErrors.email.empty');\n else if (!EmailValidator.validate(email)) errors.email = locales.t('common.errors.fieldErrors.email.incorrect');\n\n if (!password) errors.password = locales.t('common.errors.fieldErrors.password.empty');\n else if (password.length < 8) errors.password = locales.t('common.errors.fieldErrors.password.short');\n\n if (!password2) errors.password2 = locales.t('common.errors.fieldErrors.password.empty');\n else if (password !== password2) errors.password2 = locales.t('common.errors.fieldErrors.password.notMatch');\n\n return errors;\n};\n\nexport default reduxForm<{}, IProps>({\n form: 'registration',\n validate,\n})(RegistrationForm);\n","import React, { Component } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport Typography from '@material-ui/core/Typography';\nimport { SubmissionError } from 'redux-form';\n\nimport RegistrationForm from '../../components/Auth/RegistrationForm';\nimport { Routers } from '../../config/constants';\nimport locales from '../../locales';\nimport UseRules from '../../components/Auth/CommonAuth/UseRules';\nimport Logo from '../../components/Auth/CommonAuth/Logo';\nimport AuthWrapComp from '../../components/Auth/AuthWrapComp';\nimport { IProps } from './IRegistrationCont';\n\nclass RegisterCont extends Component<IProps, {}> {\n /** @description Ручка для экшена регистрации */\n handleSignUp = ({\n firstName,\n lastName,\n email,\n password,\n acceptRules,\n }: any) => {\n const { signUp } = this.props;\n\n if (!acceptRules) {\n throw new SubmissionError({\n acceptRules: 'Согласие с правилами обязательно',\n _error: 'Согласие с правилами обязательно',\n });\n } else {\n signUp(firstName, lastName, email, password);\n }\n };\n\n render() {\n const { regError } = this.props;\n\n return (\n <AuthWrapComp>\n <Logo text={locales.t('common.registrationWelcome')} />\n <RegistrationForm onSubmit={this.handleSignUp} regError={regError} />\n <Typography variant=\"caption\" style={{ marginTop: 10 }}>\n <NavLink to={Routers.login}>{ locales.t('common.loginLink') }</NavLink>\n </Typography>\n <UseRules />\n </AuthWrapComp>\n );\n }\n}\n\n\nexport default RegisterCont;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport RegisterCont from './RegisterCont';\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { StateProps, DispatchProps } from './IRegistrationCont';\nimport { signUp } from '../../actions/auth/AuthActions';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n return {\n regError: state.auth.error,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n signUp,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RegisterCont);\n","import React from 'react';\nimport { Field, reduxForm, InjectedFormProps } from 'redux-form';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport { NavLink } from 'react-router-dom';\n\nimport * as EmailValidator from 'email-validator';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport { Routers } from '../../config/constants';\nimport TextField from '../Common/TextFieldComp';\nimport locales from '../../locales';\n\nconst RestorePasswordForm: React.FC<InjectedFormProps<{}, {}>> = ({ handleSubmit }) => (\n <form onSubmit={handleSubmit} style={{ marginTop: '30px' }}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Field\n fullWidth\n name=\"email\"\n component={TextField}\n label={locales.t('common.email')}\n />\n </Grid>\n <Grid item xs={12} container justify=\"center\">\n <Button\n style={{ width: 226, height: 46, marginTop: 42 }}\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n >\n {locales.t('restorePassword.initRestoreButton')}\n </Button>\n </Grid>\n <Grid item xs={12} container justify=\"center\">\n <NavLink to={Routers.auth}>\n <Typography align=\"center\" variant=\"caption\" style={{ textDecoration: 'underline' }}>\n { locales.t('common.goBack') }\n </Typography>\n </NavLink>\n </Grid>\n </Grid>\n </form>\n);\n\ninterface IErrors {\n email?: string;\n}\n\nconst validate = ({ email }: any) => {\n const errors: IErrors = {};\n if (!email) errors.email = locales.t('common.errors.fieldErrors.email.empty');\n else if (!EmailValidator.validate(email)) errors.email = locales.t('common.errors.fieldErrors.email.incorrect');\n return errors;\n};\n\nexport default reduxForm<{}, {}>({\n form: 'restorePassword',\n validate,\n})(RestorePasswordForm);\n","import React, { Component, Fragment } from 'react';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport Button from '@material-ui/core/Button/Button';\n\nimport locales from '../../locales';\nimport UseRules from '../../components/Auth/CommonAuth/UseRules';\nimport Logo from '../../components/Auth/CommonAuth/Logo';\nimport RestorePasswordForm from '../../components/RestorePassword/RestorePasswordForm';\nimport AuthWrapComp from '../../components/Auth/AuthWrapComp';\nimport { IPropsResetPassword } from './IResetPassord';\n\nclass ResetPassword extends Component<IPropsResetPassword, {}> {\n /** @description Ручка экшена для сброса пароля */\n handleRestorePassword = ({ email }: any) => {\n const { restorePassword } = this.props;\n restorePassword(email);\n };\n\n /** @description Ручка повторной отправки экшена для сброса пароля */\n handleResend = () => {\n const { restorePassword, userEmail } = this.props;\n if (userEmail) {\n restorePassword(userEmail);\n }\n };\n\n render() {\n const { restorePasswordError, restorePasswordSuccess, userEmail } = this.props;\n\n const init = (\n <Fragment>\n <Logo text={locales.t('restorePassword.initTitle')} />\n <RestorePasswordForm onSubmit={this.handleRestorePassword} />\n </Fragment>\n );\n\n const success = (\n <Fragment>\n <Logo text={locales.t('restorePassword.finishTitle')} />\n <Typography variant=\"h6\" align=\"center\" style={{ marginTop: 20 }}>\n { locales.t('restorePassword.startMessage') }\n { userEmail || 'boris@mail.ru' }\n { locales.t('restorePassword.endMessage') }\n </Typography>\n <Typography align=\"center\" variant=\"subtitle1\" style={{ marginTop: 20 }}>\n { locales.t('restorePassword.subMessage') }\n </Typography>\n <Typography align=\"center\" variant=\"subtitle1\" style={{ marginTop: 20 }}>\n { locales.t('restorePassword.resendButtonDescription') }\n </Typography>\n <Button\n style={{ width: 226, height: 46, marginTop: 42 }}\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n onClick={this.handleResend}\n >\n { locales.t('restorePassword.resendButton') }\n </Button>\n </Fragment>\n );\n\n const content = !restorePasswordSuccess ? init : success;\n\n return (\n <AuthWrapComp>\n { content }\n { restorePasswordError && (\n <Typography style={{ marginTop: '20px' }} color=\"error\" variant=\"subtitle1\">\n { restorePasswordError }\n </Typography>)\n }\n <UseRules />\n </AuthWrapComp>\n );\n }\n}\n\nexport default ResetPassword;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport ResetPassword from './ResetPassword';\nimport { StateProps, DispatchProps } from './IResetPassord';\nimport { restorePassword } from '../../actions/restorePassword/RestorePasswordActions';\nimport { IAppActions } from '../../types/IAppActions';\nimport { IAppStore } from '../../types/IAppStore';\n\nfunction mapStateToProps(state: IAppStore): StateProps {\n return {\n restorePasswordError: state.restorePassword.restorePasswordError,\n userEmail: state.restorePassword.userEmail,\n restorePasswordSuccess: state.restorePassword.restorePasswordSuccess,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n restorePassword,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ResetPassword);\n","import React, { useState } from 'react';\nimport { connect } from 'react-redux';\nimport { compose } from 'recompose';\n\nimport Typography from '@material-ui/core/Typography/Typography';\nimport withStyles from '@material-ui/core/styles/withStyles';\nimport Button from '@material-ui/core/Button/Button';\nimport { confirmEmailResend } from '../actions/auth/AuthActions';\nimport Logo from '../components/Auth/CommonAuth/Logo';\nimport UseRules from '../components/Auth/CommonAuth/UseRules';\nimport AuthWrapComp from '../components/Auth/AuthWrapComp';\n\nconst styles = {\n contentTitle: {\n marginTop: 34,\n fontSize: 20,\n lineHeight: '24px',\n },\n contentText: {\n marginTop: 34,\n fontSize: 16,\n },\n contentBtn: {\n marginTop: 34,\n marginBottom: 10,\n height: 46,\n width: 226,\n },\n contentDesc: {\n marginTop: 24,\n width: 226,\n },\n};\n\n\nconst ThanksYouPage = (props) => {\n const { classes, confirmEmailResend } = props;\n\n const [isSended, setSended] = useState(false);\n const handleClick = () => {\n confirmEmailResend();\n setSended(true);\n };\n\n return (\n <AuthWrapComp>\n <Logo text=\"Подтвердите адрес email\" />\n <Typography align=\"center\" className={classes.contentTitle}>\n Регистрация прошла успешно! Мы отправили Вам письмо на email\n </Typography>\n <div className={classes.contentText}>\n <Typography align=\"center\">\n Для подтверждения регистрации и активации учетной записи, перейдите по ссылке из письма. Письмо не пришло?\n </Typography>\n <Typography align=\"center\">\n Проверьте папку Спам и нажмите кнопку "Отправить еще раз"\n </Typography>\n </div>\n <Button variant=\"contained\" color=\"primary\" className={classes.contentBtn} disabled={isSended} onClick={handleClick}>\n Отправить ещё раз\n </Button>\n {isSended && (\n <Typography align=\"center\">\n Письмо было отправлено повторно\n </Typography>\n )}\n <Typography align=\"center\" variant=\"caption\" className={classes.contentDesc}>\n Не получается зарегистрироваться?\n Напишите нам на info@guestme.ru, мы поможем решить проблему\n </Typography>\n <UseRules />\n </AuthWrapComp>\n );\n};\n\nexport default compose(\n connect(null, { confirmEmailResend }),\n withStyles(styles),\n)(ThanksYouPage);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport { confirmEmail, getSession } from '../actions/auth/AuthActions';\n\nconst RulesPage = () => (\n <div>\n <h1>Правила</h1>\n </div>\n);\n\nexport default connect(null, { getSession, confirmEmail })(RulesPage);\n","import React from 'react';\nimport { Field, reduxForm, InjectedFormProps } from 'redux-form';\nimport Button from '@material-ui/core/Button';\nimport Grid from '@material-ui/core/Grid';\nimport { NavLink } from 'react-router-dom';\n\nimport Typography from '@material-ui/core/Typography/Typography';\nimport { Routers } from '../../config/constants';\nimport TextField from '../Common/TextFieldComp';\nimport locales from '../../locales';\n\nconst NewPasswordForm: React.FC<InjectedFormProps<{}, {}>> = ({ handleSubmit }) => (\n <form onSubmit={handleSubmit} style={{ marginTop: '30px' }}>\n <Grid container spacing={2}>\n <Grid item xs={12}>\n <Field\n fullWidth\n name=\"password1\"\n component={TextField}\n label={locales.t('sendNewPassword.newPasswordField')}\n type=\"password\"\n />\n </Grid>\n <Grid item xs={12}>\n <Field\n fullWidth\n name=\"password2\"\n component={TextField}\n label={locales.t('sendNewPassword.confirmNewPasswordField')}\n type=\"password\"\n />\n </Grid>\n <Grid item xs={12} container justify=\"center\">\n <Button\n style={{ width: 226, height: 46, marginTop: 42 }}\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n >\n {locales.t('sendNewPassword.newPasswordBtn')}\n </Button>\n </Grid>\n <Grid item xs={12} container justify=\"center\">\n <NavLink to={Routers.auth}>\n <Typography align=\"center\" variant=\"caption\" style={{ textDecoration: 'underline' }}>\n { locales.t('common.goBack') }\n </Typography>\n </NavLink>\n </Grid>\n </Grid>\n </form>\n);\n\ninterface IErrors {\n password1?: string;\n password2?: string;\n}\n\nconst validate = ({ password1, password2 }: any): IErrors => {\n const errors: IErrors = {};\n\n if (!password1) errors.password1 = locales.t('common.errors.fieldErrors.password.empty');\n else if (password1.length < 8) errors.password1 = locales.t('common.errors.fieldErrors.password.short');\n\n if (!password2) errors.password2 = locales.t('common.errors.fieldErrors.password.empty');\n else if (password2.length < 8) errors.password2 = locales.t('common.errors.fieldErrors.password.short');\n else if (password1 !== password2) errors.password2 = locales.t('common.errors.fieldErrors.password.notMatch');\n\n return errors;\n};\n\nexport default reduxForm<{}, {}>({\n form: 'newPassword',\n validate,\n})(NewPasswordForm);\n","import React, { Component, Fragment } from 'react';\nimport Typography from '@material-ui/core/Typography/Typography';\nimport Button from '@material-ui/core/Button/Button';\n\nimport { IPropsSendNewPassword } from './ISendNewPassword';\nimport AuthWrapComp from '../../components/Auth/AuthWrapComp';\nimport Logo from '../../components/Auth/CommonAuth/Logo';\nimport NewPasswordForm from '../../components/RestorePassword/NewPasswordForm';\nimport locales from '../../locales';\nimport UseRules from '../../components/Auth/CommonAuth/UseRules';\nimport History from '../../redux/history';\n\nclass SendNewPassword extends Component<IPropsSendNewPassword, {}> {\n /** @description Ручка для отправки нового пароля */\n handleSendNewPassword = ({ password1, password2 }: any): void => {\n const { sendNewPassword, secretKey } = this.props;\n if (password1 === password2) {\n sendNewPassword(secretKey, password1);\n }\n };\n\n /** @description Ручка для редиректа на страницу логина */\n handelRedirectToLogin = (): void => {\n History.push('/');\n };\n\n render() {\n const { sendNewPasswordError, sendNewPasswordSuccess } = this.props;\n\n const init = (\n <Fragment>\n <Logo text={locales.t('sendNewPassword.title')} />\n <NewPasswordForm onSubmit={this.handleSendNewPassword} />\n </Fragment>\n );\n\n const finish = (\n <Fragment>\n <Logo text={locales.t('sendNewPassword.finishTitle')} />\n <Typography style={{ marginTop: '20px' }} variant=\"h6\">\n { locales.t('sendNewPassword.finishMessage') }\n </Typography>\n <Typography style={{ marginTop: '20px' }} variant=\"subtitle1\">\n { locales.t('sendNewPassword.goToCabinet') }\n </Typography>\n <Button\n style={{ width: 226, height: 46, marginTop: 42 }}\n type=\"submit\"\n fullWidth\n variant=\"contained\"\n color=\"primary\"\n onClick={this.handelRedirectToLogin}\n >\n {locales.t('sendNewPassword.goToCabinetBtn')}\n </Button>\n </Fragment>\n );\n\n const content = sendNewPasswordSuccess ? finish : init;\n\n return (\n <AuthWrapComp>\n { content }\n { sendNewPasswordError && (\n <Typography style={{ marginTop: '20px' }} color=\"error\" variant=\"subtitle1\">\n { sendNewPasswordError }\n </Typography>\n )\n }\n <UseRules />\n </AuthWrapComp>\n );\n }\n}\n\nexport default SendNewPassword;\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport { IAppStore } from '../../types/IAppStore';\nimport { IAppActions } from '../../types/IAppActions';\nimport { sendNewPassword } from '../../actions/restorePassword/RestorePasswordActions';\nimport SendNewPassword from './SendNewPassword';\nimport { StateProps, DispatchProps } from './ISendNewPassword';\n\nfunction mapStateToProps(state: IAppStore, ownProps: any): StateProps {\n return {\n sendNewPasswordError: state.restorePassword.sendNewPasswordError,\n sendNewPasswordSuccess: state.restorePassword.sendNewPasswordSuccess,\n secretKey: ownProps.match.params.key,\n };\n}\n\nfunction mapDispatchToProps(dispatch: Dispatch<IAppActions>): DispatchProps {\n return bindActionCreators({\n sendNewPassword,\n }, dispatch);\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SendNewPassword);\n","import { useEmployeeActivationFeature } from '../../features';\n\n\nexport function EmployeeConfirmationPage() {\n return useEmployeeActivationFeature();\n}\n","import React, { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Employees } from '../../../entities';\nimport { ActivationSuccess, ActivationError, ActivationPassword } from '../ui';\n\ninterface EmployeeData {\n firstName: string;\n lastName: string;\n phone: string;\n email: string;\n}\n\nexport function useEmployeeActivationFeature() {\n const { key } = useParams();\n const getEmployeeMutation = Employees.useGetEmployeeByActivationKeyMutation();\n const activateEmployeeMutation = Employees.useActivateEmployeeMutation();\n\n const [employee, setEmployee] = useState<EmployeeData | undefined>();\n\n const submitPassword = (password: string) => {\n if (!employee) {\n return;\n }\n\n const payload: GM.Employees.Request.Activate = {\n key,\n firstName: employee.firstName,\n lastName: employee.lastName,\n phone: employee.phone,\n password,\n };\n\n activateEmployeeMutation.mutate(payload);\n };\n\n useEffect(() => {\n if (key && getEmployeeMutation.status === 'idle') {\n getEmployeeMutation.mutate({ key });\n }\n }, [key, getEmployeeMutation.status, getEmployeeMutation]);\n\n useEffect(() => {\n if (getEmployeeMutation.status === 'success' && getEmployeeMutation.data) {\n const {\n firstName, lastName, phone, email,\n } = getEmployeeMutation.data.data;\n setEmployee({\n firstName, lastName, phone, email,\n });\n }\n }, [getEmployeeMutation.status, getEmployeeMutation.data]);\n\n if (\n getEmployeeMutation.status === 'error'\n || activateEmployeeMutation.status === 'error'\n ) {\n return <ActivationError />;\n }\n\n if (getEmployeeMutation.status === 'success') {\n if (activateEmployeeMutation.status === 'success') {\n return <ActivationSuccess />;\n }\n\n return <ActivationPassword submitPassword={submitPassword} />;\n }\n\n return null;\n}\n","import React from 'react';\nimport { Route, Switch } from 'react-router-dom';\n\nimport CabinetPage from './CabinetPage';\nimport { Routers } from '../config/constants';\nimport ProtectedRoute from '../components/Common/ProtectedRoute';\nimport NotFoundPage from '../pages/NotFoundPage';\nimport ConfirmationPage from '../pages/ConfirmationPage';\nimport Auth from '../containers/Auth';\nimport Registration from '../containers/Registration';\nimport ResetPassword from '../containers/ResetPassword';\nimport ThanksYouPage from '../pages/ThanksYouPage';\nimport RulesPage from '../pages/RulesPage';\nimport SendNewPassword from '../containers/SendNewPassword';\nimport { EmployeeConfirmationPage } from '../pages';\n\nfunction index() {\n return (\n <Switch>\n <Route path={Routers.login} component={Auth} />\n <Route path={Routers.registration} component={Registration} />\n <Route path={Routers.resPassword} component={ResetPassword} />\n <Route path={`${Routers.newPassword}/:key`} component={SendNewPassword} />\n <Route path={`${Routers.confirmation}/:key`} component={ConfirmationPage} />\n <Route path={Routers.thanks} component={ThanksYouPage} />\n <Route path={Routers.rules} component={RulesPage} />\n\n <Route path={`${Routers.employeeConfirmation}`} component={EmployeeConfirmationPage} />\n\n <ProtectedRoute path={Routers.main} component={CabinetPage} />\n\n {/* @todo С правилом Routers.main выше дальше выполнение не проходит. Код ниже не выполняется никогда? */}\n <Route component={NotFoundPage} />\n </Switch>\n );\n}\n\nexport default index;\n\n\n\n","import React, { Fragment } from 'react';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport { SnackbarProvider } from 'notistack';\nimport {\n withStyles,\n WithStyles,\n createStyles,\n Theme,\n} from '@material-ui/core';\n\nimport Routers from '../../routers';\n\nconst styles = (theme: Theme) => createStyles({\n info: {\n backgroundColor: theme.palette.primary.main,\n color: theme.palette.primary.contrastText,\n },\n error: {\n color: theme.palette.error.contrastText,\n },\n});\n\ninterface IProps extends WithStyles<typeof styles> {}\n\nconst AppComp: React.FC<IProps> = ({ classes }) => (\n <SnackbarProvider\n maxSnack={100}\n classes={{\n variantInfo: classes.info,\n }}\n >\n <Fragment>\n <CssBaseline />\n <Routers />\n </Fragment>\n </SnackbarProvider>\n);\n\nexport default withStyles(styles)(AppComp);\n","import React from 'react';\nimport { Provider } from 'react-redux';\nimport { ConnectedRouter as Router } from 'connected-react-router';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport MomentUtils from '@date-io/moment';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\n\nimport 'typeface-roboto';\n\nimport history from '../../redux/history';\nimport store from '../../redux';\nimport theme from '../../theme';\nimport AppComp from './AppComp';\n\nconst queryClient = new QueryClient();\n\nconst App = () => (\n <Provider store={store}>\n <QueryClientProvider client={queryClient}>\n <Router history={history}>\n <MuiThemeProvider theme={theme}>\n <MuiPickersUtilsProvider utils={MomentUtils}>\n <AppComp />\n </MuiPickersUtilsProvider>\n </MuiThemeProvider>\n </Router>\n </QueryClientProvider>\n </Provider>\n);\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport * as Sentry from '@sentry/react';\nimport { Integrations } from '@sentry/tracing';\n\nimport './index.css';\nimport App from './containers/App/App';\n\nconst { REACT_APP_SENTRY_DSN, REACT_APP_NAME, REACT_APP_VERSION } = process.env;\n\nif (REACT_APP_SENTRY_DSN) {\n const sentryConfig = {\n dsn: REACT_APP_SENTRY_DSN,\n environment: process.env.NODE_ENV,\n integrations: [\n new Integrations.BrowserTracing(),\n ],\n tracesSampleRate: 0.5,\n };\n\n if (REACT_APP_NAME && REACT_APP_VERSION) {\n sentryConfig.release = `${REACT_APP_NAME}@${REACT_APP_VERSION}`;\n }\n\n Sentry.init(sentryConfig);\n}\n\nReactDOM.render(<App />, document.getElementById('root'));\n","module.exports = __webpack_public_path__ + \"static/media/logo.5e8dc4e9.svg\";","module.exports = __webpack_public_path__ + \"static/media/GuestMe-Bell.6d121e93.wav\";"],"sourceRoot":""}