{"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","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","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","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","selectors/RestaurantSelectors.ts","entities/cashbox/model/model.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/HeaderComp/RestaurantSelect.tsx","components/Common/Icons/UserIcon.tsx","components/Common/Icons/PushIcon.tsx","components/Common/Icons/PlaceholdersIcon.tsx","components/Common/HeaderComp/index.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","routers/CabinetPage/styles.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","components/Auth/AuthWrapComp.tsx","components/Auth/CommonAuth/Logo.tsx","components/Auth/CommonAuth/UseRules.tsx","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","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","initState","user","undefined","error","loading","getSessionProcess","confirmEmailProcess","confirmEmailStatus","authorized","AuthReducer","state","arguments","length","action","type","ActionTypes","_objectSpread","payload","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","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","sortPhoneCodeByTitle","a","b","nameA","toUpperCase","nameB","isInit","bookingList","getBookingInfoProcess","getBookingInfoError","currentStatisticDate","moment","format","onlyActive","sort","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","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","getPercentDiff","previous","current","previousResult","currentResult","Math","round","getMoneySymbol","countryCode","sortWeekdays","scheduleList","sorter","parseTimeToInt","time","parseTime","split","slice","join","parseInt","getNextWeekDay","day","getMergedSchedule","reduce","group","records","nextDay","start","end","forEach","i","_defineProperty","getBookingGroupsForForceUpdate","days","groups","newTimes","mergedGroups","list","indexOf","parseScheduleStart","parseNewStart","parseScheduleEnd","parseNewEnd","overMidnight","newEndOverMidnight","concat","_toConsumableArray","r","getGroupsForUpdate","row","initRow","g","d","_","find","isWorkingTime","getNewGroupForCreate","newRow","initRows","restaurantId","difference","getScheduleForDelete","initDays","ids","getSchedulesRows","_ref","array","Group","props","By","getGroupedItems","item","returnArray","push","arrayRecord","Object","keys","groupBy","_records$filter","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","parse","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","currentRestaurant","moneySymbol","modalOpen","modalAuthIikoOpen","warningOpen","iikoAuth","needAuthFromIiko","organizationList","step","cashBoxStatus","cashBoxPlugins","bookingQueue","StatisticCustomDateModalOpen","StatisticDate","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","fields","newValue","_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","registerRestaurateur","restaurantTable","restaurateur","restaurateurBooking","restaurantWidget","bookingJournal","statisticSummary","statisticPie","statisticGuest","websocket","programs","loadsPrograms","menuRestaurant","restaurantSchedule","restaurantScheduleGroup","restaurantScheduleGroups","restorePasswordInit","restorePasswordFinish","restaurantCalls","REMEMBER_ME_KEY","getToken","tokenName","getItem","sessionStorage","setRememberMe","remember","window","setTokens","accessToken","refreshToken","getAccessToken","getRefreshToken","deleteTokens","removeItem","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","e","prototype","n","hasOwnProperty","o","defineProperty","Symbol","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","l","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","getPrototypeOf","v","values","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","constructor","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","prev","charAt","rval","handle","complete","finish","catch","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","reject","_retry","access_token","refresh_token","tokenReq","password","registerRestaurateurReq","postData","firstName","lastName","confirmEmailReq","get","activation-key","remember-me","getAccountReq","createRestaurantReq","restaurantReqData","telegramNotificationSettings","isEnabled","info","country","city","street","point","x","coordinates","lat","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","getCashboxStatusRequest","getCashboxDeleteRequest","hwid","signUp","signUpError","signIn","signInSuccess","signOut","getSession","i18next","init","lng","debug","resources","locales","react","transEmptyNodeValue","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","_marked","signUpSaga","_marked2","confirmEmailSaga","_marked3","setToken","_marked4","signInSaga","_marked5","getSessionSaga","_marked6","signOutSaga","_marked7","saga","Api","message","has","AuthActions","_context2","tokenData","Token","_context3","User","errorText","_context4","_context5","_context6","console","log","signInSuccessSaga","_action$payload$user","Sentry","toString","_context7","all","takeLatest","restorePassword","sendNewPassword","deleteRestaurant","getSections","getSectionSuccess","fetchSections","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","reserveRejectSaga","editReserveSaga","updateReserveSuccessSaga","confirmReserveSuccessSaga","getFreeTablesSaga","createReserveSaga","_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","_context8","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","initBookingPageSaga","getAllBookingsSaga","setFiltersSaga","storageFilters","newFilters","t1","isNull","activeFilters","ReserveModalActionTypes","ReserveRejectActionsTypes","getTablesForSettings","getTablesForSettingsSuccess","updateRestaurantTable","getAllTablesSaga","updateRestaurantTableSaga","sortTableList","Array","isArray","initStarting","getRestaurantListSuccess","getRestaurantError","addRestaurant","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","initCabinetSaga","getRestaurantListSaga","setSentryContext","addRestaurantSaga","checkRestaurantFromIikoSaga","getCashBoxConnectStatusSaga","getCashBoxPluginsStatusSaga","_yield$call","content","Notification","requestPermission","_yield$call2","restaurantData","getRestaurantPinCode","ActionsTypes","getRestaurantPinCodeSuccess","resetConnectStatus","switchPinCodeModal","closePinCodeModal","switchBookingProcessor","authFromIiko","authFromIikoSuccess","selectOrganization","getRestaurantStatistics","getRestaurantStatisticsSuccess","getRestaurantAttendances","getRestaurantAttendancesSuccess","attendance","getRestaurantPinCodeSaga","switchPinCodeModalSaga","authRestaurantToIikoSaga","selectOrganizationFromIikoSaga","switchBookingProcessorSaga","getRestaurantStatisticSaga","getRestaurantAttendanceSaga","_response$data","_response$data2","defaultDate","totalSuccessful","totalCanceled","totalExpectingGuests","totalSkipped","toFixed","percent","reqDate","attendanceDate","dateFormat","labels","getRestaurantMenuFromIikoSuccess","getRestaurantMenuSuccess","getMenuRestaurantSaga","getRestaurantMenuFromIikoSaga","isEmpty","getProgramsSuccess","loadProgramsFromIikoSuccess","getProgramsSaga","loadProgramsSaga","getStatistics","getStatisticsSuccess","openBookingDetails","onlyNumbers","replace","parseReserveList","parsePhoneNumber","normalizePhone","onlyNums","azPos","azLength","getLocale","getStatisticSaga","dateReq","t2","bookingOrders","getUserStatistic","userPhoneNumber","getUserStatisticSuccess","getUserStatisticSaga","userVisits","allReserves","mockUser","mockStat","deleteRestaurantSaga","updateRestaurantInfo","updateRestaurantInfoSaga","newData","priceLvlValue","kitchens","usernames","ReservesSystemActionsTypes","switchReserveSchedule","switchReserveScheduleSuccess","switchSectionId","updateBookingScheduleType","prepareForSave","savedSchedule","parsedSchedule","getSourceStatistic","getReservesBySource","getSourceInfo","getSourceInfoSuccess","getSourceStatSaga","stats","defaultPeriod","parsePage","errorSnackBar","Date","getTime","variant","anchorOrigin","vertical","horizontal","React","createElement","Button","messageSnackBar","customSnackBar","snackbarsSaga","errorBody","messageBody","RestaurantsInfoTypes","RestaurantsTablesTypes","PromoActionsTypes","AuthActionsTypes","RestaurantTypes","MenuActionsTypes","WidgetActionTypes","getScheduleSaga","deleteScheduleRowSaga","updateScheduleSaga","forceDeleteBookingScheduleSaga","forceUpdateBookingScheduleSaga","_yield$getScheduleGro","obj","scheduleGroupField","groupType","scheduleGroups","groupsForCreate","groupsIdForDelete","groupsForUpdate","updatedSchedules","newGroups","_days","unionBy","times","idForDelete","_days2","groupsForForceUpdate","showImageSuccess","getImagesSaga","uploadImageSaga","switchVisibleImageSaga","setCoverSaga","hideMainImageSaga","_iterator","_step","_createForOfIteratorHelper","mainImgId","secondImgId","socketReconnect","setSocketConnectStatus","NEW_NOTIFICATION","fetchRestaurantCallsError","removeRestaurantCall","watchChannelEvents","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","take","bookingState","websocketSaga","Infinity","cancelled","audio","require","Sound","src","_classCallCheck","sound","document","setAttribute","style","display","appendChild","_createClass","play","pause","removeChild","ring","playPromise","setTimeout","destroy","reservesNotificationsSaga","icon","logo","createWidget","createWidgetSuccess","updateWidget","getAllWidgets","deleteWidget","getAllWidgetsSaga","createWidgetSaga","updateWidgetSaga","deleteWidgetSaga","allWidgets","updatedWidget","fetchRestaurantCallsSaga","removeRestaurantCallSaga","updateCurrentRestaurantCallsSaga","perPage","_this","offset","fiftyFiftyOffset","getDate","getFoldHeight","getUnfoldHeight","getLastVisit","guestLastVisitDate","getTotalVisits","guestTotalVisits","CallNotification","_Notification2","_this2","_possibleConstructorReturn","_getPrototypeOf","valueOf","getFirstName","guestFirstName","getLastName","guestLastName","_inherits","ReserveNotification","_Notification3","_this3","getComment","noTailSpaces","clippedComment","substr","getCommentLines","lines","getVisitDate","isTable","getTable","addNotificationSaga","playNotificationSaga","fetchCalls","addCall","fetchReserves","addReserve","isNotificationsOpen","getRandomInt","min","max","mn","mx","Reserve","originPayload","makeKey","prefix","getFormType","addAppReserveSaga","openAppReserveSaga","closeAppReserveSaga","toggleAppReservesSaga","openNextKey","formType","removed","nextAppReserve","skipModalClosing","openNext","openIndex","openNewReserve","remove","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","withStyles","createStyles","toolbarWrap","flex","background","justifyContent","alignItems","boxShadow","classes","children","className","fullWidth","direction","ClassNames","Grid","container","spacing","wrapSvgPath","path","viewBox","SvgIcon","wrapWithPath","Fragment","styles","paddingBottom","&:last-child","cursor","marginLeft","Tooltip","HelpIcon","classNames","index","dangerouslySetInnerHTML","__html","borderBottom","spaceBetween","margin","text","helps","subTitle","Typography","gutterBottom","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","input","formTextInput","inputProps","Component","defaultProps","textAlign","& input::-webkit-outer-spin-button, & input::-webkit-inner-spin-button","opacity","fill","MenuProps","PaperProps","maxHeight","ITEM_HEIGHT","theme","formControl","flexDirection","chips","flexWrap","noLabel","marginTop","timeFieldsWrap","timeFields","withTheme","onUpdate","onDelete","FormControl","Select","multiple","Input","renderValue","selected","marginRight","MenuItem","free","TrashIcon","onClick","SchedulePeriodRow","handleUpdateFreeDays","handelUpdateSchedule","handleDeleteScheduleRow","changeState","ScheduleRow","fieldEmpty","isEqual","getFreeDays","changeWorkTime","_useState3","_useState4","workTimeList","workDays","workPeriod","getWorkTimeForAutoBooking","currentStart","currentEnd","workStart","workEnd","marginButton","handleAddScheduleRow","BookingPeriodRow","contentWrap","updateRestaurant","Paper","elevation","Title","FieldWrap","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","SettingField","ReserveSchedule","ReservesSystemSettingsCont","ReservesSystemSettings","cx","cy","hallRow","tableListItemCheckBox","handleUpdateTable","changeList","CircleActive","Circle","CircleInactive","IconFlashActive","FlashActive","IconFlashInactive","FlashInactive","handleChangeAllBooking","newState","updatedTables","handleChangeBooking","bookingType","TableRow","TableCell","colSpan","align","Checkbox","stopPropagation","checkedIcon","checked","isAutoBookingAllowed","IconButton","left","top","DropUp","DropDown","tabIndex","newTableData","Index","hallList","Table","TableHead","TableBody","TableLIstItem","SettingsCont","handleGetAllTablesList","TableList","selectorGetHallList","hallIndex","allBookingAndAutoBooking","onlyBooking","ReservesSystemTablesCont","useStyles","makeStyles","paperContent","blockLabelContainer","blockLabel","flexGrow","& li","tgLabel","marginBottom","counter","ReservesSystemAdditionalNotificationsComponent","_settings$telegramNot","tgRules","inputValue","setInputValue","accounts","setAccounts","_useState5","_useState6","accountCounter","setAccountCounter","changeAccounts","value_","trim","startsWith","xs","Switch","sm","multiline","placeholder","helperText","FormHelperTextProps","usernames_","accounts_","rule","ReservesSystemAdditionalNotificationsContainer","AutoBookingFields","currentRestaurantSettings","AutoBookingEnabledComp","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","useRef","textRef","setCursorPointer","Rect","ref","onTap","stroke","strokeScaleEnabled","strokeWidth","onMouseEnter","onMouseLeave","Text","fontStyle","verticalAlign","ImageElement","imageProps","_objectWithoutProperties","_useImage","useImage","accessUrl","imageData","Image","RectElement","EllipseElements","Ellipse","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","FilterCenterFocusIcon","ButtonGroup","orientation","aria-label","Increase","Decrease","Stage","draggable","Layer","isCapable","EllipseElement","TextElement","contentMap","fieldBlock","fieldWrap","fieldLabelStart","msgWrap","handleSwitchSection","xl","lg","md","FormControlLabel","labelPlacementStart","labelPlacement","control","RestaurantSchema","ReservesSystemSchemaCont","handleGetSectionsList","ReservesSystemSchema","selectorId","selectorSettingsSectionSchema","paperStyle","borderRadius","handleDeleteRestaurant","Delete","divider","closeButton","MuiDialogTitle","disableTypography","paddingRight","CloseIcon","DialogContent","MuiDialogContent","DialogActions","borderTop","MuiDialogActions","DeleteRestaurantModal","isOpen","handleCloseModal","Dialog","DialogTitle","ErrorOutline","DeleteRestaurant","handleSwitchModal","DeleteRestaurantMessages","_toolbarWarning","toolbarWarning","breakpoints","down","toolbarWarningBody","toolbarWarningContent","fontStretch","toolbarWarningTitle","toolbarWarningButton","alignSelf","outline","toolbarWarningDivider","minHeight","CashBoxWarning","PageHeaderWarning","CashBoxWarningComp","link","pL","paddingLeft","bntWrap","trashIcon","deleteBorder","firstCln","secondCln","thirdCln","handleOpenWidgetModal","handleCustomMsg","noWrap","textOverflow","CopyIcon","navigator","clipboard","writeText","EditIcon","isValidColor","RegExp","test","isValidName","isValid","every","parseHashSymbolIfNeeded","paper","paperEdit","desc","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","CustomPopover","ColorBox","inputFormats","disableAlpha","disableFocusRipple","firstRow","secondRow","thirdRow","fieldLabelMap","setFieldState","cloneDeep","set","changeData","_ref2$settings","onChangeBoolean","onChangeColor","renderCustomField","autoFocus","cl","handleCreateWidget","dividers","DialogContentText","WidgetSettings","widgetInfo","handleUpdateWidget","refererUrl","transformData","handleDeleteWidget","ReservesSystemWidgets","createWidgetModalIsOpen","editWidgetModalIsOpen","deleteWidgetModalIsOpen","newWidgetName","Widgets","WidgetCreateModal","WidgetEditModal","WidgetDeleteModal","_state$widgets","selectorRestaurant","selectorRestaurantId","useRestaurantId","useSelector","useCashboxQueryKey","Confirmation","onSubmit","Settings","isConfirmation","showConfirmation","useCashboxSettingsFeature","cashbox","_useQuery","useQuery","staleTime","enabled","queryKey","queryFn","isFetching","mapResponseToCashbox","useCashbox","deleteMutation","queryClient","useQueryClient","useHistory","useMutation","mutationFn","onSuccess","invalidateQueries","onError","useDeleteMutation","mutate","StyledTabs","Tabs","StyledTab","Tab","ReservesSystemSettingsPage","cashboxSettings","PageContentWrap","ReservesSystemAdditionalNotifications","ReservesSystemAutoBooking","ReservesSystemTables","ReservesSystemSchemePage","routeMap","scheme","SettingsPage","view","onTabChange","PageHeaderWrap","scrollButtons","indicatorColor","textColor","centered","CashBoxWarningCont","ReservesSystemPage","RestaurantSchemePage","StatisticsDateSelect","handleGetStatistics","onClickCustomDate","statisticDate","autoComplete","displayEmpty","selectEmpty","ListSubheader","Divider","customDate","RangeDatePicker","onDatesChange","startDate","endDate","handleDate","focusedInput","DayPickerRangeController","onFocusChange","noBorder","hideKeyboardShortcutsPanel","numberOfMonths","CustomDateModal","rangeDatePicker","btnStyle","changeDate","aria-labelledby","HomeCont","customDateModalOpen","StatisticDateSelect","onwProps","StatisticDateCont","InitMessages","handleClickOpen","FirstStepConnectSystemMessage","handleOpenConnectModal","pinCodeInfoContainer","pinCodeInfo","pinCodeView","btnMargin","pinCodeItem","seconds","timeCompleted","handleGetPinCode","connectedInfo","parsePinCode","ConnectSystemForm","handleRerunCountdown","showCountdown","renderCountdown","completed","PinCode","zeroPad","handleCloseConnectModal","component","Countdown","now","renderer","onComplete","contentText","tagStart","tagEnd","interpolation","escapeValue","dialogWidth","rulesText","ConnectInstruction","numWrap","num","numMetrics","columnHeader","stat","metric","metricsColor","isVisitor","plus","statisticItem","tableHeader","renderStats","scope","StatisticItem","scales","xAxes","gridLines","drawOnChartArea","lineWidth","ticks","yAxes","beginAtZero","callback","legend","maintainAspectRatio","Chart","datasets","borderColor","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","barThickness","Bar","HomeStatistics","StatisticsTable","ReserveStatisticChart","showFirstStep","showSecondStep","isNil","ConnectSystemMessage","ConnectSystemModal","datePickerWrap","bottom","leftIcon","settingsIcon","objectFit","FilterList","filterIsOpen","handleMenuClose","itemList","changeItems","Menu","sortable","EnhancedTableHead","handleFilterBy","onRequestSort","changeFilterState","handleChangeFilters","oldFilters","currentTarget","handleFilterSwitcher","sortDirection","TableSortLabel","FilterListIcon","ReserveList","handleRequestSort","handleSortBookingList","rowsPerPage","bookingInfoList","handleOpenEditReserveModal","emptyRows","role","tableRow","tableTimeWrap","tableTimeBanquetLabel","wordBreak","parseCreateDateFromBookingList","& td","handleChangeDate","parseDateFromBookingDatePicker","DatePicker","autoOk","TextFieldComponent","inputRef","onChangeDate","newDate","ArrowLeft","BookingDatePicker","ArrowRight","Booking","handleSwitchActives","Fab","AddIcon","bookingSelector","activeFilter","_state$booking","parseStat","toLocaleString","Pie","responsive","boxWidth","datalabels","tooltips","StatisticReserveTableHead","cell","reserveData","openedTableDate","checkData","completedDate","paidDate","receiptAmount","renderStatTable","renderOrders","amount","resultSum","renderCommentData","banquetLabel","StatisticsReserveTableItem","handleOpenBookingDetails","changeVisible","ReserveTime","textDecoration","Link","stateColor","ExpandLess","ExpandMore","Collapse","in","unmountOnExit","timeout","ReserveDetails","handleGetReserves","_React$useState","_React$useState2","setPage","_React$useState3","_React$useState4","setRowsPerPage","_React$useState5","_React$useState6","sortType","changeSortType","TablePagination","labelRowsPerPage","rowsPerPageOptions","count","backIconButtonProps","nextIconButtonProps","onChangePage","newPage","onChangeRowsPerPage","StatisticsCont","currentRestaurantId","StatisticTable","StatisticsDiagram","StatisticsReserveTable","titleWrap","actions","Theme","listWrapper","onChangeAddress","onChangeName","addressSuggestions","setAddressSuggestions","required","clearTimeout","ymaps","suggest","results","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","YandexMapComponent","Suspense","fallback","yandexGeoObject","CreateRestaurantModalComp","setName","setAddress","geocode","objects","properties","precision","handleAddRestaurant","geoData","kind","geoAddress","Address","country_code","Components","handleCloseDialog","_this$state2","SearchAddress","progress","CircularProgress","_ref$textAlign","whiteSpace","statisticsWrap","statisticRow","UserStatisticTableItem","roleWrap","roleTitle","activityDateWrap","infoWrap","userInfoWrap","statusWrap","statusWrap__deactivated","userIcon","userStatWrap","AccountCircle","UserStatisticsReserveTableItem","handelChangeSort","handleChangeSortType","UserStatisticReserveTableHead","GoBackButton","&:active","ButtonText","letterSpacing","BackButton","goBack","ArrowBack","UserStatisticCont","match","UserCard","UserStatisticTable","UserReserveTable","UserStatisticsCont","SourceStatisticReserveTableHead","SourceStatisticsReserveTableItem","nRowsPerPage","SourceCard","SourceStatisticTable","SourceReserveTable","linkColor","handleSendAuthReq","changeCred","href","handleSendSelectReq","selectOrg","org","topBorder","bottomBorder","ErrorMessageComp","AuthErrorMessages","FirstStep","SecondStep","AuthIikoModalComp","AuthIkkoModal","appBar","up","appBarShift","transition","transitions","easing","sharp","enteringScreen","menuButton","hide","drawer","flexShrink","drawerOpen","toolbar","mixins","snackbarContent","isDisabled","& .Mui-disabled","& label.Mui-disabled","& .MuiInput-underline.Mui-disabled:before","selectedRestaurant","data-name","HeaderComp","handleProfileMenuOpen","scheduleShakeReserves","appReservesOpen","widgetAppReservesCount","shakeReserves","scheduleShakeNotifications","notificationsCount","notificationsOpen","shakeNotifications","shakeReservesInterval","shakeNotificationsInterval","setInterval","clearInterval","appReservesCount","isMenuOpen","Boolean","renderMenu","reservesBadgeColor","notificationBadgeColor","RestaurantSelect","ItemWrap","restaurantSelectorIcon","PlaceholdersIcon","headerIcon","Badge","badgeContent","colorError","badge","shake","headerEditIcon","PushIcon","imageUrl","Avatar","headerUserIcon","UserIcon","NameStyle","@keyframes shake","10%, 90%","20%, 80%","30%, 50%, 70%","40%, 60%","animation","&:click","subMenuItem","subMenuText","wrapList","route","pathname","subMenu","showSubMenu","checkIsRestaurantItem","handleSwitchSubMenu","handleSwitchDrawerClose","isRestaurantItem","subMenuList","disablePadding","NavLink","ListItemIcon","fillRule","menuHeader","menuIcon","newReserveWrap","handleOpenReserveCreateModal","SideBarItem","HomeIcon","BookingIcon","StatisticIcon","CardIcon","isRegistrationCompleted","reservationsIsOpen","handleSwitchDrawerOpen","useTheme","matches","useMediaQuery","AppBar","Toolbar","MenuIcon","Drawer","alt","SideBar","Notifier","displayed","storeDisplayed","_ref$notifications","newSnacks","currentSnacks","notExists","_loop","_this$props$notificat","enqueueSnackbar","withSnackbar","CountdownWrapper","onReconnect","setInit","SocketErrorScreen","msg","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","RestaurantIcon","ArrowTop","ArrowBottom","TextFieldComp","staticValue","_ref$meta","meta","touched","errorAsHelperText","isError","textAreaCont","&& textarea","overflowX","_ref$rows","phoneField","firstCountryKey","setValue","firstTwo","firstThree","getCodePhoneNumber","codeValue","disableUnderline","codes","getPhoneCodes","formWrap","isClickableLabel","ReserveSectionSelect","allOptionDisabled","ReserveDatePicker","renderDate","isSame","disablePast","invalidLabel","emptyLabel","ReservePersonSelect","capacityList","person","ReserveTimeSelect","pastTime","FormHelperText","normalizeDurationHours","ReservesDataFields","onPropertyChange","_e$target","onReservePropertyChange","handleMergeTables","handleErrorMsg","onViewChange","canEdited","disabledEditBanquet","readonly","tabs","wrapContent","Field","_e$target2","fieldStyle","_e$target3","Box","mt","PhoneFieldComp","CircleCheckBox","TextAreaComp","mb","FormLabel","mr","_e$target4","normalize","pt","weight","durationFieldStyle","fieldEdit","headerTitleWrap","headerTitle","justHeaderTitle","btnEdit","banquetError","banquetErrorText","actionButton","buttonBorder","borderRight","reserveButton","& .MuiButton-label","&: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","Add","reduxForm","validate","errors","handleSubmit","handleGetFreeTables","handleViewChange","handleReject","reserveBtnText","rejectBtnText","selectedAppReserve","isEditStyles","buttons","UserFields","RestaurantView","genDurationFromHours","ReserveCreatePage","getTablesTimeout","currentValue","changeCurrentTime","newTime","handleSendReq","activeTablesIds","newTableType","_this$props5","changeSectionToFirstItem","_this$props6","appReserveFormValues","Reservations","initialValues","enableReinitialize","change","_state$reserveModal","ReserveConfirmPage","handleRejectReserve","updateReserveInfo","selectorGetTimeList","selector","appReserve","RejectBtn","DeleteReserveModal","ReserveEditPage","newActiveTable","activeTablesByID","reserveInfoForUpdate","compareTables","handleOpenRejectReserveModal","rejectModalIsOpen","handleCloseRejectReserveModal","_this$props7","_this$props8","ReserveConfirmModalCont","ReserveEditModalCont","ReserveCreateModalCont","fakeAvatar","clickableAvatar","clickableName","Header","clickPerson","onToggle","isGuest","nameClassNames","avatarClassNames","contentRoot","contentRootActive","contentMessage","SlideTransition","Slide","NotificationSnackbar","footer","names","Snackbar","transitionDuration","TransitionComponent","SnackbarContent","goToUser","BodyItem","rightIndent","totalVisits","CallBody","BodyVisits","secondaryButtonWrapper","& button","buttonWrapper","CallFooter","onRemove","onCreateReserve","commentIcon","ReserveBody","visitDate","MessageOutlined","& button:hover","ReserveFooter","onConfirm","onEdit","Notifications","onRemoveCall","onCreateReserveFromCall","onRemoveReserve","onConfirmReserve","onEditReserve","visibleCalls","foldHeight","unfoldHeight","CabinetPage","resetIdleTimer","withoutRestaurants","pathName","DrawerAndHeaderComp","notificationKey","itemId","Preloader","ReservationsPage","Route","exact","BookingCont","SourceStatisticCont","NotFoundPage","AddRestaurantModal","AuthIkkoModalCont","location","ProtectedRoute","renderProtected","routeProps","ProtectedComponent","Redirect","rest","render","pure","layout","logoText","ConfirmationPage","_this$props$auth","AuthWrapComp","Logo","contentTitle","contentBtn","UseRules","CheckBoxComp","EmailValidator","justify","AuthCont","handleSignIn","SigInForm","validateName","re","password2","regError","RegisterCont","handleSignUp","acceptRules","SubmissionError","_error","RegistrationForm","ResetPassword","handleRestorePassword","handleResend","RestorePasswordForm","success","contentDesc","password1","SendNewPassword","handleSendNewPassword","handelRedirectToLogin","History","NewPasswordForm","ownProps","Auth","Registration","ThanksYouPage","RulesPage","SnackbarProvider","maxSnack","variantInfo","CssBaseline","QueryClient","App","Provider","QueryClientProvider","Router","MuiThemeProvider","MuiPickersUtilsProvider","utils","MomentUtils","AppComp","_process$env","REACT_APP_SENTRY_DSN","REACT_APP_NAME","REACT_APP_VERSION","sentryConfig","dsn","environment","integrations","Integrations","BrowserTracing","tracesSampleRate","release","ReactDOM","getElementById","module","exports","__webpack_require__"],"mappings":"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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,GACG,mBAGHC,GAAe,CAC1BC,KAAM,OACNC,QAAS,UACTC,IAAK,OAGMC,GAAY,IAEZC,GAAc,IAEdC,GAAW,CACtBC,OAAQ,SACRC,QAAS,UACTC,UAAW,YACXC,SAAU,WACVC,OAAQ,SACRC,SAAU,WACVC,OAAQ,UAeGC,GAAyB,CACpCC,GAAI,CACFC,IAAK,KACLC,KAAM,KACNC,WAAY,gCACZC,YAAa,qEA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","file":"static/js/main.28c029a8.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';\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: true,\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 authorized: true,\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};\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};\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): Array => {\n const codes = Object.values(phoneCode).sort(sortPhoneCodeByTitle);\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';\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","/**\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\nexport {\n getPercentDiff,\n groupBy,\n getMoneySymbol,\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 INIT_END,\n CASHBOX_CONNECT_STATUS_SUCCESS,\n CASHBOX_PLUGIN_STATUS_SUCCESS,\n CHANGE_CUSTOM_DATE,\n CLOSE_MODAL,\n HIDE_WARNING,\n CREATE_RESTAURANT_ERROR,\n GET_RESTAURANT_LIST_ERROR,\n GET_RESTAURANT_LIST_SUCCESS,\n NEED_AUTH_FROM_IIKO,\n OPEN_MODAL,\n SHOW_WARNING,\n SET_CURRENT_RESTAURANT,\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 { getMoneySymbol } from '../helpers/helpers';\n\nexport const initState: ICabinetStore = {\n restaurantList: [],\n audioNotification: true,\n error: undefined,\n createRestaurantError: 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 currentRestaurant = action.payload.length > 0 ? action.payload[0] : undefined;\n\n return {\n ...state,\n restaurantList: action.payload,\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 SET_CURRENT_RESTAURANT: {\n const restaurant = _.find(state.restaurantList, { id: 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 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 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 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\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 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 * @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\nexport const getCashboxStatusRequest = (payload: GM.Cashbox.Request.Status) => {\n return api.get(\n `${ConfigAPI.restaurantCalls}/${payload.restaurantId}/plugin`,\n ).then(\n (r: GM.Cashbox.Response.Status.Success) => r,\n );\n};\n\nexport const getCashboxDeleteRequest = (payload: GM.Cashbox.Request.Delete) => {\n return api.delete(\n `${ConfigAPI.restaurantCalls}/${payload.restaurantId}/plugin/${payload.hwid}`,\n ).then(\n (r: GM.Cashbox.Response.Delete.Success) => r,\n );\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 Экшен для авторизации */\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\n/** @description Регистарция юзера */\nfunction* signUpSaga(action: IActionTypes.ISignUp) {\n try {\n yield Api.registerRestaurateurReq(action.payload);\n yield put(AuthActions.signUpSuccess());\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\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* 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 yield put(AuthActions.signInSuccess(User));\n history.push(Routers.home);\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\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\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 _ 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';\n\n/** @description Инициилазиция личного кабинета, собираем все данные нужные для работы */\nfunction* initCabinetSaga() {\n\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(restaurantId));\n // yield put(checkRestaurantFromIiko(restaurantId)); // Убрали в рамках задачи DEV-244\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 const { restaurantId } = action.payload;\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 const { restaurantId } = action.payload;\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 ],\n getCashBoxConnectStatusSaga,\n ),\n\n takeLatest(\n [\n CASHBOX_PLUGIN_STATUS_REQUEST,\n SET_CURRENT_RESTAURANT,\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 ) {\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\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 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 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 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';\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, message: action.error,\n },\n });\n }\n\n if (action.message) {\n yield put({\n type: ENQUEUE_SNACKBAR,\n notification: {\n ...messageBody, 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 {\n all, put, select, takeLatest,\n} 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 IUpdateSchedule,\n} from '../actions/schedules/ISchedulesAction';\nimport { customMessageShackBar } from '../actions/snackbars/SnackBarsActions';\n\n/** @description Загрузка расписания ресторана. */\nfunction* getScheduleSaga() {\n const currentRestaurant = yield select((state: IAppStore) => state.cabinet.currentRestaurant);\n\n try {\n const { restaurantSchedules, bookingSchedules } = yield getScheduleGroupReq(currentRestaurant.id)\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(SchedulesActionTypes.GET_SCHEDULE_LIST_REQUEST, getScheduleSaga),\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","// @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';\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(\n (state: IAppStore) => state.cabinet.currentRestaurant,\n );\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(currentRestaurant.id));\n yield put(getCashBoxPluginsStatus(currentRestaurant.id));\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 authorized = yield select((state: IAppStore) => state.auth.authorized);\n\n if (type !== INIT_START || !authorized) {\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 if (yield cancelled()) {\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';\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 currentRestaurant = yield select(state => state.cabinet.currentRestaurant);\n if (currentRestaurant && currentRestaurant.id) {\n yield put(\n fetchRestaurantCalls({\n restaurantId: currentRestaurant.id,\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 // @todo Протестировать смену ресторана (пока не видел где оно происходит)\n takeLatest(SET_CURRENT_RESTAURANT, updateCurrentRestaurantCallsSaga),\n takeLatest(GET_RESTAURANT_LIST_SUCCESS, 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 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}\n\nconst PageContentWrap: React.FC = ({\n classes, children, fullWidth, direction,\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}\n\nconst PageHeaderWarning: React.FC = ({\n classes, onClose, title, message,\n}) => (\n
\n
\n

\n {title}\n

\n

\n {message}\n

\n
\n
\n \n {locales.t('common.hide')}\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 { 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 { 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 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 = ({ onClose, onSubmit }) => (\n \n \n {locales.t('cashbox.settings.actions.delete.confirmation.title')}\n \n \n \n {locales.t('cashbox.settings.actions.delete.confirmation.description')}\n \n \n \n \n {locales.t('cashbox.settings.actions.delete.confirmation.cancel')}\n \n \n {locales.t('cashbox.settings.actions.delete.confirmation.submit')}\n \n \n \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 {\n onDelete: () => void;\n}\n\nconst SettingsComponent: React.FC = ({ classes, onDelete }) => {\n const [isConfirmation, showConfirmation] = useState(false);\n\n return (\n <>\n {isConfirmation && showConfirmation(false)} onSubmit={onDelete} />}\n\n \n
\n \n {locales.t('cashbox.settings.title')}\n \n \n {locales.t('cashbox.settings.description')}\n \n showConfirmation(true)}\n >\n {locales.t('cashbox.settings.actions.delete.title')}\n \n
\n
\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 \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 { useCashboxSettingsFeature } from '../features';\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\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {cashboxSettings}\n \n \n
\n \n
\n
\n
\n );\n};\n\nconst ReservesSystemSchemePage: React.FC = () => (\n \n \n \n \n \n);\n\ntype PageID = 'settings' | 'scheme'\n\nconst routeMap: {\n [view: string]: string\n} = {\n settings: Routers.reservesSystem,\n scheme: Routers.restaurantScheme,\n};\n\ninterface SettingsPageProps {\n view: PageID;\n}\n\nconst SettingsPage: React.FC = ({\n view,\n}) => {\n const history = useHistory();\n const onTabChange = useCallback((event: any, value: string) => {\n if (routeMap[value]) history.push(routeMap[value]);\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n {\n view === 'settings'\n ? \n : \n }\n \n );\n};\n\nexport const ReservesSystemPage: React.FC = () => (\n \n);\n\nexport const RestaurantSchemePage: React.FC = () => (\n \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 {\n statisticDate: IDate;\n handleGetStatistics: any;\n switchCustomDateModal: any;\n}\n\nclass StatisticsDateSelect extends PureComponent {\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
\n \n \n {locales.t('home.statistic.selectDate.title')}\n \n }\n displayEmpty\n name=\"statisticDate\"\n className={classes.selectEmpty}\n >\n \n {locales.t('home.statistic.selectDate.today')}\n \n \n {locales.t('home.statistic.selectDate.tomorrow')}\n \n \n \n \n \n {locales.t('home.statistic.selectDate.seven')}\n \n \n {locales.t('home.statistic.selectDate.fourteen')}\n \n \n {locales.t('home.statistic.selectDate.twentyEight')}\n \n \n {locales.t('home.statistic.selectDate.sixty')}\n \n \n \n \n \n { monthForPeriodPicker(dashBoardDates.firstMonth) }\n \n \n { monthForPeriodPicker(dashBoardDates.secondMonth) }\n \n \n { monthForPeriodPicker(dashBoardDates.currentMonth) }\n \n \n \n \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 \n \n \n
\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 {\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 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 {\n open: boolean;\n customDate: IDate;\n handleGetStatistics: (date: IDate) => void;\n switchCustomDateModal: () => void;\n}\n\nconst CustomDateModal: React.FC = (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 \n
\n \n
\n \n \n {locales.t('common.apply')}\n \n \n {locales.t('common.reject')}\n \n \n \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 {\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 \n \n\n \n \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 = ({ handleClickOpen }) => (\n \n
\n \n { locales.t('home.addRestaurantTitle') }\n \n \n { locales.t('home.initText1') }\n \n
\n \n { locales.t('home.initBtnAdd') }\n \n \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 = ({ handleOpenConnectModal }) => (\n \n
\n \n { locales.t('home.connectAutomationSystemTitle') }\n \n \n { locales.t('home.connectAutomationSystemText') }\n \n
\n \n { locales.t('home.connectBtn') }\n \n
\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 {\n pinCode?: string;\n minutes: string;\n seconds: string;\n timeCompleted: boolean;\n handleGetPinCode: () => void;\n}\n\nconst PinCodeView: React.FC = ({\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
\n { locales.t('home.pinCodeError') }\n \n { locales.t('home.getPinCodeAgainBtn') }\n \n
\n );\n\n return (\n
\n
\n { parsePinCode.map((item, index) => (\n \n { item }\n
\n )) }\n
\n
\n { (timeCompleted) ? error : connectedInfo }\n
\n
\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 \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
\n \n {locales.t('home.pinCodeSuccess')}\n \n \n {locales.t('home.pinCodeSuccessBtn')}\n \n
\n );\n }\n\n return (\n
\n {!pinCode && (\n
\n \n {locales.t('home.getPinCodeBtn')}\n \n
\n )}\n {pinCode && timeLeft && showCountdown\n && (\n console.log('timer end')}\n />\n )}\n
\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 {}\n\nconst ConnectInstruction: React.FC = ({ classes }) => (\n
\n \n
',\n tagEnd: '',\n interpolation: { escapeValue: false },\n }),\n }}\n />\n \n
\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 {\n modalOpen: boolean;\n pinCode?: string;\n timeLeft: number;\n handleGetPinCode: () => void;\n handleCloseConnectModal: () => void;\n connectStatus: boolean;\n}\n\nconst ConnectSystemModal: React.FC = ({\n classes,\n modalOpen,\n pinCode,\n timeLeft,\n handleGetPinCode,\n handleCloseConnectModal,\n connectStatus,\n}) => (\n \n \n { locales.t('home.connectFormTitle') }\n \n\n \n \n \n \n { locales.t('home.connectFormImportantDescription') }\n \n \n \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 {\n type: string;\n stat: number;\n metric?: number;\n}\n\nconst HomeStatisticItem: React.FC = ({\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
\n
\n
\n \n { type }\n \n
\n
\n \n { `${plus}${stat}${percent}`}\n \n {\n metric\n && (\n \n {`${(metric > 0) ? '+' : ''}${metric}%`}\n \n )\n }\n
\n
\n
\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 {\n statistic?: TStatistics;\n moneySymbol: string;\n}\n\nconst HomeStatisticsTable: React.FC = ({ 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
\n \n \n \n \n Успешные\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Отмена\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\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
\n \n
\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;\n moneySymbol: string;\n}\n\nconst HomeStatistics: React.FC = ({ statistic, attendance, moneySymbol }) => (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \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';\n\nclass HomeCont extends PureComponent {\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 // \n // \n // \n // );\n\n const isActive = !showFirstStep && !showSecondStep;\n\n const stepsComponents = () => {\n if (showFirstStep && !loading) {\n return (\n \n \n \n );\n } if (showSecondStep && !loading) {\n return (\n \n \n \n \n {/* { ServiceStatusComp } */}\n \n );\n }\n return (\n \n \n {/* { ServiceStatusComp } */}\n \n );\n };\n\n return (\n \n \n \n { locales.t('home.title') }\n \n { isActive && }\n \n \n\n { /* direction={isActive ? 'row' : 'column'} - нужно будет вернуть вместе с ServiceStatusComp */ }\n \n { stepsComponents() }\n \n\n \n \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,\n newFilters?: TFilterListItem,\n itemList?: TFilterListItem,\n ) => void;\n itemList: Array;\n}\n\ntype Props = OwnProps;\n\nconst FilterList: React.FC = ({\n anchorEl,\n filterIsOpen,\n handleMenuClose,\n itemList,\n}) => {\n const [items, changeItems] = useState>(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 handleMenuClose(e, items, itemList)}\n >\n {\n items.map(item => (\n onChange(item)}>\n onChange(item)}\n color=\"primary\"\n />\n { locales.t(`booking.filters.${item.value}`) }\n \n ))\n }\n \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 = ({\n order,\n orderBy,\n filters,\n handleFilterBy,\n onRequestSort,\n}) => {\n /** @description Выпадающий список фильтра */\n const [filter, changeFilterState] = useState({\n anchorEl: undefined,\n filterIsOpen: false,\n });\n\n /** @description Отправка запроса и закрытие списка фильтров */\n const handleChangeFilters = (\n e: React.SyntheticEvent,\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) => {\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 \n \n {rows.map(row => (\n \n {row.sortable\n ? (\n \n \n {row.label}\n \n \n )\n : (\n

\n \n {row.label}\n \n { row.filters && (\n \n \n \n \n \n \n \n \n )}\n

\n )\n }\n \n ))}\n
\n
\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 {\n bookingInfoList: Array;\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 {\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 \n \n \n\n \n { bookingInfoList.map((n: TReserve) => (\n handleOpenEditReserveModal(n)}\n role=\"checkbox\"\n tabIndex={-1}\n key={n.id}\n className={classes.tableRow}\n >\n \n { locales.t(`booking.status.${n.state}`) }\n \n \n
\n { n.isBanquet && (\n \n { locales.t('booking.banquet') }\n \n ) }\n { parseDateFromBookingList(n.date) }\n
\n
\n \n { n.persons }\n \n \n { parsingMergedTables(n.tables)}\n \n \n {(`${n.firstName} ${!_.isNull(n.lastName) ? n.lastName : ''}`) }\n \n \n { parsePhoneNumber(n.phone)}\n \n \n { n.comment }\n \n \n { parseCreateDateFromBookingList(n.createdDate) }\n \n \n { n.source.name }\n \n \n )) }\n { emptyRows > 0 && (\n \n \n \n ) }\n
\n
\n
\n );\n }\n}\n\nexport default withStyles(styles)(ReserveList);\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowLeftPath = (\n \n \n \n);\n\nexport default wrapWithPath(arrowLeftPath, '-3 0 17 17');\n","import React, { Fragment } from 'react';\nimport wrapWithPath from './wrapSvgPath';\n\nconst arrowRightPath = (\n \n \n \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 {\n currentStatisticDate: string;\n handleChangeDate: (d: any) => void;\n}\n\nconst BookingDatePicker: React.FC = ({ classes, currentStatisticDate, handleChangeDate }) => {\n const date: {\n date: string;\n day?: string;\n } = parseDateFromBookingDatePicker(currentStatisticDate);\n\n return (\n handleChangeDate(date && date.format())}\n TextFieldComponent={(props: any) => (\n \n \n { date.date }\n \n \n { `(${date.day})` }\n \n
\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 = (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
\n onChangeDate(0)}\n className={classes.marginRight}\n >\n \n \n \n onChangeDate(1)}\n className={classes.marginLeft}\n >\n \n \n
\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';\n\nclass Booking extends PureComponent {\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 \n \n
\n \n {locales.t('booking.title')}\n \n\n \n
\n\n
\n \n {locales.t('booking.onlyActive')}\n \n \n
\n
\n \n\n \n \n \n \n \n\n addAppReserve(new Reserve('APP'))}\n color=\"primary\"\n disabled={!currentRestaurant}\n >\n \n \n
\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): 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 {\n type: string;\n stat: number | string;\n color?: 'error' | 'primary';\n}\n\nconst StatisticItem: React.FC = ({\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
\n
\n
\n \n { type }\n \n
\n
\n \n { parseStat }\n \n
\n
\n
\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 = ({ statistic, classes, moneySymbol }) => (\n \n \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';\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\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';\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 {\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 from 'react';\n\nimport {\n withStyles, createStyles, WithStyles, Theme,\n} from '@material-ui/core/styles';\nimport TextField from '@material-ui/core/TextField';\nimport FormControl from '@material-ui/core/FormControl';\n\nimport locales from '../../../locales';\nimport { TRestaurant } from '../../../types/ICabinetStore';\n\nconst styles = (theme: Theme) => createStyles({\n formControl: {\n margin: '8px 0',\n [theme.breakpoints.up('md')]: {\n maxWidth: 440,\n },\n [theme.breakpoints.down('sm')]: {\n maxWidth: 300,\n },\n [theme.breakpoints.down(600)]: {\n display: 'none',\n },\n },\n});\n\nconst CustomField = withStyles({\n root: {\n '& .Mui-disabled': {\n color: '#f7f8fb',\n },\n '& label.Mui-disabled': {\n color: '#8d8d8d',\n },\n '& .MuiInput-underline.Mui-disabled:before': {\n borderBottom: 'none',\n // borderBottom: '1px solid',\n // borderBottomColor: '#8d8d8d',\n },\n },\n})(TextField);\n\ninterface IProps extends WithStyles<typeof styles>{\n setCurrentRestaurant: (id: number) => void;\n currentRestaurant?: TRestaurant;\n restaurantList: Array<TRestaurant>;\n}\n\n// TODO Нужно отрефакторить стили\nconst RestaurantSelect: React.FC<IProps> = ({\n classes,\n // restaurantList,\n currentRestaurant,\n // setCurrentRestaurant,\n}) => {\n // const [selected, changeSelected] = useState<number>(currentRestaurant ? currentRestaurant.id : 0);\n const selectedRestaurant = currentRestaurant\n ? `${currentRestaurant.name}, ${currentRestaurant.address.street}, ${currentRestaurant.address.home}`\n : '';\n\n // useEffect(() => {\n // changeSelected(currentRestaurant ? currentRestaurant.id : 0);\n // }, [currentRestaurant]);\n //\n // const onChange = (e: React.ChangeEvent<{ name?: string; value: any }>) => {\n // changeSelected(parseInt(e.target.value));\n // setCurrentRestaurant(parseInt(e.target.value));\n // };\n\n return (\n <FormControl fullWidth className={classes.formControl}>\n <CustomField\n label={locales.t('places.restaurantSelect')}\n value={selectedRestaurant}\n disabled\n />\n </FormControl>\n );\n\n // return (\n // <FormControl fullWidth className={classes.formControl}>\n // <InputLabel style={{ color: '#FFF', opacity: 0.5 }} htmlFor=\"restaurant-label-placeholder\">\n // { locales.t('places.restaurantSelect') }\n // </InputLabel>\n // <Select\n // fullWidth\n // value={selected}\n // onChange={onChange}\n // input={<Input name=\"currentRestaurant\" id=\"restaurant-label-placeholder\" />}\n // displayEmpty\n // name=\"currentRestaurant\"\n // >\n // { (restaurantList.length > 0)\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 // <MenuItem value=\"\">\n // <em>...</em>\n // </MenuItem>\n // )\n // }\n // </Select>\n // </FormControl>\n // );\n};\n\nexport default withStyles(styles)(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, { Component } from 'react';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\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 locales from '../../../locales';\nimport { signOut } from '../../../actions/auth/AuthActions';\nimport {\n openCreateModal, setCurrentRestaurant,\n} 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';\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 WithStyles<typeof styles>,\n IDispatchToProps,\n IMapsToPops\n{}\n\ninterface IState {\n anchorEl: any;\n shakeReserves: boolean;\n shakeNotifications: boolean;\n}\n\nclass HeaderComp extends Component<IProps, IState> {\n constructor(props: IProps) {\n super(props);\n\n this.state = {\n anchorEl: null,\n shakeReserves: false,\n shakeNotifications: false,\n };\n }\n\n componentDidMount() {\n window.setTimeout(() => {\n this.shakeReservesInterval = window.setInterval(() => {\n this.scheduleShakeReserves();\n }, 10000);\n }, 5000);\n\n this.shakeNotificationsInterval = window.setInterval(() => {\n this.scheduleShakeNotifications();\n }, 10000);\n }\n\n componentWillUnmount() {\n clearInterval(this.shakeReservesInterval);\n clearInterval(this.shakeNotificationsInterval);\n }\n\n handleProfileMenuOpen = (event: any) => {\n this.setState({ anchorEl: event.currentTarget });\n };\n\n handleMenuClose = () => {\n this.setState({ anchorEl: null });\n };\n\n scheduleShakeReserves = () => {\n const { appReservesOpen, widgetAppReservesCount } = this.props;\n\n if (widgetAppReservesCount > 0 && !appReservesOpen) {\n this.setState({ shakeReserves: true });\n\n setTimeout(() => {\n this.setState({ shakeReserves: false });\n }, 5000);\n }\n };\n\n scheduleShakeNotifications = () => {\n const { notificationsCount, notificationsOpen } = this.props;\n\n if (notificationsCount > 0 && !notificationsOpen) {\n this.setState({ shakeNotifications: true });\n\n setTimeout(() => {\n this.setState({ shakeNotifications: false });\n }, 5000);\n }\n };\n\n shakeReservesInterval: number | undefined;\n\n shakeNotificationsInterval: number | undefined;\n\n render() {\n const { anchorEl, shakeReserves, shakeNotifications } = this.state;\n\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 } = this.props;\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={this.handleMenuClose}\n >\n {/* <MenuItem onClick={this.handleMenuClose}>{ locales.t('common.profile') }</MenuItem> */}\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 <RestaurantSelect\n currentRestaurant={currentRestaurant}\n restaurantList={restaurantList}\n setCurrentRestaurant={setCurrentRestaurant}\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 <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={\n appReservesCount > 0 && appReservesOpen ? 'primary' : reservesBadgeColor\n }\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 <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 <IconButton\n onClick={this.handleProfileMenuOpen}\n >\n {\n user && user.imageUrl\n ? (\n <Avatar className={classes.headerUserIcon} />\n )\n : (\n <UserIcon className={classes.headerUserIcon} />\n )\n }\n </IconButton>\n </div>\n { renderMenu }\n </div>\n );\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\nconst index = withStyles(styles)(HeaderComp);\n\nexport default connect(mapStateToProps, mapDispatchToProps)(index);\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';\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 disabled: 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 disabled,\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 };\n\n return restaurantSubMenuRouters[pathname] === 'card';\n }, []);\n\n /**\n * @description Ручка для открытия/закрытия подменю\n * @param {Class} event - событие\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 return (\n <List\n className={classes.menu}\n >\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 <SideBarItem\n disabled={disabled}\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 <SideBarItem\n disabled={disabled}\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 <SideBarItem\n disabled={disabled}\n route={Routers.reservesSystem}\n pathname={pathname}\n showSubMenu={!disabled && 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={disabled ? undefined : [\n { name: locales.t('reservesSystem.title'), route: Routers.reservesSystem },\n { name: locales.t('restaurantSchema.title'), route: Routers.restaurantScheme },\n ]}\n />\n <Button\n disabled={disabled}\n className={classes.newReserveWrap}\n variant=\"contained\"\n color=\"primary\"\n onClick={handleOpenReserveCreateModal}\n >\n { locales.t('sideBar.newReserve') }\n </Button>\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 HeaderComp from '../HeaderComp';\nimport SideBar from '../../SideBar/SideBar';\nimport logo from '../../../images/logo.svg';\nimport { Routers } from '../../../config/constants';\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 /** @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 <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 <HeaderComp />\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 disabled={!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) continue;\n notExists = notExists || !currentSnacks.filter(({ key }) => newSnacks[i].key === key).length;\n }\n return notExists;\n }\n\n componentDidUpdate() {\n const { notifications = [] } = 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 this.props.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 this.props.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 {\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';\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 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 default:\n return phoneCode.ru.firstLabel;\n }\n }}\n >\n {getPhoneCodes(firstCountryKey).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, { Component, Fragment } from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { withStyles } from '@material-ui/core/styles';\n\nimport { IProps, IState } from './ICabinetPage';\nimport { Routers } from '../../config/constants';\nimport { ReservesSystemPage, RestaurantSchemePage } 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 styles from './styles';\nimport ReservationsPage from '../../pages/ReservationsPage';\nimport Notifications from '../../components/Common/Notifications';\nimport Reserve from '../../types/IAppReservesStore';\nimport { IRestaurantCall } from '../../types/IRestaurantCallsStore';\n\nclass CabinetPage extends Component<IProps, IState> {\n componentDidMount() {\n this.isInit();\n\n document.addEventListener('mousemove', this.resetIdleTimer);\n document.addEventListener('click', this.resetIdleTimer);\n document.addEventListener('keypress', this.resetIdleTimer);\n\n this.resetIdleTimer();\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousemove', this.resetIdleTimer);\n document.removeEventListener('click', this.resetIdleTimer);\n document.removeEventListener('keypress', this.resetIdleTimer);\n\n window.clearInterval(this.interval);\n }\n\n /**\n * @description Инициализация ЛК\n * - Инициализация ЛК\n * - Подключение по веб-сокету\n */\n isInit = () => {\n const { initStarting } = this.props;\n\n initStarting();\n };\n\n resetIdleTimer = () => {\n const { idle } = this.props;\n\n window.clearInterval(this.interval);\n this.interval = window.setInterval(idle, 10000);\n };\n\n interval: number | undefined;\n\n render() {\n const {\n classes,\n isInit,\n loading,\n modalOpen,\n cashBoxStatus,\n needAuthFromIiko,\n modalAuthIikoOpen,\n reservationsIsOpen,\n withoutRestaurants,\n pathName,\n\n notifications,\n notificationsOpen,\n\n removeNotification,\n toggleNotification,\n\n removeRestaurantCall,\n confirmOpenReserve,\n rejectOpenReserve,\n\n addAppReserve,\n calls,\n } = this.props;\n\n if (!isInit) {\n return <Preloader loading />;\n }\n\n return (\n <div className={classes.root}>\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 && notifications && (\n <Notifications\n items={notifications}\n onToggle={(key: string) => { toggleNotification(key); }}\n\n onRemoveCall={(notificationKey: string, itemId: number) => {\n removeRestaurantCall(itemId, true);\n }}\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\n onRemoveReserve={(notificationKey: string, itemId: number) => {\n rejectOpenReserve(itemId);\n }}\n\n onConfirmReserve={(notificationKey: string, itemId: number) => {\n confirmOpenReserve(itemId);\n }}\n\n onEditReserve={(notificationKey, reserve: Reserve) => {\n removeNotification(notificationKey);\n\n addAppReserve(reserve);\n }}\n />\n )}\n\n <Preloader loading={loading} />\n <SocketErrorScreen />\n <main className={classes.content}>\n {\n reservationsIsOpen\n ? <ReservationsPage />\n : (\n <Fragment>\n <Switch>\n <Route exact path={Routers.main} component={HomeCont} />\n <Route path={Routers.home} component={HomeCont} />\n <Route path={Routers.booking} component={BookingCont} />\n <Route path={Routers.reservesSystem} component={ReservesSystemPage} />\n <Route path={Routers.restaurantScheme} component={RestaurantSchemePage} />\n <Route path={Routers.statistics} component={StatisticsCont} />\n <Route path={`${Routers.userStatistics}/:phone`} component={UserStatisticCont} />\n <Route path={`${Routers.sourceStatistics}/:source`} component={SourceStatisticCont} />\n <Route component={NotFoundPage} />\n </Switch>\n {modalOpen ? <AddRestaurantModal /> : null}\n {needAuthFromIiko && modalAuthIikoOpen ? <AuthIkkoModalCont /> : null}\n </Fragment>\n )\n }\n </main>\n </div>\n );\n }\n}\n\nexport default withStyles(styles, { withTheme: true })(CabinetPage);\n","import { connect } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\n\nimport CabinetPage from './CabinetPage';\nimport { initStarting } 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 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\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 connect(mapStateToProps, mapDispatchToProps)(CabinetPage);\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, { 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 className={classes.logoText} variant=\"caption\" align=\"center\">\n { text }\n </Typography>\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, { 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={{ marginTop: '20px' }} 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 from 'react';\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 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 height: 46,\n width: 226,\n },\n contentDesc: {\n marginTop: 34,\n width: 226,\n },\n};\n\nconst ThanksYouPage = ({ classes }) => (\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}>\n Отправить ещё раз\n </Button>\n <Typography align=\"center\" variant=\"caption\" className={classes.contentDesc}>\n Не получается зарегистрироваться?\n Напишите нам на info@guestme.ru, мы поможем решить проблему\n </Typography>\n <UseRules />\n </AuthWrapComp>\n);\n\nexport default withStyles(styles)(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 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';\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 <ProtectedRoute path={Routers.main} component={CabinetPage} />\n <Route component={NotFoundPage} />\n </Switch>\n );\n}\n\nexport default index;\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'\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":""}