{"version":3,"sources":["_helpers/indexdb.persist.helper.js","_helpers/auth.helper.js","_api/api.js","_usercontext/user.context.js","_components/404.component.jsx","_components/spinner.component.jsx","enums.js","_components/badge.component.jsx","brand/api/prep.functions.js","brand/api/useBrandApi.js","brand/brand.info.avatar.jsx","_components/icon.component.jsx","_components/buttons/fab.button.jsx","_components/buttons/tooltip.icon.button.jsx","_components/navigation/navbar/action.component.jsx","_components/dialogs/confirm.dialog.jsx","_components/navigation/useravatar.component.jsx","subscriber/api/prep.functions.js","subscriber/api/useSubscriberApi.js","message/message.to.box.jsx","_components/dialogs/form.dialog.jsx","_components/labeled.input.component.jsx","_components/message.text.field.component.jsx","brand/settings/coupon/api/useCouponApi.js","brand/settings/coupon/coupon.multiselect.component.jsx","message/api/useMessageApi.js","message/message.send.dialog.jsx","message/actions/send.message.action.jsx","_components/navigation/navbar/page.navigator.action.component.jsx","brand/brand.subscriptions.component.jsx","pass/api/usePassApi.js","brand/brand.navbar.component.jsx","_components/error.component.jsx","message/actions/edit.message.action.jsx","message/actions/delete.message.action.jsx","_components/widgets/widget.row.component.jsx","_helpers/function.helper.js","_components/widgets/widget.label.component.jsx","_components/widgets/widget.paper.component.jsx","_components/buttons/refetch.button.jsx","_components/filter/filterselector/filter.selector.component.jsx","_components/widgets/widget.toolbar.component.jsx","message/widgets/messages.stats.large.widget.jsx","_helpers/async.func.helper.js","subscriber/charts/subscribers.timeline.chart.jsx","subscriber/widgets/subscribers.stats.large.widget.jsx","transaction/charts/transactions.timeline.chart.jsx","transaction/api/useTransactionApi.js","transaction/widgets/transactions.stats.large.widget.jsx","brand/pages/brand.page.jsx","_components/icon.label.component.jsx","brand/brand.info.card.jsx","_components/image.dropzone.component.jsx","settings/country/api/useCountryApi.js","settings/country/country.select.component.jsx","settings/city/api/useCityApi.js","settings/city/city.select.component.jsx","settings/district/api/useDistrictApi.js","settings/district/district.select.component.jsx","_forms/validateinput.js","_forms/useTextInput.js","_forms/useImageInput.js","_forms/useArrayInput.js","_forms/useSelectInput.js","_forms/useCheckInput.js","_forms/useLimitedTextInput.js","_forms/useColorPickerInput.js","_forms/useDateInput.js","_forms/useForm.js","brand/brand.form.jsx","brand/actions/brand.new.action.jsx","_components/toolbar/config.js","_components/filter/filterbar/filter.beforescope.component.jsx","_components/filter/filter.functions.js","_components/filter/filterbar/filter.daterange.component.jsx","_components/filter/filterbar/filter.daterangefuture.component.jsx","_components/filter/filterbar/filter.daterangeupdatestate.component.jsx","_components/filter/filterbar/filter.equals.component.jsx","_components/filter/filterbar/filter.oneof.component.jsx","_components/filter/filterbar/filter.minmax.component.jsx","_components/filter/filterbar/filter.agerange.component.jsx","_components/filter/filterbar/filter.staticoneof.component.jsx","_components/filter/filterbar/filter.staticminmax.component.jsx","_components/filter/filterbar/filter.column.component.jsx","_components/filter/filterbar/filter.bar.component.jsx","_components/search.box.component.jsx","_components/toolbar/sorter.component.jsx","_components/toolbar/toolbar.component.jsx","brand/brands.card.list.jsx","brand/pages/brands.page.jsx","pass/pass.select.component.jsx","brand/settings/coupon/coupon.config.type.radios.jsx","_components/color.picker.component.jsx","_components/label.switch.component.jsx","product/api/useProductApi.js","product/product.select.component.jsx","_components/number.textfield.component.jsx","_api/queries.js","settings/language/language.select.component.jsx","brand/settings/coupon/coupon.notification.form.jsx","brand/settings/coupon/coupon.notification.field.component.jsx","product/product.multiselect.component.jsx","settings/currency/currency.select.component.jsx","brand/settings/coupon/coupon.expire.notification.form.jsx","brand/settings/coupon/coupon.expire.notification.field.component.jsx","brand/settings/coupon/coupon.create.form.jsx","brand/settings/coupon/actions/create.action.jsx","brand/settings/coupon/actions/purge.action.jsx","brand/settings/coupon/coupon.edit.form.jsx","brand/settings/coupon/actions/edit.action.jsx","brand/settings/coupon/coupon.card.preview.component.jsx","_components/accordion.component.jsx","brand/settings/coupon/coupons.list.component.jsx","merchant/api/useMerchantApi.js","merchant/actions/merchant.changestatus.action.jsx","merchant/merchant.form.jsx","merchant/actions/merchant.edit.action.jsx","merchant/merchant.info.row.jsx","_components/table/config.js","_components/table/cell.renderer.component.jsx","_components/table/resizer.table.jsx","_components/table/header.table.jsx","_components/table/headergroup.table.jsx","_components/table/cell.table.jsx","_components/table/row.table.jsx","_components/table/body.table.jsx","_components/table/table.component.jsx","merchant/actions/merchant.new.action.jsx","foodics/api/useFoodicsApi.js","foodics/actions/foodics.syncmerchants.action.jsx","merchant/merchants.table.jsx","merchant/merchants.list.jsx","brand/settings/promo/promos.qr.size.select.component.jsx","brand/settings/promo/promos.qr.dialog.component.jsx","brand/settings/promo/api/usePromoApi.js","brand/settings/promo/actions/purge.action.jsx","brand/settings/promo/actions/changestatus.action.jsx","merchant/merchant.select.component.jsx","brand/settings/promo/promos.form.jsx","brand/settings/promo/actions/edit.action.jsx","brand/settings/promo/promos.list.item.jsx","brand/settings/promo/actions/create.action.jsx","brand/settings/promo/promos.list.jsx","brand/settings/campaign/campaign.list.jsx","brand/settings/relevancetext/api/useRelevancetextApi.js","brand/settings/relevancetext/actions/purge.action.jsx","brand/settings/relevancetext/relevancetext.edit.form.jsx","brand/settings/relevancetext/actions/edit.action.jsx","brand/settings/relevancetext/relevancetext.list.item.jsx","brand/settings/relevancetext/relevancetext.type.radios.jsx","merchant/merchant.with.location.select.component.jsx","brand/settings/relevancetext/relevancetext.create.form.jsx","brand/settings/relevancetext/actions/create.action.jsx","brand/settings/relevancetext/relevancetext.list.jsx","brand/settings/birthday/birthday.type.radios.jsx","brand/settings/birthday/api/useBirthdayApi.js","brand/settings/birthday/birthday.create.form.jsx","brand/settings/birthday/actions/create.action.jsx","brand/settings/birthday/actions/purge.action.jsx","brand/settings/birthday/birthday.edit.form.jsx","brand/settings/birthday/actions/edit.action.jsx","brand/settings/birthday/birthday.actions.list.item.jsx","brand/settings/birthday/birthday.actions.list.jsx","pass/pass.info.preview.jsx","pass/actions/pass.updatesubs.action.jsx","pass/actions/pass.createqr.action.jsx","brand/settings/pass.card.extended.component.jsx","brand/settings/brand.settings.pass.list.jsx","user/gender.select.component.jsx","_components/password.generator.component.jsx","user/usertype.radio.component.jsx","settings/permission/api/usePermissionApi.js","settings/permission/permission.form.jsx","settings/permission/permission.list.item.jsx","settings/permission/permissions.list.jsx","settings/role/api/useRoleApi.js","settings/role/role.form.jsx","settings/role/role.list.item.jsx","settings/role/roles.list.jsx","user/api/useUserApi.js","user/user.create.form.jsx","user/actions/user.new.action.jsx","user/user.edit.form.jsx","user/actions/user.edit.action.jsx","user/user.changepassword.form.jsx","user/actions/user.changepassword.action.jsx","user/actions/user.changestatus.action.jsx","user/user.info.row.jsx","foodics/actions/foodics.syncusers.action.jsx","user/users.table.jsx","user/users.list.jsx","brand/actions/brand.edit.action.jsx","brand/actions/brand.changestatus.action.jsx","brand/settings/brand.information.box.component.jsx","brand/settings/brand.settings.page.jsx","brand/widgets/top.brands.widget.jsx","brand/charts/brands.regions.treemap.chart.jsx","brand/widgets/brands.regions.chart.widget.jsx","_components/widgets/widget.line.component.jsx","_components/widgets/widget.column.component.jsx","message/widgets/messages.stats.medium.widget.jsx","dashboard/admin.dashboard.jsx","dashboard/brand.dashboard.jsx","dashboard/pages/dashboard.page.jsx","insights/pages/insights.page.jsx","finance/api/useFinanceApi.js","finance/sale/finance.sales.table.jsx","finance/invoice/finance.invoices.table.jsx","finance/payment/finance.payments.table.jsx","finance/invoiceitem/finance.invoiceitems.table.jsx","finance/installment/finance.installments.table.jsx","finance/subscription/finance.subscriptions.table.jsx","brand/brand.select.component.jsx","finance/invoice/invoice.form.jsx","finance/actions/finance.newinvoice.action.jsx","finance/invoice/invoice.select.component.jsx","finance/installment/installment.select.component.jsx","finance/payment/payment.form.jsx","finance/actions/finance.payment.action.jsx","finance/subscription/subscription.select.component.jsx","finance/sale/sale.form.jsx","finance/actions/finance.newsales.action.jsx","finance/pages/finances.page.jsx","login/pages/login.page.jsx","_components/navigation/navbar/navbar.component.jsx","_pagebase/page-base.page.jsx","pass/pages/pass.page.jsx","pass/pass.info.card.jsx","pass/pass.create.form.jsx","brand/settings/coupon/coupon.select.component.jsx","pass/cardtypes/stamp/stamp.form.jsx","pass/cardtypes/points/rounding.type.radio.component.jsx","pass/cardtypes/points/points.form.jsx","pass/cardtype.radio.component.jsx","pass/cardtypes/stamp/multistamp.form.jsx","pass/cardtypes/stamp/multistamp.field.jsx","pass/pass.campaign.form.jsx","pass/enrolldesign/field.type.radio.component.jsx","settings/country/country.multiselect.component.jsx","pass/enrolldesign/regexphone.field.form.jsx","pass/enrolldesign/add.field.component.jsx","pass/enrolldesign/add.language.component.jsx","pass/enrolldesign/edit.field.form.jsx","pass/enrolldesign/field.list.item.actions.jsx","pass/enrolldesign/field.list.item.component.jsx","_helpers/drag.drop.helper.js","pass/enrolldesign/enrollpreview/asset.item.component.jsx","pass/enrolldesign/enrollpreview/asset.list.component.jsx","pass/enrolldesign/enrollpreview/fields/text.field.component.jsx","pass/enrolldesign/enrollpreview/fields/select.field.component.jsx","pass/enrolldesign/enrollpreview/fields/email.field.component.jsx","pass/enrolldesign/enrollpreview/fields/radio.field.component.jsx","pass/enrolldesign/enrollpreview/fields/maskeddate.field.component.jsx","pass/enrolldesign/enrollpreview/fields/maskedphone.field.component.jsx","pass/enrolldesign/enrollpreview/fields/maskedtext.field.component.jsx","pass/enrolldesign/enrollpreview/fields/regexphone.field.component.jsx","pass/enrolldesign/enrollpreview/_helpers/localization.helper.js","pass/enrolldesign/enrollpreview/fields/intphone.field.component.jsx","pass/enrolldesign/enrollpreview/_forms/useFormInput.js","pass/enrolldesign/enrollpreview/_forms/useForm.js","pass/enrolldesign/enrollpreview/_forms/useFormConsent.js","pass/enrolldesign/enrollpreview/field.list.component.jsx","pass/enrolldesign/enrollpreview/consent.component.jsx","pass/enrolldesign/enrollpreview/consent.list.component.jsx","pass/enrolldesign/enrollpreview/submit.button.component.jsx","pass/enrolldesign/enrollpreview/language.selector.component.jsx","pass/enrolldesign/enrollpreview/enroll.preview.jsx","pass/enrolldesign/enrolldesign.form.jsx","_components/image.folder.dropzone.jsx","pass/pass.design.form.jsx","pass/pass.create.wizard.jsx","pass/actions/pass.new.action.jsx","pass/passes.card.list.jsx","pass/pages/passes.page.jsx","foodics/actions/foodics.syncproducts.action.jsx","product/product.localization.item.component.jsx","product/product.language.select.component.jsx","product/product.localization.form.jsx","product/product.option.form.jsx","product/product.option.item.component.jsx","product/product.options.form.jsx","product/product.extra.form.jsx","product/product.extra.item.component.jsx","product/product.extras.form.jsx","product/product.category.localization.item.component.jsx","product/product.category.localization.form.jsx","product/product.category.form.jsx","product/product.category.select.component.jsx","product/product.form.jsx","product/actions/product.new.action.jsx","product/products.table.jsx","product/pages/products.page.jsx","_helpers/preference.helper.js","settings/country/country.list.item.jsx","settings/country/country.form.jsx","settings/country/country.list.jsx","settings/city/city.list.item.jsx","settings/city/city.form.jsx","settings/city/city.list.jsx","settings/district/district.list.item.jsx","settings/district/district.form.jsx","settings/district/district.list.jsx","settings/country/pages/country-city-district.page.jsx","settings/permission/pages/permissions.page.jsx","settings/role/pages/roles.page.jsx","settings/reseller/api/useResellerApi.js","settings/reseller/reseller.select.component.jsx","settings/users/system.users.form.jsx","settings/users/actions/system.user.new.action.jsx","settings/users/actions/system.user.edit.action.jsx","settings/users/system.users.page.jsx","settings/reseller/reseller.brands.multiselect.component.jsx","settings/reseller/reseller.form.jsx","settings/reseller/actions/reseller.new.action.jsx","settings/reseller/actions/reseller.edit.action.jsx","settings/reseller/resellers.page.jsx","settings/settings.page.jsx","campaign/campaign.applayout.context.js","campaign/applayouts/action.button.component.jsx","campaign/applayouts/fieldvariants/text.field.component.jsx","campaign/applayouts/fieldvariants/stepper.field.component.jsx","campaign/applayouts/fieldvariants/amount.field.component.jsx","campaign/applayouts/applayout.field.list.component.jsx","campaign/applayouts/applayout.page.jsx","campaign/campaign.run.custom.jsx","campaign/actions/campaign.run.custom.action.jsx","subscriber/actions/subscriber.void.action.jsx","subscriber/actions/subscriber.unvoid.action.jsx","subscriber/actions/subscriber.purge.action.jsx","subscriber/actions/subscriber.updatepass.action.jsx","subscriber/actions/subsciber.sync.foodics.aciton.jsx","subscriber/actions/subscriber.sync.loyverse.action.jsx","subscriber/actions/subscriber.sync.edm.action.jsx","subscriber/actions/subscriber.action.list.jsx","subscriber/actions/subscriber.coupon.remove.action.jsx","subscriber/actions/subscriber.coupon.update.expiration.action.jsx","subscriber/subscriber.coupons.table.jsx","subscriber/subscriber.messages.table.jsx","subscriber/subscriber.note.box.jsx","subscriber/subscriber.pass.preview.jsx","transaction/transaction.info.row.jsx","subscriber/subscriber.transactions.table.jsx","subscriber/pages/subscriber.page.jsx","subscriber/subscriber.selected.actions.jsx","subscriber/subscriber.info.row.jsx","subscriber/subscriber.pass.info.row.jsx","subscriber/subscribers.table.jsx","subscriber/pages/subscribers.page.jsx","transaction/transaction.subs.info.row.jsx","campaign/api/useCampaignApi.js","transaction/transactions.table.jsx","transaction/pages/transactions.page.jsx","user/pages/users.page.jsx","_helpers/ga.collector.helper.js","app.jsx","i18n.js","_usercontext/apptheme.context.js","index.js"],"names":["persistWithIndexedDB","queryClient","a","IndexedDBKey","throttleTime","maxAge","buster","window","App_Version","saveCache","throttle","storageCache","timestamp","Date","now","cacheState","dehydrate","set","JSON","stringify","getQueryCache","subscribe","get","cacheStorage","cache","parse","expired","busted","del","hydrate","func","wait","timer","setTimeout","gettoken","localStorage","getItem","storetoken","_token","setItem","clearstorage","clear","loadtoken","token","valid","Boolean","Math","floor","getTime","expires_in","tokenshouldrefresh","hastoken","authorization","token_type","access_token","authdata","ClientKey","process","ClientSecret","axios","defaults","baseURL","headers","post","withCredentials","timeout","interceptors","request","use","config","url","data","auth","Authorization","AccessToken","RefreshToken","refresh_token","includes","refreshtoken","location","replace","error","Promise","reject","response","removeItem","Data","status","message","Message","signin","signout","path","put","patch","delete","UserContext","createContext","UserProvider","props","useQueryClient","useState","setToken","user","setUser","useMutation","credentials","onSuccess","signingIn","isLoading","signinError","signIn","mutate","useQuery","enabled","staleTime","fetchingUserInfo","isFetching","fetchUserError","callSignOut","signingOut","Provider","value","signOut","hasPermissions","useCallback","permissions","Permissions","some","p","children","PageNotFound","Stack","sx","height","width","alignItems","justifyContent","Typography","variant","gutterBottom","Button","href","Spinner","size","CircularProgress","thickness","defaultProps","Enums","usertypes","adminusertypes","brandusertypes","merchantusertypes","systemusertypes","cardtypes","roundingtypes","fieldtypes","campaigntypes","relevancetexttypes","birthdaytypes","couponconfigtypes","color","Active","Archived","Churned","Demo","Foodics","Omni","Loyverse","EDM","Franchise","languagecode","partners","currencysymbols","subscriberstatus","merchantstatus","productstatus","pages","Badge","label","Box","bgcolor","borderRadius","direction","px","style","fontSize","sleep","msec","resolve","prepBransData","brandrawdata","brandssubsstats","brandstranstats","brandchurnstats","chunksize","index","brands","length","brand","subsstats","find","Id","transtats","churnstats","push","FirstSubscriberTime","FirstSubscriber","LastSubscriberTime","LastSubscriber","SubscriberCount","FirstTransactionTime","FirstTransaction","LastTransactionTime","LastTransaction","TransactionCount","ChurnStats","useBrandApi","enqueueSnackbar","useSnackbar","t","useTranslation","useFetchBrands","useFetchBrandsRaw","useFetchBrand","brandhash","useFetchBrandsRegionStats","then","chartdata","activecount","thisweekcount","thismonthcount","churnedcount","forEach","item","createdat","moment","CreatedAt","Status","month","year","week","Region","findIndex","region","countryindex","Country","y","x","name","active","churned","thisweek","thismonth","useFetchTopBrands","type","useCreateBrand","newBrand","invalidateQueries","refetchInactive","onError","useUpdateBrand","Brand","variables","Hash","useChangeBrandStatus","parseInt","PartnerBadge","Partner","OpaqueId","Chip","icon","BrandInfoAvatarSkeleton","gap","minHeight","Skeleton","animation","BrandInfoAvatar","brandData","useContext","useParams","history","useHistory","matches","useMediaQuery","theme","breakpoints","up","_brandhash","BrandHash","fetchedBrandData","_isLoading","onClick","UserType","mr","Avatar","alt","src","BrandLogoUrl","noWrap","Name","pl","cursor","Config","IntegrationPartner","Icon","FabButton","disabled","Fab","TooltipIconButton","title","IconButton","cloneElement","Tooltip","Action","isOpen","selected","loading","ListItem","button","ListItemIcon","ListItemText","primary","Link","underline","backgroundColor","placement","MenuItem","LoadingButton","startIcon","Transition","React","forwardRef","ref","Slide","Confirm","confirmmessage","submitting","handleSubmit","open","onClose","Dialog","TransitionComponent","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","SideMenuAvatar","confirmOpen","setConfirmOpen","toggleConfirmOpen","py","BrandUserAvatar","down","spacing","FullName","TopMenuAvatar","Divider","ListItemAvatar","secondary","UserAvatar","prepSubscriber","subscriber","pass","stamppass","multistamppass","coupons","items","additionalcolumns","payload","fields","Designs","sort","pd","Default","Fields","subcoupons","filter","field","GetValueFrom","IdForValue","Label","StampCount","Header","id","accessor","filterorder","hidden","exportorder","Balance","Points","values","StaticValue","split","msindex","isNaN","stampcount","ms","Type","sum","reduce","c","Count","prepSubsData","subs","passes","stamppasses","multistamppasses","merchants","auxcolumns","subscribers","genders","countBy","SubscriberList","s","Gender","Object","keys","row","minWidth","maxWidth","disableGlobalFilter","disableResizing","shops","MerchantId","dobs","DateOfBirth","sortType","disableFilters","sub","PassId","merchant","subpass","auxfields","i","AuxFields","Value","format","undefined","Age","isValid","diff","Merchant","PassName","RowItems","Payload","uniqBy","prepSubsForMessageData","AcceptsNoti","To","BarcodeValue","NameSurname","PassHash","passname","group","count","useSubscriberApi","useVoidSubscriber","_","refetchQueries","exact","useUnvoidSubscriber","useSyncSubscriber","useSyncLoyverseSubscriber","useSyncEDMSubscriber","usePurgeSubscriber","useFetchSubscriber","subshash","useFetchSubscriberMessages","messagetype","select","d","NotificationTypeId","useFetchSubscriberCoupons","useFetchSubscribers","key","query","getQueryState","getQueryData","substranstats","useFetchSubscribersForMessage","useFetchSubscriberStats","passhash","refetchOnMount","useFetchSubscribersStampPassesOfSubscriber","hash","useEditSubscriberNote","note","useSearchSubscriber","searchtext","useFetchSubscribersInfiniteScroll","limit","staticFilters","useInfiniteQuery","pageParam","search","queryPayload","map","fetchQuery","queryKey","queryFn","passList","cacheTime","subscoupons","getNextPageParam","lastPage","retry","useRemoveCouponFromSubscriber","Subscriber","useUpdateCouponExpiration","ExpireTime","useFetchSubscriberExpireLog","subhash","renderRow","dataSet","inlineStyle","top","hasOwnProperty","ListSubheader","component","Checkbox","checkedIcon","marginRight","checked","OuterElementContext","OuterElementType","outerProps","ListboxComponent","other","itemData","itemCount","getChildSize","child","gridRef","useRef","useEffect","current","resetAfterIndex","useResetCache","b","outerElementType","innerElementType","itemSize","overscanCount","StyledPopper","styled","Popper","autocompleteClasses","listbox","boxSizing","padding","margin","MessageToBox","required","helperText","onChange","onFocus","onBlur","Autocomplete","multiple","limitTags","clearOnEscape","clearOnBlur","disableListWrap","PopperComponent","renderOption","option","state","renderGroup","params","isOptionEqualToValue","fullWidth","options","getOptionLabel","groupBy","toUpperCase","getOptionDisabled","disableCloseOnSelect","newvalues","remove","o","renderTags","getTagProps","all","to","onDelete","renderInput","rows","autoComplete","placeholder","InputProps","endAdornment","FormDialog","fullScreen","contentText","onSubmit","submitDisabled","submitText","additionalActions","position","right","LabeledInputField","multiline","visible","otherProps","fontWeight","MessageTextField","maxCharLength","FormHelperTextProps","bottom","textAlign","inputProps","maxLength","paddingBottom","useCouponApi","useFetchCoupons","useUpdateCoupon","Coupon","useCreateCoupon","newCoupon","usePurgeCoupon","ListItemCoupon","onIncrease","onDecrease","disablePadding","secondaryAction","coupon","ListItemButton","ImageUrl","Title","Description","CouponMultiSelect","setValues","_values","_value","getValue","openOnFocus","uniq","v","val","useMessageApi","useSendMessage","useFetchSingleMessage","ScheduledTime","isAfter","useUpdateMessage","useSendUpdate","useFetchMessages","useFetchMessageStats","totalBulk","totalNoti","BulkCount","NotiCount","totals","Bulk","Noti","AveragePerBulk","toFixed","_todayfiltered","isSame","today","mindate","maxdate","itemcount","useDeleteMessage","IssueCouponBox","watch","control","setValue","couponBoxOpen","setCouponBoxOpen","toggleBoxOpen","e","target","defaultValue","rules","validate","render","fieldProps","isSubmitting","formState","fieldState","FormControlLabel","Switch","Collapse","in","onExit","newvalue","splice","LocalizationProvider","dateAdapter","DateAdapter","isSameOrAfter","isBefore","expireTimeError","DateTimePicker","clearable","ampm","mask","inputFormat","minDateTime","startAdornment","order","InputAdornmentProps","marginLeft","ScheduleMessageBox","scheduledBoxOpen","setScheduledBoxOpen","pt","add","unmountOnExit","SendMessageDialog","useForm","mode","shouldUnregister","reValidateMode","defaultValues","register","updating","updateMessage","mutateAsync","sending","sendMessage","CouponExpireTime","locale","SendMessageAction","messageFormOpen","setMessageFormOpen","toggleMessageFormOpen","PageNavigator","removeScrollCache","useLocation","pathname","BrandSubscriptionsNavigator","anchorEl","setAnchorEl","closeMenu","selectedpage","showdroparrow","event","currentTarget","openMenu","xs","sm","md","PaperProps","elevation","overflow","content","display","left","transform","zIndex","transformOrigin","horizontal","vertical","anchorOrigin","List","usePassApi","useCreatePass","newPass","useCreateQRCode","passId","Channel","useFetchPass","useFetchPasses","useFetchPassWithDetails","results","useQueries","birthdayactions","relevancetexts","isError","refetch","useFetchPassDesign","useCreateCampaign","newCampaign","useFetchEnroll","useCreateEnroll","newEnroll","Pass","useUpdateAllSubscribers","useFetchCampaigns","useFetchBrandCampaigns","useCustomActionCampaign","endpoint","Menu","BrandNavBar","getPages","isSystemUser","flexGrow","Error","MessageEditAction","openEdit","setOpenEdit","reset","Backdrop","DeleteMessageAction","deleting","deleteMessage","handleConfirmOpen","WidgetRow","overflowX","msOverflowStyle","scrollbarWidth","abbreviateNumber","Intl","NumberFormat","notation","getLuma","code","substring","rgb","WidgetLabel","secondvalue","secondvariant","secondcolor","thirdvalue","thirdvariant","thirdcolor","align","arrow","toLocaleString","WidgetPaper","disableBg","boxShadow","RefetchButton","fetching","FilterSelector","showSelected","filters","onFilterSelect","default","setSelected","header","selectFilter","small","buttonsize","medium","textvariant","large","WidgetToolbar","onExpand","onInsight","localization","expand","insights","MessageActions","handleClose","anchorPosition","MessageItem","isScheduled","disableGutters","primaryTypographyProps","textOverflow","whiteSpace","MessagesStatsLargeWidget","Trans","i18nKey","components","bold","sumBy","overflowY","useAsyncFunc","asyncFunction","executenow","setState","execute","catch","isRunning","isIdle","chart","toolbar","autoSelected","show","zoom","redrawOnParentResize","redrawOnWindowResize","animations","xaxis","tooltip","yaxis","labels","formatter","colors","stroke","curve","legend","horizontalAlign","onItemClick","toggleDataSeries","onItemHover","highlightDataSeries","dataLabels","markers","optionsLine","brush","selection","fill","gradient","opacityFrom","opacityTo","tickAmount","SubscribersTimeLineChart","series","New","Deleted","Enrolled","ATWClicked","prepWidgetData","widgetdata","thisMonth","Total","iOS","Android","Pending","stat","Blocked","DailyAverage","prepChartData","UnixTime","SubscribersStatsLargeWidget","setFilter","runchartdata","runwidgetdata","parseFloat","TransactionsTimeLineChart","Stamps","Loyalty","CouponRedeems","Failed","CouponIssued","SubscriberUpdated","Events","Rollback","useTransactionApi","useFetchTransactions","from","useFetchTransactionsWithDate","startdate","enddate","useFetchTransactionsInfiniteScroll","campaigns","users","dateFilter","unix","res","TransactionsList","useFetchTransactionsSpecificDate","date","useFetchTransactionStats","useFetchTransactionStatsDetailed","usePurgeTransaction","transaction","Success","CouponRedeem","TransactionsStatsLargeWidget","TabPanel","tabValue","setTabValue","lg","Tabs","newValue","Tab","IconLabel","RouterLink","String","substr","rel","BrandCard","hasPermission","locationlabel","City","District","border","borderColor","transition","maxHeight","borderTopLeftRadius","borderTopRightRadius","MemberSince","ImageDropZone","errorMessage","setErrorMessage","fileType","imgHeigth","imgWidth","fixedImageSize","fileSize","initialImage","ignoreSizeCheck","dimensionErrorText","sizeErrorText","typeErrorText","handleImageChange","transparent","imageUrl","setImageUrl","onDrop","acceptedFiles","file","image","Image","addEventListener","URL","createObjectURL","fetch","blob","reader","FileReader","onloadend","result","onerror","readAsDataURL","dataUrl","useDropzone","getRootProps","getInputProps","isDragActive","useCountryApi","useFetchCountries","CountrySelect","handleChange","prev","DistrictId","CityId","autoSelect","disableClearable","useCityApi","useFetchCities","countryid","CitySelect","useDistrictApi","useFetchDistricts","cityid","DistrictSelect","intphoneformats","validateinput","Required","Format","test","toLowerCase","Regex","_regex","_date","DateFormat","StartDate","EndDate","startDate","endDate","isBetween","useTextInput","validating","validateForm","handleError","_field","useMemo","nested","Placeholder","validationtext","ValidationText","helpertext","HelperText","dot","pick","setValid","touched","setTouched","focused","setFocused","handleValidation","_valid","str","handleFocus","handleBlur","useImageInput","override","useArrayInput","newArray","indexOf","useSelectInput","useCheckInput","useLimitedTextInput","isLimited","useDateInput","errors","setErrors","mounted","setMounted","_errors","useTextFieldInput","useLimitedTextFieldInput","useDatePickerFieldInput","useCheckFieldInput","useImageFieldInput","useArrayFieldInput","useSelectableFieldInput","useColorInput","useColorPickerInput","BrandForm","newbrand","actiontitle","dialogtitle","creating","createBrand","updateBrand","form","CompanyName","BrandTypeId","SectorTypeId","ContactPersonName","ContactPersonPhone","ContactPersonEmail","BrandWebsite","LanguageId","CurrencyId","Timezone","Address","PostalCode","CountryId","LogoBase64","AppBar","Toolbar","edge","dividers","flexDirection","Container","SelectProps","native","brandtype","sector","orientation","flexItem","language","currency","Array","timezone","partner","BrandNewAction","formOpen","setFormOpen","toggleFormOpen","FilterBeforeScope","column","filterValue","Popover","role","getScopeDatesInUnix","scope","startOf","endOf","subtract","minMaxFilterFn","rowValue","min","max","dateRangeFilterFn","calcRange","scopeFilterFn","isSameOrBefore","ageRangeFilterFn","beforeScopeFilterFn","oneOfFilterFn","momentSortFn","rowA","rowB","columnId","FilterDateRange","StaticDateRangePicker","displayStaticWrapperAs","allowSameDateSelection","disableAutoMonthSwitching","startProps","endProps","console","log","maxDate","FilterDateRangeFuture","minDate","FilterDateRangeUpdateState","disableFuture","readOnly","FilterEquals","closeFilter","uniquevalues","Set","preFilteredRows","FilterOneOf","join","dense","isArray","changeFilter","tabIndex","disableRipple","FilterMinMax","setMin","setMax","divider","inputMode","my","ageranges","FilterAgeRange","FilterOneOfStatic","filterLabelAccessor","filterIdAccessor","filterQuery","hideIf","FilterMinMaxStatic","every","FilterColumn","filterfunc","FilterBar","columns","filteredcolumns","sortedcolumns","canFilter","StyledInputBase","InputBase","lineHeight","transitions","create","SearchBox","searchingFor","onSearch","onSearchValue","onSearchChange","debounceTime","useAsyncDebounce","alpha","InputAdornment","visibility","htmlColor","TableSorter","sortedcolumcount","isSorted","badgeContent","overlap","labe","canSort","getSortByToggleProps","TableSortLabel","isSortedDesc","clearSortBy","ToolBar","avatar","rowCount","filteredRowCount","addAsIconButton","addAction","csvData","onCsvExport","onExcelExport","showFilterBar","showSorter","onBack","onAddNew","selectedRowsActions","beforeItems","afterItems","beforeActions","afterActions","totalRowCount","close","back","separator","asyncOnClick","textDecoration","filename","toLocaleDateString","done","isDataEmpty","addnew","BrandsCardList","initialState","parentRef","scrollingRef","currentBreakpoint","setCurrentBreakpoint","disableSortBy","TypeId","autoRemove","useTable","autoResetGlobalFilter","autoResetFilters","sortTypes","filterTypes","oneof","daterange","futuredaterange","beforescope","useGlobalFilter","useFilters","useSortBy","allColumns","prepareRow","setGlobalFilter","useTheme","getCurrentBreakpoint","innerWidth","xl","handleResize","removeEventListener","getItemPerRow","getCalculatedRowCount","ceil","scrollToFn","offset","canSmooth","instance","start","scrollTop","startTime","requestAnimationFrame","run","elapsed","progress","easeInOutQuint","interpolated","elementScroll","rowVirtualizer","useVirtualizer","overscan","estimateSize","initialOffset","getScrollElement","globalFilter","onScroll","clearTimeout","scrollOffset","getTotalSize","getVirtualItems","virtualRow","itemPerRow","slice","Grid","container","Brands","PassSelect","CouponConfigTypeRadios","Notifications","tempNotifications","setTempNotifications","FormControl","FormLabel","RadioGroup","SendMessage","UpdateSubscriber","Radio","FormHelperText","ColorPicker","hex","setColor","background","disableAlpha","onChangeComplete","LabelSwitch","labelPlacement","useProductApi","useFetchProducts","useCreateCategory","newCategory","useUpdateCategory","Category","useMoveUpCategory","category","useMoveDownCategory","useCreateProduct","newProduct","useUpdateProduct","Product","useArchiveProduct","producthash","useActivateProduct","useFetchActiveProducts","useFetchCategories","useFetchProduct","refetchOnWindowFocus","filterOptions","createFilterOptions","ProductSelect","Barcode","NumberField","availableKeys","onKeyDown","lengthOfValue","preventDefault","useLanguages","LanguageSelect","NotificationForm","addNotification","updateNotification","setSelectedResponseParameter","selectedResponseParameter","NotificationText","Language","LanguageNotRequired","clearValues","CouponNotificationField","lengthOfSplitted","fieldName","deleteNotification","newNotifications","n","notification","className","ProductMultiSelect","opaqueid","CurrencySelect","ExpireNotificationForm","day","CouponExpireNotificationField","CouponReminder","mt","ScheduleTime","DisplayCouponCardDesign","Card","Design","BgColor","CardContent","TextColor","pr","disableElevation","disableFocusRipple","disableTouchRipple","textTransform","RedeemButtonText","CouponCreateForm","isFoodics","foodicsInitialValues","FoodicsRewardType","FoodicsMaxDiscountAmount","FoodicsDiscountIsPercent","FoodicsDiscountAmount","FoodicsAllowedProducts","Quantity","initialValues","ConfigType","RewardType","CanUseAllDay","Second","Minute","Hour","Day","Month","Year","FoodicsMaxDiscount","FoodicsDiscount","FoodicsDiscountIsPercentage","FoodicsAllowedProductsQuantity","RewardValue","createCoupon","showExpireRule","setShowExpireRule","isPercent","isNotificationsEmpty","ExpireRule","CouponCreateAction","CouponPurgeAction","purging","purgeCoupon","CouponEditForm","configType","formData","updateCoupon","CouponEditAction","editCouponForm","setEditCouponForm","handleOpenEditForm","CouponCardPreview","CardMedia","Accordion","TransitionProps","expanded","enter","exit","borderBottomLeftRadius","borderBottomRightRadius","borderBottom","AccordionSummary","expandIcon","AccordionDetails","MuiAccordionDetails","borderTop","CustomAccordion","handleExpand","CouponsList","mb","pb","useMerchantApi","useFetchMerchants","useCreateMerchant","newMerchant","useUpdateMerchant","useArchiveMerchant","useActivateMerchant","useFetchActiveMerchants","useFetchMerchant","merchanthash","MerchantChangeStatusAction","toggleConfirm","archiving","archiveMerchant","activating","activateMerchant","prompt","MerchantForm","newmerchant","createMerchant","updateMerchant","ContactPerson","ContactEmail","ContactPhone","Latitude","Longitude","MerchantEditAction","MerchantRow","rowColors","cells","fieldid","linethrough","original","rowheight","virtualrowheight","CellRenderer","cell","ColumnResizer","resizerprops","canResize","getResizerProps","getHeaderProps","userSelect","HeaderGroup","headerGroup","tableWidth","getHeaderGroupProps","flex","borderBottomColor","borderTopColor","TableCell","getCellProps","TableRow","getRowProps","TableBody","fetchMoreOnBottomReached","IndeterminateCheckbox","indeterminate","rest","defaultRef","resolvedRef","Table","noToolBar","selectAllRows","toolBarSize","showFilterPanel","isSelectable","enableSelectIf","SelectedRowsActions","preference","toolbarProps","rect","useRect","observe","setCsvData","tableColumns","tableData","defaultCanFilter","autoResetHiddenColumns","minmax","agerange","defaultColumn","Cell","visibleColumns","getToggleAllRowsSelectedProps","getToggleRowSelectedProps","useResizeColumns","useFlexLayout","useRowSelect","headerGroups","totalColumnsWidth","selectedFlatRows","setHiddenColumns","calculateExportableColumns","exportableColumns","disableExport","prepareCsvData","exportedRow","toolbarHeight","sheet","headerRow","accessorValue","dataRow","indexOfColumn","entries","generateExcel","selectedRows","selectRows","MerchantNewAction","useFoodicsApi","useFetchInfo","useFetchSyncMenu","useFetchSyncMerchant","useFetchSyncUser","FoodicsSyncMerchantsAction","merchantSync","syncingMerchants","MerchantTable","UpdatedAt","downloadascsv","MerchantList","doNotCollapse","unMountOnExit","SizeSelect","InputLabel","Select","SizedQRCodes","promo","renderAs","EnrollUrl","level","includeMargin","QrDialog","toggleDialog","setSize","enrollHash","pop","pngUrl","document","getElementById","toDataURL","downloadLink","createElement","download","body","appendChild","click","removeChild","downloadPNG","svg","source","XMLSerializer","serializeToString","match","encodeURIComponent","downloadSVG","navigator","clipboard","writeText","usePromoApi","useFetchPromos","useUpdatePromo","Promo","useCreatePromo","newPromo","usePurgePromo","useActivatePromo","useArchivePromo","PromoPurgeAction","purgePromo","PromoChangeStatusAction","activatePromo","archivePromo","isActive","MerchantSelect","PromoForm","newpromo","createPromo","updatePromo","PromoEditAction","openEditForm","setOpenEditForm","handleEditForm","PromosListItem","setOpen","PromoCreateAction","openCreateForm","setOpenCreateForm","handleCreateForm","PromoList","CampaignListItem","campaign","CampaignName","CampaignType","CampaignList","useRelevancetextApi","useFetchRelevanceTexts","useCreateRelevancetext","newRelevancetext","useUpdateRelevancetext","Relevancetext","usePurgeRelevancetext","relevancetext","RelevancetextPurgeAction","purgeRelevancetext","RelevancetextEditForm","updateRelevancetext","RelevancetextEditAction","rt","RelevancetextListItem","RelevantText","MerchantName","RelevancetextTypeRadios","MerchantWithLocationsSelect","customData","merchantid","allSelected","RelevancetextCreateForm","createRelevancetext","typeOfLocationMessage","RelevancetextCreateAction","RelevancetextList","BirthdayTypeRadios","disableSpecificRadio","useBirthdayApi","useFetchBirthdayActions","useCreateBirthdayAction","newBirthdayAction","useUpdateBirthdayAction","BirthdayAction","usePurgeBirthdayAction","birthday","BirthdayCreateForm","MessageTime","createBirthdayAction","fetchingCoupons","typeOfBirthdayAction","wdith","otherFieldProps","BirthdayCreateAction","BirthdayPurgeAction","purgeBirthdayAction","BirthdayEditForm","updateBirthdayAction","MessageText","Coupons","BirthdayEditAction","ba","BirthdayActionListItem","BirthdayActionsList","Field","LabelColor","Order","PassPreview","design","designs","withQR","passName","HasPassLogo","LogoUrl","LogoText","f","StripImageUrl","ShowBarcodeValue","PassUpdateButton","updateAllSubscribers","PassCreateQRButton","passid","isSuccess","PassCardExtended","opacity","PassList","Password","_options","numbers","uppercase","excludeSimilarCharacters","generator","generate","UserTypeRadios","usertypelisttype","usePermissionApi","useFetchPermissions","useAddPermission","newPermission","useUpdatePermission","permission","useDeletePermission","useFetchRolePermissions","roleid","useAddPermissionToRole","selectedRole","permissionid","useRemovePermissionFromRole","PermissionForm","newpermission","createRole","updateRole","PermissionName","GroupName","PermissionItemActionMenu","menuOpen","toggleForm","deletePermission","PermissionListItem","actions","checkboxes","working","onItemCheck","PermissionValue","PermissionsList","addNew","checkedItems","selectedItems","disabledItems","workingItems","groupnames","groupname","useRoleApi","useFetchRoles","useAddRole","newRole","useUpdateRole","useDeleteRole","useFetchPermissionsOfRoleList","roleids","roles","flatten","r","ro","RoleForm","newrole","RoleName","RoleItemActionMenu","deleteRole","RolesListItem","RoleValue","RolesList","useUserApi","useFetchSystemUsers","useFetchUsers","useFetchResellers","UserTypeId","useFetchUser","useCreateUser","newUser","useUpdateUser","User","useArchiveUser","useActivateUser","useChangeUserPassword","Newpassword","UserCreateForm","createUser","MerchantHash","Birthday","Phone","Email","Roles","handleRoleSelect","handlePermissionSelect","permsofroles","checkRole","checkPermission","UserNewAction","UserEditForm","systemuser","updateUser","UserEditAction","UserChangePasswordForm","password","setPassword","changing","changePassword","UserChangePasswordAction","UserChangeStatusAction","archiveUser","activateUser","UserRow","FoodicsSyncUsersAction","userSync","syncingUsers","UsersTable","goBack","UserList","BrandEditAction","BrandChangeStatus","action","confirmStatus","setConfirmStatus","closeConfirm","changeStatus","InformationRow","link","BrandInformationBox","DateTimeFormat","BrandSettings","setExpanded","panel","newExpanded","TopBrandsWidget","BrandName","events","dataPointSelection","w","globals","initialSeries","seriesIndex","dataPointIndex","cachedState","BrandsRegionsTreeMapChart","paddingLeft","BrandsRegionsChartsWidget","gotoclients","WidgetLine","hidefalsy","WidgetColumn","MessagesStatsMediumWidget","AdminDashboard","BrandDashboard","Dashboard","Insights","memo","useFinanceApi","useFetchSubscriptions","useFetchInstallments","useFetchInvoiceItems","useFetchInvoices","useFetchPayments","useFetchSales","useConvertCurrency","useCreatePayment","newPayment","useUpdatePayment","Payment","useCreateSale","newSale","useUpdateSale","Sale","useCreateInvoice","newInvoice","useUpdateInvoice","Invoice","SubscriptionsTable","SubscriptionId","SubscriptionScopeId","SubscriptionTypeId","ListPriceCurrencyId","DeCreatedAtletedAt","BilledAt","FinishedAt","LeadCreatedAt","NotifyMeAt","PayedAt","RenewsAt","StartedAt","columnfilter","InvoicesTable","CashierPartnerId","CustomerTypeId","PaymentMethod","IssuedAt","DueAt","PaymentsTable","AccountId","ExpenseCurrencyId","InvoiceItemsTable","InstallmentsTable","BrandSelect","InvoiceForm","invoice","InvoicedFrom","newinvoice","convertedUSD","createInvoice","updateInvoice","UsdPrice","rates","BillTo","InvoiceNumber","TaxNo","Notes","VatPercent","Vat","InvoiceMethod","paymentmethod","cashierpartner","customertype","FinanceNewInvoiceAction","InvoiceSelect","InstallmentSelect","BrandId","PaymentForm","payment","newpayment","createPayment","updatePayment","Amount","UsdAmount","Expense","UsdExpense","Installment","USDAmount","ExchangeRate","FromAccount","USDExpense","accounttype","FinanceNewPaymentAction","SubscriptionSelect","SaleForm","sale","newsale","createSale","updateSale","Price","Subscription","ListPrice","subscriptionscope","subscriptiontype","FinanceNewSalesAction","selectedTab","Finances","setSelectedTab","Login","loginform","Username","usernameformfield","passwordformfield","handleSignIn","handleKeyDown","keyCode","backgroundPosition","backgroundSize","backgroundRepeat","Paper","Alert","severity","HamburgerMenu","drawerOpen","setDrawerOpen","toggleDrawer","Drawer","anchor","ListMenu","Pages","NavBar","largemedia","enableColorOnDark","marginTop","Page","PassCard","outline","PassCreateForm","handleNext","setError","CreateBarcode","createPass","PassTypeIdentifier","step","CouponSelect","StampForm","CardTypeId","createCampaign","MaxNumberOfStamps","StampWithStepperConfig","GetStampCountFromParameter","AverageMonetaryValue","CalculateMonetaryValue","RewardNotificationText","StampNotificationText","RoundingTypeRadios","PointsForm","GetAmountFromParameter","GetSpendingPointsFromParameter","CollectPointsWhileSpending","CollectPointsFromDiscountedAmount","SetDiscountAmountToMaxWhenLargerThanAmount","RoundingValue","SetCampaignResponse","WhenCollectPointsText","WhenSpendPointsText","WhenCollectAndSpendPointsText","collectPointsWhileSpending","CardTypeRadios","MultiStampForm","addStamp","updateStamp","setSelectedStamp","selectedStamp","MultiStampField","deleteStamp","newStamps","stamp","PassCampaignForm","passHash","brandHash","CardType","FieldTypeRadios","CountryMultiSelect","Code","RegexPhoneFieldForm","selectedForm","Variant","PlaceHolder","InputType","Countries","isRequired","ValueTexts","Values","prevState","newState","Form","newField","indexOfSelectedForm","Forms","DefaultFields","InputMask","AddField","openRegex","setOpenRegex","handleOpenRegex","MenuList","onAddField","Languages","Directive","Dir","SubmitButton","Sticks","AddLanguage","enroll","selectedLanguage","onAddLanguage","onDeleteLanguage","EditFieldForm","FieldListItemActions","handleEdit","newFields","m","FieldListItem","moveField","debounceValue","throttleHover","monitor","dragIndex","hoverIndex","hoverBoundingRect","getBoundingClientRect","hoverMiddleY","clientOffset","getClientOffset","hoverClientY","useDrop","accept","collect","handlerId","getHandlerId","hover","drop","useDrag","isDragging","drag","useDragDrop","country","AssetItem","asset","TextStyle","Text","AssetList","selectedform","Assets","TextInputField","useInput","Shrink","shrink","InputLabelProps","SelectField","EmailField","RadioField","MaskedDateField","autoCorrect","maskChar","MaskedPhoneField","alwaysShowMask","MaskedTextField","RegexPhoneField","countrycode","phoneformats","iso2","dialcode","reg","IntPhoneField","selectedCountry","setSelectedCountry","clearData","NativeSelect","disableUnderline","isrequired","RegExp","validateRegexPhone","formattedphone","phonenumber","checklist","union","isValidPhoneNumber","parsePhoneNumber","setValidating","isvalid","tmperrors","clearForm","Consents","inputtype","fieldItem","formValue","setIsValid","isTouched","setIsTouched","isFocused","setIsFocused","checkvalid","formattedvalue","tmpfields","useFormInput","useConsent","consent","consents","tmpconsents","useFormConsent","InputField","FieldList","orderBy","Consent","FormGroup","flexWrap","ConsentList","LanguageSelector","languagelist","setSelectedLanguage","Breadcrumbs","lang","EnrollPreview","createTheme","palette","Theme","paper","main","text","ThemeProvider","EnrollForm","navigatorlanguagecode","userLanguage","getLanguage","getSelectedForm","setSelectedForm","prevValues","newValues","dragField","newLanguage","EnrollDesignForm","toBase64","ImageFolderDropZone","imageFolder","setImageFolder","sortBy","PassDesignForm","PassCreateWizard","activeStep","setActiveStep","setPassHash","setBrand","prevActiveStep","steps","description","Stepper","labelProps","isStepFailed","optional","Step","StepLabel","StepContent","PassNewAction","PassesCardList","isTableToolbar","Passes","FoodicsSyncProductsAction","menuSync","syncingMenus","ProductLocalizationItem","editLocalization","deleteLocalization","Zoom","ProductLanguageSelect","availableLanguages","l","ProductLocalizationForm","setLocalizationValues","localizations","brandLanguage","selectedLocalization","setSelectedLocalization","handleCancel","LocalizationName","LocalizationDescription","LocalizationNotes","newLocalizations","Localization","updateLocalization","newLocalization","addLocalization","ProductOptionForm","setOptionValues","newOption","newOptions","Options","Items","ProductOptionItem","editOption","deleteOption","deleteOptionItem","optionItem","paddingTop","ProductOptionsForm","selectedOption","setSelectedOption","handleClear","OptionTitle","Key","uniqueId","ProductExtraForm","extra","setExtraValues","newExtra","newExtras","Extras","ProductExtraItem","editExtra","deleteExtra","deleteExtraItem","extraItem","ProductExtrasForm","extras","selectedExtra","setSelectedExtra","ExtraTitle","CategoryLocalizationItem","CategoryLocalizationForm","ProductCategoryForm","onCreated","ParentId","newcategory","createCategory","updateCategory","handleOnSuccess","categoryhash","CategorySelect","canCreate","newCategoryName","setNewCategoryName","handleForm","inputValue","filtered","isExisting","handleFilterOptions","handleOptionChange","ProductForm","newproduct","createProduct","updateProduct","ImageBase64","ThumbnailBase64","newId","setNewId","ThumbnailUrl","ProductNewAction","ProductsTable","brandInfo","fetchingBrandInfo","loadingBrandInfo","hiddenColumns","Products","usePreference","initvalue","pref","setPref","init","CountryListItem","CountryForm","newcountry","CountryList","CityListItem","city","CityForm","newcity","CityList","DistrictListItem","district","DistrictForm","newdistrict","DistrictList","CityDistrict","selectedCity","setSelectedCity","citysubtitle","districtsubtitle","borderRight","editable","setSelectedRole","workingPermissons","setWorkingPermissons","addPermissionToRole","removePermissionFromRole","useResellerApi","useFetchResellersBrands","resellerHash","useCreateReseller","newReseller","useUpdateReseller","reseller","ResellerSelect","SystemUsersForm","ResellerHash","ResellerBrands","SystemUserNewAction","SystemUserEditAction","SystemUsers","BrandMultiSelect","offerhash","ResellerForm","createReseller","updateReseller","ResellerNewAction","ResellerEditAction","Resellers","Settings","indicatorColor","renderTab","CampaignAppLayoutContext","CampaignAppLayoutProvider","methods","actionResponse","dialogOpen","setDialogOpen","selectedCampaign","setSelectedCampaign","selectedPageIndex","setSelectedPageIndex","subscriberRegex","fieldRegex","payloadRegex","replaceText","subscriberMatches","fieldMatches","payloadMatches","page","AppLayouts","goTo","pageIndex","handleOpenDialog","handleCloseDialog","checkCondition","string","Function","ActionButton","useFormContext","openConfirm","setOpenConfirm","actionName","SubscriberId","CampaignId","Resolve","PayloadField","PayloadFieldType","preparePayload","route","CampaignResponse","Response","GoTo","Caption","TextField","TextInput","MaxLength","StepperField","isDisabled","useController","StartFrom","MinStep","MaxStep","inputRef","SubText","Increment","AmountField","pattern","NumericInput","Max","Min","leftSide","rightSide","isVisible","isEnabled","AppLayoutFieldList","AppLayoutPage","IconUrl","CaptionText","DescriptionText","InputFields","Actions","RunCustomCampaign","RunCustomCampaignAction","ml","SubscriberVoidAction","voiding","voidSubscriber","SubscriberUnvoidAction","unvoiding","unvoidSubscriber","SubscriberPurgeAction","purgeSubscriber","SubscriberUpdatePassAction","sendUpdate","SubscriberSyncFoodicsAction","synchronizing","syncUser","SubscriberSyncLoyverseAction","SubscriberSyncEDMAction","SubscriberActionList","canSync","syncComponent","PushToken","SubscriberCouponRemoveAction","removing","removeCoupon","SubscriberCouponUpdateExpirationAction","updateCouponExpiration","SubscriberInfoRow","CouponName","SubscriberCouponsTable","RedeemedAt","SubscriberMessagesTable","NotificationTime","DeliveryTime","SubscriberNote","Note","noteText","setNoteText","editing","editSubscriberNote","SubscriberPassPreview","PassPreviewFields","TransactionRow","TransactionTypeId","Point","ReturnCode","ActionValue","InsertedCouponCount","SpentPoints","SubscriberCouponId","SubscriberTransactionsTable","TransactionType","ActionType","getTransactionType","CompleteTime","SubscriberTitle","warningText","OSType","loadingSubscriberInfo","fetchingSubscriberInfo","subscriberInfoError","branddata","brandInfoError","expireLog","htmlFor","charAt","LastPassUpdatedAt","DeletedAt","SelectedSubscriberActions","filteredSelectedRows","SubscriberRow","Item","SubscriberPassInfoRow","SubscribersTable","setStaticFilters","fetchNextPage","hasNextPage","flattenedAuxColumns","flat","flattenedAdditionalColumns","flattenedData","containerRefElement","scrollHeight","clientHeight","SubscriberTime","searchValue","Subscribers","TransactionSubscriberRow","useCampaignApi","useFetchCampaings","useUpdateCampaign","Campaign","setQueryData","old","useArchiveCampaign","useActivateCampaign","usePurgeCampaign","TransactionsTable","SubscriberHash","Transactions","Users","GAPageCollector","gaInitialized","setGaInitialized","ReactGA","initialize","send","hitType","PageRoute","App","QueryClient","defaultOptions","queries","QueryClientProvider","client","CssBaseline","maxSnack","DndProvider","backend","HTML5Backend","initialIsOpen","i18n","initReactI18next","I18nextBrowserLanguageDetector","fallbackLng","whitelist","resources","ar","login","arLogin","arActions","enums","arEnums","arErrors","arLabels","prompts","arPrompts","returncodes","arReturncodes","he","heLogin","heActions","heEnums","heErrors","heLabels","hePrompts","heReturncodes","en","enLogin","enActions","enEnums","enErrors","enLabels","enPrompts","enReturncodes","AppThemeContext","AppThemeProvider","browserlanguage","dir","setDir","languages","setLanguages","muiTheme","light","success","hint","MuiSkeleton","styleOverrides","rounded","responsiveFontSizes","toggleLanguage","cacheRtl","createCache","stylisPlugins","prefixer","rtlPlugin","ReactDOM","fallback"],"mappings":"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","file":"static/js/main.08b3a126.chunk.js","sourcesContent":["import { dehydrate, hydrate } from 'react-query/hydration';\nimport { get, set, del } from 'idb-keyval';\n\nexport const persistWithIndexedDB = async (queryClient,\n {\n IndexedDBKey = 'REACT_QUERY_OFFLINE_CACHE',\n throttleTime = 1000,\n maxAge = 1000 * 60 * 60 * 24,\n buster = window?.App_Version || ''\n }\n) => {\n if (typeof window !== 'undefined') {\n // Subscribe to changes\n const saveCache = throttle(() => {\n const storageCache = {\n buster,\n timestamp: Date.now(),\n cacheState: dehydrate(queryClient)\n };\n set(IndexedDBKey, JSON.stringify(storageCache)); // set in Indexed DB\n }, throttleTime);\n\n queryClient.getQueryCache().subscribe(saveCache);\n\n // Attempt restore\n const cacheStorage = await get(IndexedDBKey); // get from Indexed DB\n\n if (!cacheStorage)\n return;\n\n const cache = JSON.parse(cacheStorage);\n\n if (cache.timestamp) {\n const expired = Date.now() - cache.timestamp > maxAge;\n const busted = cache.buster !== buster;\n if (expired || busted)\n del(IndexedDBKey); // Delete from Indexed DB\n else\n hydrate(queryClient, cache.cacheState);\n }\n else\n del(IndexedDBKey);\n }\n}\n\nexport const clearIndexedDB = async () => await del('REACT_QUERY_OFFLINE_CACHE');\n\nconst throttle = (func, wait = 100) => {\n let timer = null;\n\n return () => {\n if (timer === null) {\n timer = setTimeout(() => {\n func();\n timer = null;\n }, wait);\n }\n };\n}\n","export const gettoken = () => JSON.parse(localStorage.getItem('bw-live-user-auth-token'));\nexport const storetoken = (_token) => localStorage.setItem('bw-live-user-auth-token', JSON.stringify(_token));\nexport const cleartoken = () => localStorage.removeItem('bw-live-user-auth-token');\nexport const clearstorage = () => localStorage.clear();\n\nexport const loadtoken = () => {\n const token = gettoken();\n const valid = (token)\n ? Boolean((Math.floor(new Date().getTime() / 1000) - token.expires_in) < -60)\n : false;\n\n const tokenshouldrefresh = (token)\n ? !valid\n : false\n\n return {\n hastoken: Boolean(token),\n token: token,\n valid: valid,\n tokenshouldrefresh: tokenshouldrefresh,\n authorization: token ? `${token.token_type} ${token.access_token}` : null,\n }\n}","import axios from 'axios';\nimport { loadtoken, storetoken, gettoken, clearstorage } from '../_helpers/auth.helper'\n\nconst SERVER_DOMAIN = process.env.REACT_APP_API_URL;\nconst CLIENT_KEY = process.env.REACT_APP_API_KEY;\nconst CLIENT_SECRET = process.env.REACT_APP_API_SECRET;\n\nconst authdata = { ClientKey: CLIENT_KEY, ClientSecret: CLIENT_SECRET };\n\naxios.defaults.baseURL = SERVER_DOMAIN;\naxios.defaults.headers.post['Content-Type'] = 'application/json';\naxios.defaults.headers['Accept'] = 'application/json';\naxios.defaults.withCredentials = false;\naxios.defaults.timeout = 1000 * 60 * 2; // Two minutes\n\naxios.interceptors.request.use(\n async (config) => {\n if (config.url === '/OAuth/authorize')\n config.data = JSON.stringify(authdata);\n else if (config.url === '/OAuth/login') {\n await auth();\n config.headers.Authorization = localStorage.getItem('bw-live-client-auth-token');\n }\n else if (config.url === '/OAuth/refresh-token')\n config.data = JSON.stringify({ AccessToken: gettoken().access_token, RefreshToken: gettoken().refresh_token });\n else if (config.url.includes('currencyfreaks')) {\n config.headers.Authorization = null;\n }\n else if (config.url === '/OAuth/logout') {\n const token = loadtoken();\n config.headers.Authorization = token.authorization;\n config.data = JSON.stringify({ RefreshToken: gettoken().refresh_token });\n }\n else {\n const token = loadtoken();\n\n if (token.tokenshouldrefresh) {\n await refreshtoken();\n const token = loadtoken();\n config.headers.Authorization = token.authorization;\n }\n else if (!token.hastoken)\n window.location.replace('/login');\n else\n config.headers.Authorization = token.authorization;\n }\n\n return config\n },\n error => Promise.reject(error)\n);\n\n// Add a response interceptor\naxios.interceptors.response.use(\n response => {\n if (response?.config?.url === '/OAuth/authorize')\n localStorage.setItem('bw-live-client-auth-token', `${response.data.token_type} ${response.data.access_token}`);\n else if (response?.config?.url === '/OAuth/login') {\n storetoken(response.data);\n localStorage.removeItem('bw-live-client-auth-token');\n }\n else if (response?.config?.url === '/OAuth/refresh-token')\n storetoken(response.data.Data);\n else if (response.config?.url.includes('currencyfreaks')) {\n return response.data;\n }\n else if (response?.config?.url === '/OAuth/logout')\n clearstorage();\n\n return response?.data?.Data;\n },\n error => {\n if (error?.config?.url === '/OAuth/login')\n localStorage.removeItem('bw-live-client-auth-token');\n\n if (error?.config?.url === '/OAuth/refresh-token') {\n clearstorage();\n window.location.replace('/login');\n }\n\n if (error.response) {\n if (error.response.status === 404)\n return Promise.reject({ message: error.message, status: 404 });\n\n if (error.response.status === 400)\n return Promise.reject({ message: error.response.data.Message, status: 400 });\n\n if (error.response.status === 500)\n return Promise.reject({ message: error.response.data.Message, status: 500 });\n\n // TODO: Control other http return codes\n return Promise.reject({ message: error.message, status: error.response.status });\n }\n else if (error.request)\n return Promise.reject({ message: 'Network Error - No Connection', status: 0 });\n else\n return Promise.reject({ message: 'Network Error - Please check your connection', status: 0 });\n });\n\n\nexport const auth = async () => await axios.post('/OAuth/authorize');\nexport const signin = async (data) => await axios.post('/OAuth/login', data)\nexport const signout = async () => await axios.post('/OAuth/logout')\nexport const refreshtoken = async () => await axios.post('/OAuth/refresh-token')\nexport const get = async (path) => await axios.get(path);\nexport const post = async (path, data) => await axios.post(path, data);\nexport const put = async (path, data) => await axios.put(path, data);\nexport const patch = async (path, data) => await axios.patch(path, data);\nexport const del = async (path) => await axios.delete(path);","import React, { createContext, useCallback, useState } from 'react';\nimport { useQueryClient, useQuery, useMutation } from 'react-query';\n\n// Helpers\nimport { loadtoken } from '../_helpers/auth.helper';\nimport { signin, signout, get } from '../_api/api';\n\nexport const UserContext = createContext();\n\nexport const UserProvider = (props) => {\n const queryClient = useQueryClient();\n const [token, setToken] = useState(loadtoken());\n const [user, setUser] = useState(null);\n\n const { isLoading: signingIn, error: signinError, mutate: signIn } = useMutation(credentials => signin(credentials), {\n onSuccess: () => {\n setToken(loadtoken());\n }\n });\n const { isFetching: fetchingUserInfo, error: fetchUserError } = useQuery('user-info', () => get('/User/info'), {\n enabled: !!token?.hastoken,\n staleTime: 1000 * 60 * 50,\n onSuccess: (data) => {\n setUser(data);\n }\n });\n\n const { mutate: callSignOut, isLoading: signingOut } = useMutation(() => signout());\n\n const signOut = () => {\n callSignOut(null, {\n onSuccess: () => {\n setUser(null);\n setToken({ hastoken: false, valid: false });\n queryClient.clear();\n }\n });\n }\n\n return (\n (Boolean(user) && user?.Permissions?.some(p => permissions.includes(p))), [user]),\n }}>\n {props.children}\n \n );\n}","import React from 'react';\n\n// Components\nimport Button from '@mui/material/Button';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst PageNotFound = () =>\n \n 404 Page Not Found\n \n \n\nexport default PageNotFound;","import React from 'react';\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Components\nimport Stack from '@mui/material/Stack';\n\nconst Spinner = (props) => {\n const { size } = props;\n\n return (\n \n \n \n );\n}\n\nSpinner.defaultProps = {\n size: 40,\n};\n\nexport default Spinner;","const Enums = {\n\tusertypes: {\n\t\t1: 'System Manager',\n\t\t4: 'Brand Admin/Manager',\n\t\t5: 'Merchant Manager',\n\t\t6: 'Merchant User (Cashier/Waiter)',\n\t},\n\n\tadminusertypes: [1, 4, 5, 6],\n\tbrandusertypes: [4, 5, 6],\n\tmerchantusertypes: [5, 6],\n\tsystemusertypes: [1, 8],\n\tcardtypes: ['1', '2', '3'],\n\troundingtypes: ['Floor', 'Ceil', 'Round'],\n\tfieldtypes: ['standard', 'outlined', 'filled'],\n\n\tcampaigntypes: [1, 2],\n\trelevancetexttypes: ['merchant', 'custom'],\n\tbirthdaytypes: [1, 2, 3],\n\tcouponconfigtypes: ['none', 'updatesubscriber', 'sendmessage'],\n\n\tcolor: {\n\t\tActive: '#45B39D',\n\t\tArchived: '#A6ACAF',\n\t\tChurned: '#F1948A',\n\t\tDemo: '#A9CCE3',\n\t\tFoodics: '#5830c5',\n\t\tOmni: '#85929E',\n\t\tLoyverse: '#2B81C5',\n\t\tEDM: '#2471A3',\n\t\tFranchise: '#F6DDCC',\n\t\t1: '#45B39D',\n\t\t0: '#A6ACAF',\n\t\t2: '#A9CCE3',\n\t\t3: '#F1948A',\n\t\t4: '#F6DDCC',\n\t},\n\n\tlanguagecode: {\n\t\t1: 'TR',\n\t\t2: 'EN',\n\t\t3: 'RU',\n\t\t4: 'AR',\n\t},\n\n\tpartners: {\n\t\t1: 'Foodics',\n\t\t2: 'Omni',\n\t\t3: 'EDM',\n\t\t4: 'Loyverse',\n\t},\n\n\tcurrencysymbols: {\n\t\t1: '₺',\n\t\t2: '$',\n\t\t3: '€',\n\t\t4: '£',\n\t\t5: 'د.إ',\n\t\t6: '₽',\n\t\t7: 'ر.ق',\n\t\t8: 'ر.س',\n\t\t9: 'ر.ع',\n\t\t10: 'د.ك',\n\t\t11: 'ج.م',\n\t\t13: 'د.ب',\n\t\t14: 'د.ا',\n\t\t15: 'kr',\n\t\t16: '$',\n\t\t17: '₼',\n\t},\n\n\tsubscriberstatus: {\n\t\t1: 'Active',\n\t\t0: 'Deleted',\n\t\t'-1': 'Pending Enrolled',\n\t\t'-2': 'Pending ATW Clicked',\n\t\t'-4': 'Blocked',\n\t},\n\n\tmerchantstatus: {\n\t\t1: 'Active',\n\t\t0: 'Archived',\n\t},\n\tproductstatus: {\n\t\t1: 'Active',\n\t\t0: 'Deleted',\n\t},\n\n\tpages: ['insights', 'clients', 'passes', 'surveys', 'menus', 'subscribers', 'transactions', 'merchants', 'users', 'products', 'finance', 'settings'],\n};\n\nexport default Enums;\n","import React from 'react'\nimport Enums from '../enums';\n\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst Badge = props => {\n const { size, label, color } = props;\n\n if (label === 'None') return null;\n\n if (size === 'small')\n return (\n \n );\n else if (size === 'medium')\n return (\n \n {label}\n \n );\n else\n return (\n \n {label}\n \n );\n}\n\nexport default Badge;","import { find } from 'lodash';\n\nconst sleep = async (msec) => new Promise(resolve => setTimeout(resolve, msec));\n\nexport const prepBransData = async (brandrawdata, brandssubsstats, brandstranstats, brandchurnstats) => {\n var chunksize = 100;\n var index = 0;\n var brands = [];\n\n while (index < brandrawdata.length) {\n const brand = brandrawdata[index];\n const subsstats = find(brandssubsstats, ['BrandId', brand.Id]);\n const transtats = find(brandstranstats, ['BrandId', brand.Id]);\n const churnstats = find(brandchurnstats, ['DynamicId', brand.Id]);\n\n brands.push({\n ...brand,\n FirstSubscriberTime: subsstats?.FirstSubscriber,\n LastSubscriberTime: subsstats?.LastSubscriber,\n SubscriberCount: subsstats?.SubscriberCount,\n FirstTransactionTime: transtats?.FirstTransaction,\n LastTransactionTime: transtats?.LastTransaction,\n TransactionCount: transtats?.TransactionCount,\n ChurnStats: churnstats,\n })\n\n // process array[index] here\n ++index;\n\n if (index % chunksize === 0)\n await sleep(1);\n }\n\n return brands;\n}","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { some, findIndex } from 'lodash';\nimport { prepBransData } from './prep.functions';\nimport moment from 'moment';\n\n// Api\nimport { get, post, put, patch } from '../../_api/api';\n\nconst useBrandApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchBrands = () => useQuery(['brands'], async () => {\n const brands = await get(`/Brand`);\n const subsstats = await get(`/Brand/subs-stats`);\n const transtats = await get(`/Brand/tran-stats`);\n const churnstats = await get(`/Insights/brand-checkitouts`);\n\n return await prepBransData(brands, subsstats, transtats, churnstats);\n }, {\n staleTime: 1000 * 60 * 5,\n });\n\n const useFetchBrandsRaw = () => useQuery(['brands-raw'], () => get(`/Brand`));\n\n const useFetchBrand = (brandhash) => useQuery([brandhash, 'brand'], () => get(`/Brand/${brandhash}`), {\n enabled: !!brandhash,\n staleTime: 1000 * 60 * 60,\n });\n\n const useFetchTopBrands = (type) => useQuery(['top-brands', type], () => post(`/Insights/top-brands-${type}`, {}));\n\n const useFetchBrandsRegionStats = () => {\n return useQuery('brands-regions-stats', () =>\n get(`/Brand`).then(response => {\n if (response.length === 0) return false;\n\n let chartdata = [];\n let activecount = 0;\n let thisweekcount = 0;\n let thismonthcount = 0;\n let churnedcount = 0\n\n response.forEach(item => {\n const createdat = moment(item.CreatedAt);\n\n if (item.Status === 1)\n activecount += 1;\n if (item.Status === 0)\n churnedcount += 1;\n if ((createdat.month() === moment().month()) && (createdat.year() === moment().year()))\n thismonthcount += 1;\n if ((createdat.week() === moment().week()) && (createdat.year() === moment().year()))\n thisweekcount += 1;\n\n if (some(chartdata, ['name', (item.Region || 'Unknown')])) {\n let index = findIndex(chartdata, ['name', (item.Region || 'Unknown')]);\n let region = chartdata[index];\n let countryindex = findIndex(region.data, ['x', (item.Country || 'Unknown')]);\n\n if (countryindex >= 0)\n chartdata[index].data[countryindex].y += 1;\n else\n chartdata[index].data.push({ x: (item.Country || 'Unknown'), y: 1 })\n }\n else {\n chartdata.push({\n name: (item.Region || 'Unknown'),\n data: [{ x: (item.Country || 'Unknown'), y: 1 }]\n });\n }\n })\n\n return {\n active: activecount,\n churned: churnedcount,\n thisweek: thisweekcount,\n thismonth: thismonthcount,\n chartdata: chartdata\n };\n }), { staleTime: 1000 * 60 * 60, });\n }\n\n const useCreateBrand = useMutation(newBrand => post('/Brand/', newBrand),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:clientcreated'), { variant: 'success' });\n queryClient.invalidateQueries('brands', { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreateclient')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateBrand = useMutation(Brand => put('/Brand/', Brand),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:clientupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['brands'], { refetchInactive: true });\n queryClient.invalidateQueries([variables.Hash, 'brand'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateclient')} - ${error.status}`, { variant: 'error' })\n });\n\n const useChangeBrandStatus = useMutation((variables) => patch(`/Brand/${variables.Hash}/status/${parseInt(variables.Status)}`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:clientstatusupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['brands'], { refetchInactive: true });\n queryClient.invalidateQueries([variables.Hash, 'brand'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateclientstatus')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchBrands,\n useFetchBrandsRaw,\n useFetchBrand,\n useFetchBrandsRegionStats,\n useFetchTopBrands,\n useCreateBrand,\n useUpdateBrand,\n useChangeBrandStatus\n }\n}\n\nexport default useBrandApi;","import React, { useContext } from 'react';\nimport Enums from '../enums';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\nimport { useParams } from \"react-router-dom\";\n\n// MUI\nimport Avatar from '@mui/material/Avatar';\nimport Chip from '@mui/material/Chip';\nimport Skeleton from '@mui/material/Skeleton';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\n// MUI Icons\nimport DoneIcon from '@mui/icons-material/Done';\n\n// Components\nimport Badge from '../_components/badge.component';\n\n// Api\nimport useBrandApi from './api/useBrandApi';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\nconst PartnerBadge = ({ Partner, OpaqueId }) => }\n size='small'\n sx={{\n bgcolor: Enums.color[Partner],\n color: 'white',\n '& .MuiChip-icon': {\n color: 'white'\n }\n }}\n/>\n\nconst BrandInfoAvatarSkeleton = (props) => {\n const { size } = props\n\n if (size === 'medium')\n return (\n \n \n \n \n );\n else\n return (\n \n \n \n \n );\n}\n\nconst BrandInfoAvatar = ({ brandData, isLoading, variant }) => {\n const { t } = useTranslation(['enums']);\n const { user } = useContext(UserContext);\n const { brandhash } = useParams();\n\n const history = useHistory();\n const matches = useMediaQuery(theme => theme.breakpoints.up('md'));\n const _brandhash = brandhash || user?.BrandHash;\n\n const { useFetchBrand } = useBrandApi();\n const { data: fetchedBrandData, isLoading: _isLoading } = useFetchBrand(!brandData ? _brandhash : null);\n\n const brand = brandData || fetchedBrandData;\n\n const onClick = () => history.push(user.UserType === 1 ? `/${_brandhash}` : '/')\n\n if (isLoading || _isLoading) return \n\n if (variant === 'navbar')\n return (\n \n \n {brand?.Name}\n \n );\n else if (variant === 'medium')\n return (\n \n \n \n {\n matches && {brand?.Name}\n }\n {\n (user?.UserType === 1) &&\n <>\n \n {\n brand?.Config?.IntegrationPartner &&\n \n }\n \n }\n \n \n );\n else if (variant === 'small')\n return (\n \n \n {brand?.Name}\n \n );\n else return (null);\n}\n\nBrandInfoAvatar.defaultProps = {\n variant: 'medium',\n};\n\nexport default BrandInfoAvatar;","// MUI Icons\nimport CreditCard from '@mui/icons-material/CreditCard';\nimport Dashboard from '@mui/icons-material/Dashboard';\nimport Star from '@mui/icons-material/Star';\nimport TrendingUp from '@mui/icons-material/TrendingUp';\nimport Settings from '@mui/icons-material/Settings';\nimport AssignmentInd from '@mui/icons-material/AssignmentInd';\nimport Assignment from '@mui/icons-material/Assignment';\nimport People from '@mui/icons-material/People';\nimport Storefront from '@mui/icons-material/Storefront';\nimport ShoppingCartOutlined from '@mui/icons-material/ShoppingCartOutlined';\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\nimport LoyaltyIcon from '@mui/icons-material/Loyalty';\nimport CakeIcon from '@mui/icons-material/Cake';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport ApprovalIcon from '@mui/icons-material/Approval';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport CloudSyncIcon from '@mui/icons-material/CloudSync';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber';\n\nconst Icon = ({ name, color, size }) => {\n switch (name) {\n case 'home': return \n case 'overview': return \n case 'pass': return \n case 'passes': return \n case 'clients': return \n case 'insights': return \n case 'finance': return \n case 'systemsettings': return \n case 'settings': return \n case 'products': return \n case 'subscribers': return \n case 'transactions': return \n case 'users': return \n case 'merchants': return \n case 'loyalty': return \n case 'birthday': return \n case 'update': return \n case 'stamp': return \n case 'coupon': return \n case 'arrowright': return \n case 'cloudsync': return \n case 'error': return \n\n default: return null\n }\n}\n\nexport default Icon;","import React from 'react'\n\n// Material UI\nimport Fab from '@mui/material/Fab';\n\nconst FabButton = ({ size, color, onClick, disabled, icon, label }) => {\n\n return (\n \n {icon}\n {label}\n \n )\n}\n\nexport default FabButton","import React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\n\n// Material UI\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\n\nconst TooltipIconButton = ({ title, size, disabled, icon, color, onClick }) =>\n (disabled)\n ? \n {cloneElement(icon, { fontSize: size })}\n \n : \n \n {cloneElement(icon, { fontSize: size })}\n \n \n\nTooltipIconButton.defaultProps = {\n size: 'medium',\n};\n\nTooltipIconButton.propTypes = {\n title: PropTypes.string,\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n disabled: PropTypes.bool,\n icon: PropTypes.element,\n color: PropTypes.string,\n onClick: PropTypes.func,\n};\n\nexport default TooltipIconButton;","import React, { useContext } from 'react'\n\n// Contexts\nimport { UserContext } from '../../../_usercontext/user.context';\n\n// MUI\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Link from '@mui/material/Link';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport MenuItem from '@mui/material/MenuItem';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Icon from '../../icon.component';\nimport FabButton from '../../buttons/fab.button';\nimport TooltipIconButton from '../../buttons/tooltip.icon.button';\n\nconst Action = props => {\n const { variant, name, label, size, isOpen, selected, disabled, color, icon, permissions, loading, onClick } = props;\n const { hasPermissions } = useContext(UserContext);\n\n if (Boolean(permissions) && !hasPermissions(permissions))\n return null\n\n return {\n 'list': (\n \n \n {\n icon || \n }\n \n \n \n ),\n 'navlink': (\n selected\n ? {label}\n : \n {label}\n \n ),\n 'navbutton': (\n selected\n ? \n {\n \n }\n \n : \n \n {\n icon || \n }\n \n \n ),\n 'menu':\n (\n \n \n {\n icon || \n }\n \n {label}\n \n ),\n 'loadingbutton': }>{label} ,\n 'textbutton': ,\n 'outlinedbutton': ,\n 'containedbutton': ,\n 'iconbutton': } />,\n 'floatingbutton': } />\n }[variant];\n\n}\n\nexport default Action;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport Slide from '@mui/material/Slide';\n\nconst Transition = React.forwardRef(function Transition(props, ref) {\n return ;\n});\n\nconst Confirm = (props) => {\n const { title, confirmmessage, submitting, handleSubmit, open, onClose } = props;\n const { t } = useTranslation(['actions']);\n\n return (\n <>\n \n {title}\n \n \n {confirmmessage}\n \n \n \n \n {t('actions:confirm')}\n \n \n \n );\n}\n\nexport default Confirm;","import React, { useContext, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Avatar from '@mui/material/Avatar';\nimport Divider from '@mui/material/Divider';\n\nimport ListItem from '@mui/material/ListItem';\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\n// Component\nimport Action from './navbar/action.component';\n\n// MUI Icons\nimport LogoutIcon from '@mui/icons-material/Logout';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\n// Components\nimport Confirm from '../dialogs/confirm.dialog';\n\nconst SideMenuAvatar = () => {\n const { user, signOut, signingOut } = useContext(UserContext);\n const { t } = useTranslation(['actions', 'labels']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n const handleSignOut = () => signOut()\n\n return (\n \n } />\n {\n \n }\n \n \n );\n}\n\nconst BrandUserAvatar = () => {\n const { user, signOut, signingOut } = useContext(UserContext);\n const { t } = useTranslation(['actions', 'labels']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n const matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\n const handleSignOut = () => signOut()\n\n return (\n \n {\n matches ?\n } />\n :\n <>\n } />\n {user?.FullName}\n \n }\n {\n \n }\n \n );\n}\n\nconst TopMenuAvatar = () => {\n const { user, signOut, signingOut } = useContext(UserContext);\n const { t } = useTranslation(['actions', 'enums', 'labels']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n const handleSignOut = () => signOut();\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\nconst UserAvatar = ({ variant }) => ({\n 'side': ,\n 'menu': ,\n 'brand': \n}[variant]);\n\nexport default UserAvatar;","import { find, filter, countBy, uniqBy, reduce } from 'lodash';\nimport moment from 'moment';\n\nconst sleep = async (msec) => new Promise((resolve) => setTimeout(resolve, msec));\n\nconst prepSubscriber = (subscriber, pass, stamppass, multistamppass, coupons) => {\n let items = [];\n let additionalcolumns = [];\n let payload = {};\n\n const fields = pass?.Designs?.sort((pd) => pd.Default)?.[0].Designs?.[0].Fields;\n const subcoupons = filter(coupons, ['SubscriberId', subscriber.Id]);\n\n for (let index = 0; index < fields?.length; ++index) {\n const field = fields[index];\n\n if (field.GetValueFrom === 1) {\n if (field.IdForValue === -20) {\n // This is Stamp Count\n items.push({ type: 'label', label: field.Label, value: stamppass?.StampCount, size: 'large' });\n payload.StampCount = stamppass?.StampCount || 0;\n additionalcolumns.push({\n Header: field.Label,\n id: 'StampCount',\n accessor: 'Payload.StampCount',\n filter: 'oneof',\n filterorder: 1001,\n hidden: true,\n exportorder: 1001,\n });\n }\n if (field.IdForValue === -10) {\n // This is Balance value\n items.push({ type: 'label', label: field.Label, value: subscriber.Balance || 0, size: 'large' });\n payload.Balance = subscriber?.Balance || 0;\n additionalcolumns.push({\n Header: field.Label,\n id: 'Balance',\n accessor: 'Payload.Balance',\n filter: 'minmax',\n filterorder: 1002,\n hidden: true,\n exportorder: 1002,\n });\n }\n if (field.IdForValue === -4) {\n // This is Points value\n items.push({ type: 'label', label: field.Label, value: subscriber.Points, size: 'large' });\n payload.Points = subscriber?.Points || '0';\n additionalcolumns.push({\n Header: field.Label,\n id: 'Points',\n accessor: 'Payload.Points',\n filter: 'minmax',\n filterorder: 1003,\n hidden: true,\n exportorder: 1003,\n });\n }\n if (field.IdForValue === -35) {\n // This is a balance and remaining balance value\n items.push({ type: 'label', label: field.Label, value: subscriber.Balance || 0, size: 'large' });\n payload.Balance = subscriber?.Balance || '0';\n additionalcolumns.push({\n Header: field.Label,\n id: 'Balance',\n accessor: 'Payload.Balance',\n filter: 'minmax',\n filterorder: 1004,\n hidden: true,\n exportorder: 1004,\n });\n }\n if (field.IdForValue === -37) {\n // This is a multi stamp pass\n const values = field.StaticValue.split('|');\n if (values.length === 2) {\n const msindex = parseInt(values?.[0]);\n if (!isNaN(msindex)) {\n const stampcount = multistamppass.find((ms) => ms.Type === msindex)?.StampCount || 0;\n payload[field.Label.replace(/\\s/g, '')] = stampcount || '0';\n additionalcolumns.push({\n Header: field.Label,\n id: field.Label.replace(/\\s/g, ''),\n accessor: `Payload.${field.Label.replace(/\\s/g, '')}`,\n filter: 'oneof',\n filterorder: 1004,\n hidden: true,\n exportorder: 1004,\n sum: true,\n });\n items.push({ type: 'label', label: field.Label, value: `${stampcount} /${values[1]}`, size: 'large' });\n }\n }\n }\n if (field.IdForValue === -28) {\n // This is a coupon count\n payload[field.Label.replace(/\\s/g, '')] = reduce(subcoupons, (sum, c) => sum + c.Count, 0) || '0';\n additionalcolumns.push({\n Header: field.Label,\n id: field.Label.replace(/\\s/g, ''),\n accessor: `Payload.${field.Label.replace(/\\s/g, '')}`,\n filter: 'oneof',\n filterorder: 1004,\n hidden: true,\n exportorder: 1004,\n sum: true,\n });\n items.push({ type: 'label', label: field.Label, value: reduce(subcoupons, (sum, c) => sum + c.Count, 0), size: 'large' });\n }\n }\n }\n\n return { items: items, additionalcolumns: additionalcolumns, payload: payload };\n};\n\nexport const prepSubsData = async (subs, passes, stamppasses, multistamppasses, coupons, merchants, brand, t) => {\n var chunksize = 100;\n var index = 0;\n var auxcolumns = [];\n var additionalcolumns = [];\n var subscribers = [];\n\n // Check if we have more than one gender\n const genders = countBy(subs.SubscriberList, (s) => s.Gender);\n if (filter(Object.keys(genders), (p) => p !== 'undefined').length > 1)\n additionalcolumns.push({\n Header: 'labels:gender',\n id: 'Gender',\n accessor: (row) => row.Gender && t(`enums:gender.${row.Gender}`),\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableGlobalFilter: true,\n disableResizing: true,\n filter: 'oneof',\n filterorder: 6,\n });\n\n // Check if we have more than one shop\n const shops = countBy(subs.SubscriberList, (s) => s.MerchantId);\n if (filter(Object.keys(shops), (p) => p !== 'undefined').length > 1)\n additionalcolumns.push({\n Header: 'labels:merchant',\n id: 'Merchant',\n accessor: 'Merchant',\n width: 300,\n minWidth: 200,\n maxWidth: 400,\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 4,\n });\n\n // Check if we have more than one shop\n const dobs = countBy(subs.SubscriberList, (s) => s.DateOfBirth);\n if (filter(Object.keys(dobs), (p) => p !== 'undefined').length > 1) {\n additionalcolumns.push({\n Header: 'labels:dob',\n id: 'DateOfBirth',\n accessor: (row) => row.DateOfBirth && moment(row.DateOfBirth, 'LLL'),\n width: 180,\n minWidth: 160,\n maxWidth: 200,\n sortType: 'moment',\n disableGlobalFilter: true,\n disableFilters: true,\n });\n additionalcolumns.push({\n Header: 'labels:age',\n id: 'Age',\n accessor: 'Age',\n disableGlobalFilter: true,\n hidden: true,\n filter: 'agerange',\n filterorder: 6,\n });\n }\n\n while (index < subs.SubscriberList.length) {\n const sub = subs.SubscriberList[index];\n const pass = find(passes, ['Id', sub.PassId]);\n const stamppass = find(stamppasses, ['SubscriberId', sub.Id]);\n const multistamppass = filter(multistamppasses, ['SubscriberId', sub.Id]);\n const merchant = find(merchants, ['Id', sub.MerchantId]);\n\n const subpass = prepSubscriber(sub, pass, stamppass, multistamppass, coupons);\n\n var auxfields = {};\n for (var i = 0; i < sub.AuxFields.length; i++) {\n const field = sub.AuxFields[i];\n\n if (\n field.Name !== 'NameSurname' &&\n field.Name !== 'DateOfBirth' &&\n field.Name !== 'Phone' &&\n field.Name !== 'Email' &&\n field.Name !== 'Gender' &&\n field.Name !== 'OpaqueId'\n ) {\n if (!find(auxcolumns, ['accessor', field.Name]))\n auxcolumns.push({\n id: field.Name,\n Header: field.Name,\n accessor: field.Name,\n width: 180,\n minWidth: 160,\n maxWidth: 500,\n disableFilters: true,\n exportorder: +i,\n });\n\n auxfields = { ...auxfields, [field.Name]: field.Value };\n }\n }\n\n subscribers.push({\n ...sub,\n DateOfBirth: moment(sub.DateOfBirth).format('LL') || undefined,\n Age: moment(sub.DateOfBirth, 'DD/MM/YYYY').isValid()\n ? moment().diff(moment(sub.DateOfBirth, 'DD/MM/YYYY'), 'years')\n : moment(sub.DateOfBirth, 'MM/DD/YYYY').isValid()\n ? moment().diff(moment(sub.DateOfBirth, 'MM/DD/YYYY'), 'years')\n : undefined,\n Merchant: merchant?.Name,\n PassName: pass?.Name,\n RowItems: subpass?.items,\n Payload: subpass?.payload,\n ...auxfields,\n });\n\n additionalcolumns = [...additionalcolumns, ...subpass.additionalcolumns];\n additionalcolumns = uniqBy(additionalcolumns, 'id');\n\n // process array[index] here\n ++index;\n\n if (index % chunksize === 0) await sleep(1);\n }\n\n // Check if the brand has an integration partner and if so, push the opaque id to the additional columns\n if (brand?.Config?.IntegrationPartner) {\n additionalcolumns.push({\n Header: 'labels:opaqueid',\n id: 'OpaqueId',\n accessor: (row) => (Boolean(row.OpaqueId) ? 'Yes' : 'No'),\n width: 360,\n minWidth: 360,\n maxWidth: 360,\n disableResizing: true,\n disableGlobalFilter: true,\n hidden: true,\n filter: 'oneof',\n filterorder: 7,\n });\n }\n\n return {\n subscribers: subscribers,\n auxcolumns: auxcolumns,\n SubscriberCount: subs.SubscriberCount,\n additionalcolumns: additionalcolumns,\n };\n};\n\nexport const prepSubsForMessageData = async (subs, passes, t) => {\n var chunksize = 100;\n var index = 0;\n var subscribers = [];\n\n while (index < subs.length) {\n const sub = subs[index];\n\n if (sub.AcceptsNoti && sub.Status === 1) {\n subscribers.push({\n id: sub.Hash,\n To: sub.BarcodeValue?.length <= 10 ? `${sub.NameSurname} - ${sub.BarcodeValue}` : sub.NameSurname,\n pass: `P-${sub.PassHash}`,\n passname: passes.find((pass) => pass.Hash === sub.PassHash)?.Name,\n type: 'SUBSCRIBER',\n group: t('labels:subscribers'),\n });\n }\n // process array[index] here\n ++index;\n\n if (index % chunksize === 0) await sleep(1);\n }\n\n var data = [\n {\n id: 'ALLSUBSCRIBERS',\n To: `${t('labels:allsubscribers')} (${subscribers.length})`,\n count: subscribers.length,\n type: 'ALL',\n group: t('labels:allsubscribers'),\n },\n ];\n\n if (passes.length > 1)\n passes.forEach((pass) => data.push({ id: `P-${pass.Hash}`, To: `${t('labels:subscribersof')} ${pass.Name}`, type: 'PASS', group: t('labels:passes') }));\n\n data = [...data, ...subscribers];\n\n return data;\n};\n","import { useQuery, useMutation, useQueryClient, useInfiniteQuery } from 'react-query';\n\nimport { useTranslation } from 'react-i18next';\nimport { get, patch, post } from '../../_api/api';\nimport { useSnackbar } from 'notistack';\nimport { prepSubsData, prepSubsForMessageData } from './prep.functions';\n\nconst useSubscriberApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['labels']);\n\n const useFetchSubscribersInfiniteScroll = (limit, brandhash, staticFilters) => {\n let key = 'subscribers';\n let query = '';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = ['subscribers-infinite-scroll', brandhash];\n query = `?brand=${brandhash}`;\n }\n\n return useInfiniteQuery(\n key,\n async ({ pageParam = undefined }) => {\n const { passes, search } = staticFilters;\n\n let queryPayload = {\n limit,\n brand: brandhash,\n cursor: pageParam,\n search: search || undefined,\n };\n\n if (passes && passes.length > 0) queryPayload.passes = passes.map((p) => p.id);\n\n const subscribers = await post('Subscriber/infinite', queryPayload);\n\n const passList = await queryClient.fetchQuery({\n queryKey: [brandhash, 'passes'],\n queryFn: () => get(`/Pass${query}`),\n staleTime: 1000 * 60 * 60 * 5,\n });\n\n const brand = await queryClient.fetchQuery({\n queryKey: [brandhash, 'brand'],\n queryFn: () => get(`/Brand/${brandhash}`),\n staleTime: 1000 * 60 * 60,\n cacheTime: 1000 * 60 * 60,\n });\n\n const stamppasses = await queryClient.fetchQuery({\n queryKey: [brandhash, 'stamppasses'],\n queryFn: () => get(`/Subscriber/stamp-passes${query}`),\n staleTime: 1000 * 60 * 5,\n cacheTime: 1000 * 60 * 60,\n });\n\n const multistamppasses = await queryClient.fetchQuery({\n queryKey: [brandhash, 'multistamppasses'],\n queryFn: () => get(`/Subscriber/multi-stamp-passes${query}`),\n staleTime: 1000 * 60 * 5,\n cacheTime: 1000 * 60 * 60,\n });\n\n const subscoupons = await queryClient.fetchQuery({\n queryKey: [brandhash, 'subscouponsstats'],\n queryFn: () => get(`/Subscriber/coupon-stats${query}`),\n staleTime: 1000 * 60 * 5,\n cacheTime: 1000 * 60 * 60,\n });\n\n const merchants = await queryClient.fetchQuery({\n queryKey: [brandhash, 'merchants'],\n queryFn: () => get(`/Merchant${query}`),\n staleTime: 1000 * 60 * 5,\n cacheTime: 1000 * 60 * 60,\n });\n\n return await prepSubsData(subscribers, passList, stamppasses, multistamppasses, subscoupons, merchants, brand, t);\n },\n {\n onError: (error) => {\n enqueueSnackbar('Failed fetching subscribers: ' + error.status, { variant: 'error' });\n },\n getNextPageParam: (lastPage) => (lastPage.subscribers?.length === limit ? lastPage.subscribers[lastPage.subscribers.length - 1].Hash : undefined),\n retry: true,\n }\n );\n };\n\n const useFetchSubscribers = (brandhash) => {\n let key = 'subscribers';\n let query = '';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = [brandhash, 'subscribers'];\n query = `?brand=${brandhash}`;\n }\n\n return useQuery(key, async () => {\n const subscribers = await get(`/Subscriber${query}`);\n const passes = await get(`/Pass${query}`);\n\n const isBrandExistsInCache = queryClient.getQueryState([brandhash, 'brand']);\n const brand = isBrandExistsInCache ? queryClient.getQueryData([brandhash, 'brand']) : await get(`/Brand/${brandhash}`);\n\n const stamppasses = await get(`/Subscriber/stamp-passes${query}`);\n const multistamppasses = await get(`/Subscriber/multi-stamp-passes${query}`);\n const substranstats = await get(`/Subscriber/tran-stats${query}`);\n const coupons = await get(`/Subscriber/coupon-stats${query}`);\n const merchants = await get(`/Merchant${query}`);\n\n return await prepSubsData(subscribers, substranstats, passes, stamppasses, multistamppasses, coupons, merchants, brand, t);\n });\n };\n\n const useFetchSubscribersForMessage = (brandhash) => {\n let key = 'subsformessage';\n let query = '';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = [brandhash, 'subsformessage'];\n query = `?brand=${brandhash}`;\n }\n\n return useQuery(key, async () => {\n const subscribers = await get(`/Subscriber${query}`);\n const passes = await get(`/Pass${query}`);\n\n return await prepSubsForMessageData(subscribers, passes, t);\n });\n };\n\n const useFetchSubscriber = (subshash) => useQuery([subshash, 'subscriber'], async () => await get(`/Subscriber/${subshash}`), { enabled: !!subshash });\n\n const useFetchSubscriberExpireLog = (subhash) =>\n useQuery([subhash, 'subscriber', 'expire-log'], () => get(`/Subscriber/${subhash}/expire-log`), { enabled: !!subhash });\n\n const useFetchSubscriberMessages = (subshash, messagetype) =>\n useQuery([subshash, 'subscriber', 'messages'], async () => await get(`/Subscriber/${subshash}/messages`), {\n enabled: !!subshash,\n select: (data) => (messagetype === 'message' ? data.filter((d) => d.NotificationTypeId === 2) : data.filter((d) => d.NotificationTypeId !== 2)),\n });\n const useFetchSubscriberCoupons = (subshash) =>\n useQuery([subshash, 'subscriber', 'coupons'], async () => await get(`/Subscriber/${subshash}/coupons`), { enabled: !!subshash });\n const useFetchSubscribersStampPassesOfSubscriber = (hash) =>\n useQuery([hash, 'subscriber-stamp-passes'], async () => get(`/Subscriber/${hash}/stamp-passes`), { enabled: !!hash });\n const useSearchSubscriber = (searchtext) => useQuery(['subscriber-search'], async () => await get(`/Search/${searchtext}`), { enabled: !!searchtext });\n\n const useFetchSubscriberStats = (brandhash, passhash) => {\n let key = 'sub-stats';\n let query = 'subscriber/stats';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = [brandhash, 'brand-sub-stats'];\n query = `subscriber/stats?brand=${brandhash}`;\n }\n\n // If we have a passhash, we are looking for that pass stats\n // We add the hash as query param\n if (passhash) {\n key = [passhash, 'pass-sub-stats'];\n query = `subscriber/stats?pass=${passhash}`;\n }\n\n return useQuery(key, async () => get(`Insights/${query}`), { refetchOnMount: true });\n };\n\n const useVoidSubscriber = useMutation((subscriber) => patch('/Subscriber/void', [subscriber.Hash]), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber blocked successfully', { variant: 'success' });\n queryClient.refetchQueries([subscriber.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not block subscriber - Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useUnvoidSubscriber = useMutation((subscriber) => patch('/Subscriber/unvoid', [subscriber.Hash]), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber unblocked successfully', { variant: 'success' });\n queryClient.refetchQueries([subscriber.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not unblock subscriber - Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useSyncSubscriber = useMutation((subscriber) => get(`Foodics/sync/subscriber/${subscriber.Hash}`), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber synchronized with foodics successfully.', { variant: 'success' });\n queryClient.refetchQueries([subscriber.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not synchronize subscriber - Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useSyncLoyverseSubscriber = useMutation((subscriber) => get(`Loyverse/sync/subscriber/${subscriber.Hash}`), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber synchronized with Loyverse successfully.', { variant: 'success' });\n queryClient.refetchQueries([subscriber.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(error.message || `Could not synchronize subscriber - Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useSyncEDMSubscriber = useMutation((subscriber) => get(`Edm/sync/subscriber/${subscriber.Hash}`), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber synchronized with EDM successfully.', { variant: 'success' });\n queryClient.refetchQueries([subscriber.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not synchronize subscriber - Error: ${error.status}`, { variant: 'error' }),\n });\n\n const usePurgeSubscriber = useMutation((subscriber) => patch('/Subscriber/purge', [subscriber.Hash]), {\n onSuccess: (_, subscriber) => {\n enqueueSnackbar('Subscriber deleted successfuly', { variant: 'success' });\n queryClient.refetchQueries([subscriber.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not delete subscriber. Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useEditSubscriberNote = useMutation((variables) => patch(`/Subscriber/${variables.Hash}/note?note=${variables.note}`), {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Subscriber note edited successfuly', { variant: 'success' });\n queryClient.refetchQueries([variables.Hash, 'subscriber'], { exact: true });\n queryClient.refetchQueries([variables.BrandHash, 'subscribers'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not edit subscriber note. Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useRemoveCouponFromSubscriber = useMutation((variables) => patch(`/Subscriber/${variables.Hash}/purge`), {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Coupon removed successfuly', { variant: 'success' });\n queryClient.refetchQueries([variables.Subscriber, 'subscriber', 'coupons']);\n },\n onError: (error) => enqueueSnackbar(`Could not remove coupon. Error: ${error.status}`, { variant: 'error' }),\n });\n\n const useUpdateCouponExpiration = useMutation((variables) => patch(`/Subscriber/${variables.Hash}/coupon-expiretime?expiretime=${variables.ExpireTime}`), {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Coupon expiration updated successfuly', { variant: 'success' });\n queryClient.refetchQueries([variables.Subscriber, 'subscriber', 'coupons']);\n },\n onError: (error) => enqueueSnackbar(`Could not update coupon expiration. Error: ${error.status}`, { variant: 'error' }),\n });\n\n return {\n useFetchSubscriber,\n useFetchSubscriberMessages,\n useFetchSubscriberCoupons,\n useFetchSubscribers,\n useFetchSubscribersForMessage,\n useFetchSubscriberStats,\n useFetchSubscribersStampPassesOfSubscriber,\n useEditSubscriberNote,\n useVoidSubscriber,\n useUnvoidSubscriber,\n usePurgeSubscriber,\n useSyncLoyverseSubscriber,\n useSyncEDMSubscriber,\n useSearchSubscriber,\n useSyncSubscriber,\n useFetchSubscribersInfiniteScroll,\n useRemoveCouponFromSubscriber,\n useUpdateCouponExpiration,\n useFetchSubscriberExpireLog,\n };\n};\n\nexport default useSubscriberApi;\n","import React, { forwardRef, createContext, useEffect, useRef, useContext } from 'react';\nimport { some, remove, filter } from 'lodash';\nimport { useSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { VariableSizeList } from 'react-window';\n\n// MUI\nimport Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';\nimport Checkbox from '@mui/material/Checkbox';\nimport Chip from '@mui/material/Chip';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\nimport Stack from '@mui/material/Stack';\nimport Popper from '@mui/material/Popper';\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport ListSubheader from '@mui/material/ListSubheader';\n\n// MUI Icons\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '@mui/icons-material/CheckBox';\n\n// Api\nimport useSubscriberApi from '../subscriber/api/useSubscriberApi';\n\nconst LISTBOX_PADDING = 8;\n\nfunction renderRow(props) {\n\tconst { data, index, selected, style } = props;\n\tconst dataSet = data[index];\n\n\tconst inlineStyle = {\n\t\t...style,\n\t\ttop: style.top + LISTBOX_PADDING,\n\t};\n\n\tif (dataSet.hasOwnProperty('group')) {\n\t\treturn (\n\t\t\t\n\t\t\t\t{dataSet.group}\n\t\t\t\n\t\t);\n\t}\n\n\tconst { type } = dataSet[1];\n\n\tif (type === 'SUBSCRIBER')\n\t\treturn (\n\t\t\t
  • \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{dataSet[1].To}\n\t\t\t\t\t\n\t\t\t\t\t\t{dataSet[1].passname}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
  • \n\t\t)\n\treturn (\n\t\t
  • \n\t\t\t\n\t\t\t{dataSet[1].To}\n\t\t
  • \n\t);\n}\n\nconst OuterElementContext = createContext({});\n\nconst OuterElementType = forwardRef((props, ref) => {\n\tconst outerProps = useContext(OuterElementContext);\n\treturn
    ;\n});\n\nfunction useResetCache(data) {\n\tconst ref = useRef(null);\n\tuseEffect(() => {\n\t\tif (ref.current != null) {\n\t\t\tref.current.resetAfterIndex(0, true);\n\t\t}\n\t}, [data]);\n\treturn ref;\n}\n\nconst ListboxComponent = forwardRef((props, ref) => {\n\tconst { children, ...other } = props;\n\tconst itemData = [];\n\n\tchildren.forEach(\n\t\t(item) => {\n\t\t\titemData.push(item);\n\t\t\titemData.push(...(item.children || []));\n\t\t},\n\t);\n\n\tconst itemCount = itemData.length;\n\tconst itemSize = 64;\n\n\tconst getChildSize = (child) => {\n\t\tif (child.hasOwnProperty('group')) {\n\t\t\treturn 48;\n\t\t}\n\n\t\treturn itemSize;\n\t};\n\n\tconst getHeight = () => {\n\t\tif (itemCount > 8) {\n\t\t\treturn 8 * itemSize;\n\t\t}\n\t\treturn itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n\t};\n\n\tconst gridRef = useResetCache(itemCount);\n\n\treturn (\n\t\t
    \n\t\t\t\n\t\t\t\t getChildSize(itemData[index])}\n\t\t\t\t\toverscanCount={5}\n\t\t\t\t\titemCount={itemCount}\n\t\t\t\t>\n\t\t\t\t\t{renderRow}\n\t\t\t\t\n\t\t\t\n\t\t
    \n\t);\n})\n\nconst icon = ;\nconst checkedIcon = ;\n\nconst StyledPopper = styled(Popper)({\n\t[`& .${autocompleteClasses.listbox}`]: {\n\t\tboxSizing: 'border-box',\n\t\t'& ul': {\n\t\t\tpadding: 0,\n\t\t\tmargin: 0,\n\t\t},\n\t},\n});\n\nconst MessageToBox = ({ brandhash, value, label, error, required, helperText, onChange, onFocus, onBlur, disabled }) => {\n\tconst { t } = useTranslation(['prompts']);\n\tconst { enqueueSnackbar } = useSnackbar();\n\n\tconst { useFetchSubscribersForMessage } = useSubscriberApi();\n\tconst { data, isFetching } = useFetchSubscribersForMessage(brandhash);\n\n\tconst handleChange = (_, newvalues) => {\n\t\t// The manipulations in this function are neccessary to prevent duplicate messages to be sent to customers\n\n\t\t// If there is the ALLSUBSCRIBERS chip in the value, remove all others\n\t\tif (some(newvalues, ['type', 'ALL'])) {\n\t\t\tconst removed = remove(newvalues, o => o.type !== 'ALL');\n\n\t\t\t// Warn the user that some contacts may have been removed\n\t\t\tif (removed.length > 0) enqueueSnackbar('You selected all subscribers, all other contacts are removed');\n\t\t}\n\n\t\t// If there are passes in the new value, all subscribers of the selected passes should be removed\n\t\t// Remove all options from the values which have a pass value and that value is also in the\n\t\tif (some(newvalues, ['type', 'PASS'])) {\n\t\t\tconst passes = filter(newvalues, o => o.type === 'PASS');\n\n\t\t\tfor (let index = 0; index < passes.length; index++) {\n\t\t\t\tconst pass = passes[index];\n\n\t\t\t\tconst moreremoved = remove(newvalues, o => o.type === 'SUBSCRIBER' && o.pass === pass.id);\n\n\t\t\t\t// Warn the user that some contacts may have been removed\n\t\t\t\tif (moreremoved.length > 0) enqueueSnackbar('You selected a pass, all subscribers of that pass are removed');\n\t\t\t}\n\t\t}\n\n\t\tonChange(newvalues);\n\t};\n\n\tconst getOptionDisabled = option => {\n\t\tif (some(value, ['type', 'ALL']))\n\t\t\t// If we have ALL in the elected values, every option should be disabled\n\t\t\treturn true;\n\n\t\t// If the selected option has a pass value, and that value is in the value of autoselect, disable that option\n\t\t// Since the option has a pass value, it is a subscriber.\n\t\t// And if that subsciber's pass is allready in the value, that option should be disabled\n\t\tif (some(value, ['id', option.pass])) return true;\n\n\t\t// Other than these two, option should not be disabled\n\t\treturn false;\n\t};\n\n\tconst renderTags = (value, getTagProps) => {\n\t\tconst all = filter(value, o => o.type === 'ALL');\n\t\tconst passes = filter(value, o => o.type === 'PASS');\n\t\tconst subscribers = filter(value, o => o.type === 'SUBSCRIBER');\n\n\t\tif (subscribers?.length >= 10)\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{passes?.map((item, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\t onChange([])} />\n\t\t\t\t\n\t\t\t);\n\t\telse\n\t\t\treturn (\n\t\t\t\t<>\n\t\t\t\t\t{all?.map((item, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\t{passes?.map((item, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\t{subscribers?.map((item, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\n\t\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\t[props, option, state.index, state.selected]\n\t\t\t}\n\t\t\trenderGroup={(params) => params}\n\t\t\tisOptionEqualToValue={(option, value) => option.id === value.id}\n\t\t\tfullWidth\n\t\t\toptions={data || []}\n\t\t\tgetOptionLabel={option => option?.To}\n\t\t\tgroupBy={option => option.group?.toUpperCase()}\n\t\t\tgetOptionDisabled={getOptionDisabled}\n\t\t\tloading={isFetching}\n\t\t\tvalue={value || []}\n\t\t\tdisabled={disabled}\n\t\t\tdisableCloseOnSelect\n\t\t\tonChange={handleChange}\n\t\t\trenderTags={renderTags}\n\t\t\trenderInput={params => (\n\t\t\t\t\n\t\t\t\t\t\t\t\t{isFetching ? : null}\n\t\t\t\t\t\t\t\t{params.InputProps.endAdornment}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t/>\n\t);\n};\n\nexport default MessageToBox;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContentText from '@mui/material/DialogContentText';\n\n// Material UI Icons\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst FormDialog = (props) => {\n const { open, onClose, maxWidth, fullScreen, title, contentText, children, onSubmit, disabled, submitDisabled, submitText, additionalActions } = props;\n const { t } = useTranslation(['actions']);\n const matches = useMediaQuery(theme => theme.breakpoints.down('sm'));\n\n return (\n \n \n \n \n {title}\n \n {contentText && {contentText} }\n {children}\n \n {\n onSubmit &&\n \n {additionalActions}\n \n {submitText}\n \n }\n \n )\n}\n\nexport default FormDialog","import React, { cloneElement, forwardRef } from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\n\nconst LabeledInputField = forwardRef((props, ref) => {\n const { label, multiline, visible = true, type, fullWidth, disabled, size, id, required, component, ...otherProps } = props;\n\n if (!visible) return null;\n\n return (\n \n \n {label}\n {required && ' *'}\n \n {\n component\n ? cloneElement(component, { disabled: disabled, fullWidth: fullWidth, size: size, id: id, ...otherProps, label: '' })\n : \n }\n \n )\n}\n)\n\nLabeledInputField.defaultProps = {\n size: 'small',\n};\n\nexport default LabeledInputField","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField'\n\nconst MessageTextField = (props) => {\n const { name, fullWidth, value, error, maxCharLength, label, placeholder, disabled, onFocus, onBlur, onChange } = props;\n\n return (\n 50 ? '28px' : ''\n }\n }}\n helperText={`${value?.length || 0}/${maxCharLength}`}\n />\n )\n}\n\nexport default MessageTextField","import { useQuery, useQueryClient, useMutation, } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, post, put, patch } from '../../../../_api/api';\n\nconst useCouponApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchCoupons = (brandhash) => useQuery(brandhash ? [brandhash, 'coupons'] : ['coupons'], () => get(brandhash ? `/Product/coupon?brand=${brandhash}` : '/Product/coupon'));\n\n const useUpdateCoupon = useMutation(Coupon => put('/Product/coupon', Coupon),\n {\n retry: false,\n onSuccess: (data, variables) => {\n enqueueSnackbar(t('prompts:couponupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'coupons'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('prompts:couldntupdatecoupon')} - Error: ${error.status}`, { variant: 'error' })\n });\n\n const useCreateCoupon = useMutation(newCoupon => post('/Product/coupon', newCoupon),\n {\n retry: false,\n onSuccess: (data, variables) => {\n enqueueSnackbar(t('prompts:couponcreated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'coupons'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('prompts:couldntcreatecoupon')} - Error: ${error.status}`, { variant: 'error' })\n });\n\n const usePurgeCoupon = useMutation(Coupon => patch(`/Product/${Coupon.Hash}/coupon/purge`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:couponpurged'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'coupons']);\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotpurgecoupon')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchCoupons,\n useUpdateCoupon,\n useCreateCoupon,\n usePurgeCoupon\n }\n}\n\nexport default useCouponApi;\n","import React, { useEffect, useState } from 'react';\nimport { find, uniq } from 'lodash';\n\n// Mui\nimport { IconButton } from '@mui/material';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Avatar from '@mui/material/Avatar';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\nimport ListItemText from '@mui/material/ListItemText';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItem from '@mui/material/ListItem';\nimport AddCircleRoundedIcon from '@mui/icons-material/AddCircleRounded';\nimport RemoveCircleRoundedIcon from '@mui/icons-material/RemoveCircleRounded';\n\n// Api\nimport useCouponApi from './api/useCouponApi';\n\nconst ListItemCoupon = (props) => {\n const { option, onChange, value, values, onIncrease, onDecrease, ...otherProps } = props;\n\n return (\n \n coupon.Id === option.Id)?.length >= 100} onClick={() => onIncrease(option)}>\n \n \n \n {\n value?.find(coupon => coupon.coupon === option.Hash)?.count || 0\n }\n \n coupon.Id === option.Id)?.length < 1} onClick={() => onDecrease(option)}>\n \n \n \n } >\n {\n if (values.findIndex(coupon => coupon.Hash === option.Hash) > -1) return;\n onChange([...values, option]);\n }}>\n \n \n \n \n \n \n )\n}\nconst CouponMultiSelect = props => {\n const { select = 'Hash', brandhash, size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur, onIncrease, onDecrease } = props;\n\n const [values, setValues] = useState([]);\n\n const { useFetchCoupons } = useCouponApi();\n const { isFetching, data } = useFetchCoupons(brandhash);\n\n useEffect(() => {\n const getValue = (value) => find(data, [select, value]) || null;\n\n if (value) {\n let _values = [];\n value.forEach(coupon => {\n let _value = getValue(coupon.coupon);\n if (_value) _values.push(_value)\n });\n setValues(_values);\n }\n }, [value, select, data])\n\n return (\n ({\n ...c,\n Title: value.find(v => v.coupon === c.Hash)?.count + 'x ' + c.Title\n }))}\n fullWidth={fullWidth}\n disabled={disabled}\n disableCloseOnSelect\n sx={{\n // This is to fix the css error that overlaps circular progress with arrow, when the size is small\n ...(size === 'small' && {\n '& .MuiOutlinedInput-root.MuiInputBase-sizeSmall': {\n padding: '6px 39px 6px 6px',\n },\n }),\n }}\n isOptionEqualToValue={(option, value) => option?.Id === value?.Id}\n getOptionLabel={option => option?.Title || ''}\n options={data || []}\n loading={isFetching}\n onChange={(_, val) => {\n let newvalues = [];\n value.forEach(c => {\n let _value = val.find(v => v.Hash === c.coupon)\n if (_value) newvalues.push(_value);\n });\n onChange(newvalues);\n }}\n renderOption={(props, option) =>\n \n }\n renderInput={params => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n};\n\nexport default CouponMultiSelect;\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { get, post, put } from '../../_api/api';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\nimport { useSnackbar } from 'notistack';\n\nconst useMessageApi = () => {\n const { t } = useTranslation(['prompts']);\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n const useFetchMessages = (brandhash) =>\n useQuery(brandhash ? [brandhash, 'messages'] : ['messages'], async () => await get(brandhash ? `/Message?brand=${brandhash}` : '/Message'), {\n refetchOnMount: true,\n });\n\n const useFetchMessageStats = (brand) => {\n let key = 'message-stats';\n let query = 'bulk-stats';\n\n if (brand) {\n key = ['brand-message-stats', brand];\n query = `bulk-stats?brand=${brand}`;\n }\n\n return useQuery(\n key,\n () =>\n get(`Insights/message/${query}`).then((response) => {\n if (response.length === 0) return false;\n\n var totalBulk = 0;\n var totalNoti = 0;\n\n response.forEach((item) => {\n totalBulk += item.BulkCount;\n totalNoti += item.NotiCount;\n });\n\n var totals = {\n Bulk: totalBulk,\n Noti: totalNoti,\n AveragePerBulk: (totalNoti / totalBulk).toFixed(2),\n };\n\n const _todayfiltered = response.filter(\n (item) =>\n moment(item.Date, 'MM/DD/YYYY HH:mm:ss').isSame(moment(), 'day') &&\n moment(item.Date, 'MM/DD/YYYY HH:mm:ss').isSame(moment(), 'month') &&\n moment(item.Date, 'MM/DD/YYYY HH:mm:ss').isSame(moment(), 'year')\n );\n\n const today = {\n Bulk: _todayfiltered.length > 0 ? _todayfiltered[0].BulkCount : 0,\n Noti: _todayfiltered.length > 0 ? _todayfiltered[0].NotiCount : 0,\n };\n\n return {\n mindate: response[0].Date,\n maxdate: response[response.length - 1].Date,\n itemcount: response.length,\n totals: totals,\n today: today,\n };\n }),\n { refetchOnMount: true }\n );\n };\n\n const useSendMessage = useMutation((variables) => post('/Message', variables), {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Message sent', { variant: 'success' });\n variables.Brand ? queryClient.refetchQueries([variables.Brand, 'messages']) : queryClient.refetchQueries(['messages']);\n if (variables.Coupon) {\n for (let i = 0; i < variables.To.length; i++) {\n if (variables.To[i].type === 'SUBSCRIBER') {\n queryClient.refetchQueries([variables.To[i].id, 'subscriber', 'coupons']);\n }\n }\n }\n },\n onError: (error) => enqueueSnackbar(`${t(`errors:${error.message}`) || 'Error while creating message:'} - ${error.status}`, { variant: 'error' }),\n });\n\n const useFetchSingleMessage = useMutation(\n async (message) => {\n const response = await get(`/Message/${message.Hash}`);\n if (response.ScheduledTime && moment().isAfter(moment(response.ScheduledTime))) {\n enqueueSnackbar(t('prompts:messagealreadysent'), { variant: 'error' });\n queryClient.invalidateQueries([message.BrandHash, 'messages']);\n return false;\n } else return response;\n },\n {\n onError: (error) => {\n enqueueSnackbar(`Error while fetching message: ${error.status}`, { variant: 'error' });\n },\n }\n );\n\n const useUpdateMessage = useMutation((variables) => post('/Message/Update', variables), {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Message updated', { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand || variables.BrandHash, 'messages']);\n if (variables.Coupon) {\n for (let i = 0; i < variables.To.length; i++) {\n if (variables.To[i].type === 'SUBSCRIBER') {\n queryClient.refetchQueries([variables.To[i].id, 'subscriber', 'coupons']);\n }\n }\n }\n },\n onError: (error) => enqueueSnackbar(`Error while sending message: ${error.status}`, { variant: 'error' }),\n });\n\n const useSendUpdate = useMutation((subscriber) => post(`/Message/send-update-to-subscriber/${subscriber.Id}`), {\n onSuccess: (_, subscriber) => {\n queryClient.invalidateQueries([subscriber.Hash, 'subscriber', 'messages']);\n queryClient.invalidateQueries([subscriber.Hash, 'subscriber']);\n enqueueSnackbar('Update message sent to subscriber', { variant: 'success' });\n },\n onError: (error) => enqueueSnackbar(`Error while sending update message: ${error.status}`, { variant: 'error' }),\n });\n\n const useDeleteMessage = useMutation((message) => put(`/Message/delete?hash=${message.Hash}`), {\n onSuccess: (_, message) => {\n enqueueSnackbar('Message deleted', { variant: 'success' });\n queryClient.invalidateQueries([message.BrandHash, 'messages']);\n },\n onError: (error) => enqueueSnackbar(`Error while deleting message: ${error.status}`, { variant: 'error' }),\n });\n\n return {\n useFetchMessages,\n useFetchMessageStats,\n useUpdateMessage,\n useSendMessage,\n useDeleteMessage,\n useSendUpdate,\n useFetchSingleMessage,\n };\n};\n\nexport default useMessageApi;\n","import React, { useContext, useState } from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, Controller } from 'react-hook-form';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Switch from '@mui/material/Switch';\nimport Collapse from '@mui/material/Collapse';\nimport TextField from '@mui/material/TextField';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport DateTimePicker from '@mui/lab/DateTimePicker';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\n\n// MUI Icons\nimport CancelIcon from '@mui/icons-material/Cancel';\n\n// Components\nimport MessageToBox from './message.to.box';\nimport FormDialog from '../_components/dialogs/form.dialog';\nimport LabeledInputField from '../_components/labeled.input.component';\nimport MessageTextField from '../_components/message.text.field.component';\nimport CouponMultiSelect from '../brand/settings/coupon/coupon.multiselect.component';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// Api\nimport useMessageApi from './api/useMessageApi';\n\nconst IssueCouponBox = ({ brandhash, t, watch, control, disabled, setValue }) => {\n\tconst [couponBoxOpen, setCouponBoxOpen] = useState(watch('Coupons')?.length > 0);\n\tconst toggleBoxOpen = (e) => {\n\t\tsetCouponBoxOpen(e.target.checked);\n\t};\n\n\treturn (\n\t\t\n\t\t\t {\n\t\t\t\t\t\tif (!couponBoxOpen) return true;\n\t\t\t\t\t\tif (!value || value.length < 1) return t('prompts:fieldrequired');\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t\trender={({ field: { onChange, value, ...fieldProps }, formState: { isSubmitting }, fieldState: { error } }) => (\n\t\t\t\t\t<>\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tlabel={t('labels:attachcoupontomessage')}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tonChange([]);\n\t\t\t\t\t\t\t\tsetValue('CouponExpireTime', null);\n\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tonChange={(newvalue) => {\n\t\t\t\t\t\t\t\t\t\t\tonChange(newvalue.map((val) => ({ coupon: val.Hash, count: 1 })));\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonIncrease={(coupon) => {\n\t\t\t\t\t\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\t\t\t\t\tonChange([{ coupon: coupon.Hash, count: 1 }]);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tlet _value = [...value];\n\t\t\t\t\t\t\t\t\t\t\tlet index = _value.findIndex((c) => c.coupon === coupon.Hash);\n\t\t\t\t\t\t\t\t\t\t\tif (index > -1) _value[index].count++;\n\t\t\t\t\t\t\t\t\t\t\telse _value.push({ coupon: coupon.Hash, count: 1 });\n\t\t\t\t\t\t\t\t\t\t\tonChange(_value);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tonDecrease={(coupon) => {\n\t\t\t\t\t\t\t\t\t\t\tlet _value = [...value];\n\t\t\t\t\t\t\t\t\t\t\tlet index = _value.findIndex((c) => c.coupon === coupon.Hash);\n\t\t\t\t\t\t\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t_value[index].count--;\n\t\t\t\t\t\t\t\t\t\t\t\tif (_value[index].count < 1) _value.splice(index, 1);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tonChange(_value);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t{...fieldProps}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{t('labels:couponexpiretime') + ' *'}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!couponBoxOpen) return true;\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (!moment(value).isValid()) return 'Invalid date';\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (moment().isSameOrAfter(moment(value))) return 'Expire time must be in the future';\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (watch('ScheduledTime') && moment(value).isBefore(moment(watch('ScheduledTime'))))\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn 'Expire time must be after scheduled time';\n\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\trender={({\n\t\t\t\t\t\t\t\t\t\t\t\tfield: { onChange, ...fieldProps },\n\t\t\t\t\t\t\t\t\t\t\t\tfieldState: { error: expireTimeError },\n\t\t\t\t\t\t\t\t\t\t\t\tformState: { isSubmitting },\n\t\t\t\t\t\t\t\t\t\t\t}) => (\n\t\t\t\t\t\t\t\t\t\t\t\t onChange(moment(value).format('YYYY-MM-DDTHH:mm:00'))}\n\t\t\t\t\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstartAdornment: watch('CouponExpireTime') && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t onChange(null)}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\tInputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n\t\t\t\t\t\t\t\t\t\t\t\t\trenderInput={(params) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t/>\n\t\t\n\t);\n};\n\nconst ScheduleMessageBox = ({ t, control, disabled, watch }) => {\n\tconst [scheduledBoxOpen, setScheduledBoxOpen] = useState(!!watch('ScheduledTime'));\n\n\tconst toggleBoxOpen = (e, onChange) => {\n\t\tif (e.target.checked) onChange(moment().add(1, 'days').format('YYYY-MM-DDTHH:mm:00'));\n\t\tsetScheduledBoxOpen(e.target.checked);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\t\tif (!scheduledBoxOpen) return true;\n\t\t\t\t\t\t\tif (!moment(value).isValid()) return 'Invalid date';\n\t\t\t\t\t\t\tif (moment().isSameOrAfter(moment(value))) return 'Scheduled time must be in the future';\n\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\trender={({ field: { onChange, value, ...fieldProps }, fieldState: { error }, formState: { isSubmitting } }) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{t('labels:scheduleto')}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t toggleBoxOpen(e, onChange)} />}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tlabel={t('labels:schedulemessage')}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t onChange(null)}>\n\t\t\t\t\t\t\t\t onChange(moment(value).format('YYYY-MM-DDTHH:mm:00'))}\n\t\t\t\t\t\t\t\t\tInputProps={{\n\t\t\t\t\t\t\t\t\t\tstartAdornment: value && (\n\t\t\t\t\t\t\t\t\t\t\t onChange(null)}>\n\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\t{' '}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tInputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n\t\t\t\t\t\t\t\t\trenderInput={(params) => }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\n\t\t\n\t);\n};\n\nconst SendMessageDialog = ({ to, brandhash, open, onClose, values }) => {\n\tconst { t } = useTranslation(['labels', 'actions', 'prompts']);\n\tconst { hasPermissions } = useContext(UserContext);\n\n\tconst {\n\t\tcontrol,\n\t\thandleSubmit,\n\t\twatch,\n\t\tregister,\n\t\tsetValue,\n\t\tformState: { isSubmitting },\n\t} = useForm({\n\t\tmode: 'onChange',\n\t\tshouldUnregister: true,\n\t\treValidateMode: 'onChange',\n\t\tdefaultValues: values || {\n\t\t\tTo: to || [],\n\t\t\tBrand: brandhash,\n\t\t},\n\t});\n\n\tregister('Hash');\n\tregister('Brand');\n\tregister('BrandHash');\n\tregister('Coupons');\n\tregister('ScheduledTime');\n\tregister('CouponExpireTime');\n\n\tconst { useSendMessage, useUpdateMessage } = useMessageApi();\n\n\tconst { isLoading: updating, mutateAsync: updateMessage } = useUpdateMessage;\n\tconst { isLoading: sending, mutateAsync: sendMessage } = useSendMessage;\n\n\tconst onSubmit = async (payload) =>\n\t\tvalues\n\t\t\t? await updateMessage(\n\t\t\t\t\t{\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tCouponExpireTime: payload.CouponExpireTime ? moment(payload.CouponExpireTime).locale('en-gb').format('YYYY-MM-DDTHH:mm:00') : null,\n\t\t\t\t\t\tScheduledTime: payload.ScheduledTime ? moment(payload.ScheduledTime).locale('en-gb').format('YYYY-MM-DDTHH:mm:00') : null,\n\t\t\t\t\t},\n\t\t\t\t\t{ onSuccess: onClose }\n\t\t\t )\n\t\t\t: await sendMessage(\n\t\t\t\t\t{\n\t\t\t\t\t\t...payload,\n\t\t\t\t\t\tCouponExpireTime: payload.CouponExpireTime ? moment(payload.CouponExpireTime).locale('en-gb').format('YYYY-MM-DDTHH:mm:00') : null,\n\t\t\t\t\t\tScheduledTime: payload.ScheduledTime ? moment(payload.ScheduledTime).locale('en-gb').format('YYYY-MM-DDTHH:mm:00') : null,\n\t\t\t\t\t},\n\t\t\t\t\t{ onSuccess: onClose }\n\t\t\t );\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t (\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t {\n\t\t\t\t\t\t\tif (value?.length > 100) {\n\t\t\t\t\t\t\t\treturn t('prompts:charlimitexceeded');\n\t\t\t\t\t\t\t} else return true;\n\t\t\t\t\t\t},\n\t\t\t\t\t}}\n\t\t\t\t\trender={({ field, fieldState: { error } }) => (\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t/>\n\t\t\t\t{hasPermissions('coupons:issue') && (\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default SendMessageDialog;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport TelegramIcon from '@mui/icons-material/Telegram';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport SendMessageDialog from '../../message/message.send.dialog';\n\nconst SendMessageAction = ({ brandhash, to, ...otherProps }) => {\n const { t } = useTranslation(['actions']);\n\n const [messageFormOpen, setMessageFormOpen] = useState(false);\n const toggleMessageFormOpen = () => setMessageFormOpen(!messageFormOpen);\n\n return (\n <>\n } permissions={['message:send']} {...otherProps} />\n {\n messageFormOpen &&\n \n }\n \n );\n}\n\nexport default SendMessageAction;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory, useLocation } from 'react-router';\n\n// Components\nimport Action from './action.component';\n\nconst PageNavigator = ({ name, label, path, hash, removeScrollCache, ...otherProps }) => {\n const history = useHistory();\n const location = useLocation();\n const { t } = useTranslation(['actions']);\n\n const selected = (path === location.pathname);\n\n return {\n history.push(path);\n if (removeScrollCache) {\n localStorage.removeItem('bw-live-preferences-clients-table-scroll-offset');\n localStorage.removeItem('bw-live-preferences-passes-table-scroll-offset');\n }\n }} {...otherProps} />\n}\n\nexport default PageNavigator;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocation } from 'react-router';\n\n// Material UI\nimport List from '@mui/material/List';\nimport Menu from '@mui/material/Menu';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\n// Material UI Icons\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\n// Components\nimport Icon from '../_components/icon.component';\nimport PageNavigator from '../_components/navigation/navbar/page.navigator.action.component';\n\nconst BrandSubscriptionsNavigator = ({ pages }) => {\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n const { pathname } = useLocation();\n\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const selectedpage = pages.find(p => p.path === pathname)\n\n const showdroparrow = pages.length > 2\n\n return (\n <>\n showdroparrow && openMenu(event)} sx={{ width: { xs: 180, sm: 240, md: 'auto' }, gap: 1, alignItems: 'center', ...(showdroparrow && { cursor: 'pointer' }) }} >\n \n {selectedpage?.label}\n {\n showdroparrow &&\n \n \n \n }\n \n \n \n {\n pages.map((p, key) =>\n )\n }\n \n \n \n );\n}\n\nexport default BrandSubscriptionsNavigator;","import { useQuery, useQueries, useQueryClient, useMutation, } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\nimport { some } from 'lodash';\n\n// Api\nimport { get, post, patch } from '../../_api/api'\n\nconst usePassApi = () => {\n const { enqueueSnackbar } = useSnackbar();\n const queryClient = useQueryClient();\n const { t } = useTranslation(['errors', 'prompts']);\n const useFetchPass = (passhash) => useQuery([passhash, 'pass'], async () => get(`/Pass/${passhash}`), { enabled: !!passhash, });\n\n const useFetchPassWithDetails = (passhash, brandhash) => {\n const results = useQueries([\n { queryKey: [passhash, 'pass'], queryFn: () => get(`/Pass/${passhash}`) },\n { queryKey: [passhash, 'pass-birthday-actions'], queryFn: () => get(`/Pass/birthday-actions?pass=${passhash}`) },\n { queryKey: [passhash, 'pass-relevance-texts'], queryFn: () => get(`/Pass/relevance-text?pass=${passhash}`) },\n { queryKey: [passhash, 'pass-promos'], queryFn: () => get(`/Promo?pass=${passhash}`) },\n // The following coupons belong to the brand, thats why we need brandhash\n { queryKey: [brandhash, 'coupons'], queryFn: () => get(`/Product/coupon?brand=${brandhash}`) },\n // TODO: Promolar eklenecek\n ]);\n\n return {\n data: (!some(results, { isLoading: true })) &&\n {\n ...(results?.[0].data),\n birthdayactions: results?.[1].data,\n relevancetexts: results?.[2].data,\n },\n isError: results?.[0].isError,\n isFetching: some(results, { isFetching: true }),\n isLoading: some(results, { isLoading: true }),\n refetch: results?.[0].refetch,\n }\n }\n const useCreatePass = useMutation(newPass => post('/Pass', newPass),\n {\n onSuccess: async (data, variables) => {\n enqueueSnackbar(t('prompts:passcreated'), { variant: 'success' });\n queryClient.invalidateQueries('passes', { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreateclient')} - ${error.status}`, { variant: 'error' })\n });\n\n const useCreateQRCode = useMutation(passId => post('/Promo/create-promo-download-url', {\n PassId: passId,\n Channel: 1,\n Type: 3\n }, {\n onError: () => enqueueSnackbar(t('errors:couldnotcreateqrcode'), { variant: 'error' }),\n onSuccess: () => enqueueSnackbar(t('prompts:qrcodecreated'), { variant: 'success' })\n }))\n\n const useCreateCampaign = useMutation(newCampaign => post('/Campaign', newCampaign),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:campaigncreated'), { variant: 'success' });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatecampaign')} - ${error.status}`, { variant: 'error' })\n });\n\n const useFetchPassDesign = (passhash) => useQuery([passhash, 'pass-design'], async () => get(`/Pass/${passhash}/design`), { enabled: !!passhash, });\n const useFetchPasses = (brandhash) => {\n let key = 'passes';\n let query = '/Pass';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = [brandhash, 'passes'];\n query = `/Pass?brand=${brandhash}`;\n }\n\n return useQuery(key, async () => get(query), { staleTime: 1000 * 60 * 10 });\n }\n const useFetchCampaigns = (passhash) => useQuery([passhash, 'pass-campaigns'], async () => get(`/Campaign?pass=${passhash}`), { staleTime: 1000 * 60 * 60 });\n\n const useFetchBrandCampaigns = (brandhash) => useQuery([brandhash, 'brand-campaigns'], async () => get(`/Campaign?brand=${brandhash}`));\n\n const useFetchEnroll = (passhash) => useQuery([passhash, 'pass-enroll'], async () => get(`/Pass/${passhash}/form`));\n\n const useCreateEnroll = useMutation(newEnroll => patch(`/Pass/${newEnroll.Pass}/form`, newEnroll),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:enrollupdated'), { variant: 'success' });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateenroll')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateAllSubscribers = useMutation(passhash => post(`/Message/send-update-to-pass/${passhash}`), {\n onSuccess: (data) => {\n enqueueSnackbar(`${data} ${t('prompts:allsubscribersupdated')}`, { variant: 'success' });\n },\n onError: (error) => {\n enqueueSnackbar(`${t('errors:couldnotupdateallsubscribers')} - ${error.status}`, { variant: 'error' })\n }\n });\n\n const useCustomActionCampaign = useMutation(Payload => post(`/Transaction/${Payload.endpoint}`, Payload),\n {\n onError: (error) => enqueueSnackbar(`${error.message}`, { variant: 'error' })\n });\n\n\n return {\n useFetchPass,\n useFetchPasses,\n useFetchPassWithDetails,\n useFetchPassDesign,\n useCreateCampaign,\n useFetchEnroll,\n useCreateEnroll,\n useCreateQRCode,\n useUpdateAllSubscribers,\n useCreatePass,\n useFetchCampaigns,\n useFetchBrandCampaigns,\n useCustomActionCampaign\n }\n}\n\nexport default usePassApi;\n","import React, { useContext, useState } from 'react';\nimport { useParams } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport { Menu as MuiMenu } from '@mui/material';\nimport Typography from '@mui/material/Typography';\nimport useMediaQuery from '@mui/material/useMediaQuery';\n\n// MUI Icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\n// Components\nimport BrandInfoAvatar from './brand.info.avatar';\nimport UserAvatar from '../_components/navigation/useravatar.component';\nimport SendMessageAction from '../message/actions/send.message.action';\nimport BrandSubscriptionsNavigator from './brand.subscriptions.component';\nimport PageNavigator from '../_components/navigation/navbar/page.navigator.action.component';\n\n// Api\nimport usePassApi from '../pass/api/usePassApi';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\nconst getPages = (brandhash, passes, brand, t) => {\n var pages = [];\n\n // First add Dashboard / Overview page\n // Check the user type and set path accordingly\n pages.push({\n name: 'overview',\n label: t('labels:overview'),\n variant: 'list',\n path: brandhash ? `/${brandhash}` : '/',\n size: 'medium',\n });\n\n // Check if the brand has passes\n // Then add these passes as avatars - to be used in the subscription selector\n passes?.forEach(p => pages.push({\n name: 'pass',\n label: p.Name,\n variant: 'list',\n path: brandhash ? `/${brandhash}/pass/${p.Hash}` : `/pass/${p.Hash}`,\n size: 'medium',\n }));\n\n // Check if the brand has passes\n // Then add pass related pages. Subscribers, Transactions, maybe Products\n if (passes?.length > 0) {\n pages.push({\n name: 'subscribers',\n variant: 'textbutton',\n color: 'secondary',\n path: brandhash ? `/${brandhash}/subscribers` : `/subscribers`,\n permissions: ['admin:viewallpages', 'subscribers:view']\n });\n pages.push({\n name: 'transactions',\n variant: 'textbutton',\n color: 'secondary',\n path: brandhash ? `/${brandhash}/transactions` : `/transactions`,\n permissions: ['admin:viewallpages', 'transactions:viewchart', 'transactions:view']\n })\n }\n\n // If the brand is a Foodics client, add the products page link\n if (brand?.Config?.IntegrationPartner === 1 || brand?.Config?.IntegrationPartner === 2) {\n pages.push({\n name: 'products',\n variant: 'iconbutton',\n color: 'secondary',\n path: brandhash ? `/${brandhash}/products` : `/products`,\n permissions: ['admin:viewallpages', 'products:view']\n })\n }\n\n // Add the brand settings page\n pages.push({\n name: 'settings',\n variant: 'iconbutton',\n path: brandhash ? `/${brandhash}/settings` : `/settings`,\n permissions: ['admin:viewallpages', 'clientsettings:view']\n });\n\n return pages;\n}\n\nconst Menu = ({ children }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (e) => setAnchorEl(e.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n return (\n <>\n \n \n \n \n {children}\n \n \n )\n}\n\nconst BrandNavBar = ({ brand }) => {\n const { user } = useContext(UserContext);\n const { brandhash } = useParams();\n const { t } = useTranslation(['labels']);\n\n const { useFetchPasses } = usePassApi();\n const { data: passes, isLoading } = useFetchPasses(brandhash);\n const matches = useMediaQuery((theme) => theme.breakpoints.down('lg'));\n\n if (isLoading)\n return ;\n\n const pages = getPages(brandhash, passes, brand, t);\n const isSystemUser = user.UserType === 1 || user.UserType === 8;\n\n return (\n \n {\n (user.UserType !== 1 && user.UserType !== 8) &&\n BW\n }\n p.variant === 'list')} />\n \n {\n matches ?\n <>\n {\n isSystemUser ?\n \n :\n {user?.FullName}\n }\n \n \n {\n pages.filter(p => p.variant !== 'list').map((p, key) => )\n }\n {\n !isSystemUser && \n }\n \n \n :\n <>\n {\n pages.filter(p => p.variant !== 'list').map((p, key) => )\n }\n {\n isSystemUser\n ? \n : \n }\n \n }\n \n );\n}\n\nexport default BrandNavBar;\n\n/*\n\n // Special Cases\n // If the brand has an integration partner, add products button. They will need it\n if (brand?.Config?.IntegrationPartner)\n pages.push({\n name: 'products',\n path: `/${brand.Hash}/products`,\n variant: 'iconbutton',\n permissions: ['admin:viewallpages', 'products:view']\n })\n\n\nconst BrandNavBarSmall = ({ brand }) => {\n const { user } = useContext(UserContext);\n const pages = getPages(brand, user);\n\n return (\n \n \n {\n user.UserType !== 1 &&\n BW\n }\n \n \n {\n user.UserType === 1\n ? \n : \n }\n \n \n {\n pages.filter(p => p.variant !== 'list').map(p =>\n \n )\n }\n {\n (user.UserType === 1) &&\n <>\n \n \n \n }\n \n \n );\n}\n*/","import React from 'react';\n\n// Material UI\nimport Button from '@mui/material/Button';\nimport RefreshIcon from '@mui/icons-material/Refresh';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst Error = (props) => {\n const { error, refetch } = props\n\n return (\n \n {error}\n {\n refetch &&\n \n }\n \n )\n}\n\nexport default Error;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport Backdrop from '@mui/material/Backdrop';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Components\nimport SendMessageDialog from '../message.send.dialog';\nimport Action from '../../_components/navigation/navbar/action.component';\n\n// API\nimport useMessageApi from '../api/useMessageApi';\n\nconst MessageEditAction = (props) => {\n const { t } = useTranslation(['actions', 'prompts']);\n const { message, onClose, disabled } = props;\n const [openEdit, setOpenEdit] = useState(false);\n\n const { useFetchSingleMessage } = useMessageApi();\n const { mutate, isLoading, reset } = useFetchSingleMessage;\n\n const handleOpenEdit = () => {\n reset();\n mutate(message, {\n onSuccess: (response) => {\n if (response) setOpenEdit(true);\n else onClose();\n },\n });\n };\n\n const handleCloseEdit = () => {\n setOpenEdit(false);\n onClose();\n };\n\n return (\n <>\n }\n disabled={disabled}\n label={t('actions:editmessage')}\n size=\"medium\"\n onClick={handleOpenEdit}\n // permissions={['message:editmessage']}\n />\n \n \n \n \n \n );\n};\n\nexport default MessageEditAction;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// Mui Icons\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Api\nimport useMessageApi from '../api/useMessageApi';\n\nconst DeleteMessageAction = (props) => {\n const { t } = useTranslation(['actions', 'prompts']);\n const { message, onClose, disabled } = props;\n\n const { useDeleteMessage } = useMessageApi();\n const { isLoading: deleting, mutate: deleteMessage } = useDeleteMessage;\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n return (\n <>\n }\n disabled={disabled}\n label={t('actions:deletemessage')}\n size=\"medium\"\n onClick={handleConfirmOpen}\n // permissions={['message:deletepromo']}\n />\n \n deleteMessage(message, {\n onSuccess: () => {\n handleConfirmOpen();\n onClose();\n },\n onError: handleConfirmOpen,\n })\n }\n open={confirmOpen}\n onClose={handleConfirmOpen}\n />\n \n );\n};\n\nexport default DeleteMessageAction;\n","import React from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\nconst WidgetRow = props => {\n\tconst { children } = props;\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n};\n\nexport default WidgetRow;\n","\nexport function abbreviateNumber(value) {\n if (typeof value === 'string' || !value) return value\n return Intl.NumberFormat('en', { notation: 'compact' }).format(value);\n}\n\nexport function getLuma(code) {\n if (!code) return 100;\n var c = code.substring(1); // strip #\n var rgb = parseInt(c, 16); // convert rrggbb to decimal\n var r = (rgb >> 16) & 0xff; // extract red\n var g = (rgb >> 8) & 0xff; // extract green\n var b = (rgb >> 0) & 0xff; // extract blue\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b; // per ITU-R BT.709\n}","import React from 'react';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\n// Helpers\nimport { abbreviateNumber } from '../../_helpers/function.helper';\n\nconst WidgetLabel = props => {\n\tconst { label, value, variant, color, secondvalue, secondvariant, secondcolor, thirdvalue, thirdvariant, thirdcolor } = props;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{label}\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{abbreviateNumber(value)}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{secondvalue && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{abbreviateNumber(secondvalue)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{thirdvalue && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{abbreviateNumber(thirdvalue)}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default WidgetLabel;\n","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\nconst WidgetPaper = props => {\n const { disableBg, children } = props;\n\n return (\n \n {children}\n \n )\n}\n\nexport default WidgetPaper\n","import React from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Material UI Icons\nimport RefreshIcon from '@mui/icons-material/Refresh';\n\n// Components\nimport Action from '../navigation/navbar/action.component';\n\nconst RefetchButton = ({ variant, title, size, fetching, disabled, color, onClick }) => {\n if (fetching)\n return (\n \n \n \n );\n else\n return }\n />\n}\n\nexport default RefetchButton;","import React, { useState, useEffect } from 'react'\n\n// Material Ui\nimport Typography from '@mui/material/Typography';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Stack from '@mui/material/Stack';\n\n// Material Icons\nimport FilterList from '@mui/icons-material/FilterList';\n\n// Components\nimport Action from '../../navigation/navbar/action.component';\n\nconst FilterSelector = props => {\n const { title, size, showSelected, filters, onFilterSelect, disabled } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n const [selected, setSelected] = useState(filters.find((filter) => filter.default));\n\n const selectFilter = filter => {\n setSelected(filter)\n setAnchorEl(null);\n };\n\n useEffect(() => onFilterSelect(selected), [selected, onFilterSelect]);\n\n return (\n \n {\n showSelected &&\n setAnchorEl(e.currentTarget)}\n sx={{ cursor: 'pointer', }}\n >\n {selected?.title}\n \n }\n setAnchorEl(e.currentTarget)} icon={} />\n setAnchorEl(null)}>\n {\n filters.map(filter => {\n return (filter.header)\n ?
    {filter.label}
    \n : selectFilter(filter)} selected={(filter.value === selected?.value)}>{filter.label}\n })\n }\n \n
    \n );\n}\n\nexport default FilterSelector;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport CallMadeIcon from '@mui/icons-material/CallMade';\nimport TrendingUpIcon from '@mui/icons-material/TrendingUp';\n\n// Components\nimport RefetchButton from '../buttons/refetch.button';\nimport TooltipIconButton from '../buttons/tooltip.icon.button';\nimport FilterSelector from '../filter/filterselector/filter.selector.component';\n\nconst config = {\n\tsmall: {\n\t\theight: 30,\n\t\tvariant: 'body1',\n\t\tbuttonsize: 'small',\n\t},\n\tmedium: {\n\t\theight: 48,\n\t\ttextvariant: 'h6',\n\t\tbuttonsize: 'medium',\n\t},\n\tlarge: {\n\t\theight: 64,\n\t\ttextvariant: 'h5',\n\t\tbuttonsize: 'medium',\n\t},\n};\n\nconst WidgetToolbar = ({ size, title, filters, refetch, isFetching, isLoading, onFilterSelect, onExpand, onInsight, localization }) => {\n\tconst { t } = useTranslation(['labels']);\n\tconst buttonsize = config[size].buttonsize;\n\n\treturn (\n\t\t\n\t\t\t{title && (\n\t\t\t\t\n\t\t\t\t\t{' '}\n\t\t\t\t\t{title}\n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t{onFilterSelect && filters && }\n\t\t\t{onExpand && } />}\n\t\t\t{onInsight && } />}\n\t\t\t{refetch && }\n\t\t\n\t);\n};\n\nWidgetToolbar.defaultProps = {\n\tsize: 'small',\n\ttitle: '',\n};\n\nWidgetToolbar.propTypes = {\n\tsize: PropTypes.oneOf(['small', 'medium', 'large']),\n\tfilters: PropTypes.array,\n\trefetch: PropTypes.func,\n\tisFetching: PropTypes.bool,\n\tisLoading: PropTypes.bool,\n\tonFilterSelect: PropTypes.func,\n\tonExpand: PropTypes.func,\n\tonInsight: PropTypes.func,\n};\n\nexport default WidgetToolbar;\n","import React, { useState } from 'react';\nimport moment from 'moment';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { sumBy } from 'lodash';\nimport { useParams } from 'react-router-dom';\n\n// MUI\nimport Menu from '@mui/material/Menu';\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\nimport Avatar from '@mui/material/Avatar';\nimport Divider from '@mui/material/Divider';\nimport ListItem from '@mui/material/ListItem';\nimport Typography from '@mui/material/Typography';\nimport ListItemText from '@mui/material/ListItemText';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\n\n// MUI Icons\nimport PersonIcon from '@mui/icons-material/Person';\nimport TelegramIcon from '@mui/icons-material/Telegram';\nimport ScheduleSendIcon from '@mui/icons-material/ScheduleSend';\nimport CommentsDisabledIcon from '@mui/icons-material/CommentsDisabled';\n\n// Components\nimport Error from '../../_components/error.component';\nimport EditMessageAction from '../actions/edit.message.action';\nimport SendMessageAction from '../actions/send.message.action';\nimport DeleteMessageAction from '../actions/delete.message.action';\nimport WidgetRow from '../../_components/widgets/widget.row.component';\nimport WidgetLabel from '../../_components/widgets/widget.label.component';\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\nimport TooltipIconButton from '../../_components/buttons/tooltip.icon.button';\nimport WidgetToolbar from '../../_components/widgets/widget.toolbar.component';\n\n// Api\nimport useMessageApi from '../api/useMessageApi';\n\nconst MessageActions = ({ message, disabled }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n\n const open = Boolean(anchorEl);\n\n const handleClick = (event) => setAnchorEl(event.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n return (\n
    \n } />\n \n \n \n \n
    \n );\n};\nconst MessageItem = ({ message, disabled }) => {\n const isScheduled = message.ScheduledTime !== '0001-01-01T00:00:00.000';\n\n return (\n <>\n \n }>\n \n {isScheduled ? : }\n \n }\n secondary={\n \n \n {moment(message.CreatedAt).format('DD MMM YYYY HH:mm')}\n \n \n \n {message.Count}\n \n \n }\n />\n \n \n );\n};\nconst MessagesStatsLargeWidget = () => {\n const { t } = useTranslation(['labels', 'actions', 'errors', 'prompts']);\n const { brandhash } = useParams();\n\n const { useFetchMessages } = useMessageApi();\n const { data, isFetching, isLoading, error, refetch } = useFetchMessages(brandhash);\n\n return (\n \n \n {error && !data && }\n {data?.length <= 0 && (\n \n \n }} />\n \n \n )}\n {data?.length > 0 && (\n <>\n \n \n \n \n \n \n {data?.map((message, index) => (\n <>\n \n {index < data?.length - 1 && }\n \n ))}\n \n \n \n )}\n {data && }\n \n );\n};\n\nexport default MessagesStatsLargeWidget;\n","import { useState, useCallback, useEffect } from 'react';\n\nconst useAsyncFunc = (asyncFunction, executenow = false) => {\n const [state, setState] = useState({ status: 'idle', data: null, error: null, });\n\n const execute = useCallback((...args) => {\n setState({ status: 'running', data: null, error: null, });\n\n return asyncFunction(...args)\n .then((response) => setState({ status: 'success', data: response, error: null, }))\n .catch((error) => setState({ status: 'error', data: null, error: error, }))\n }, [asyncFunction]);\n\n useEffect(() => (executenow) && execute(), [executenow, execute]);\n\n return {\n execute,\n data: state.data,\n status: state.status,\n isRunning: state.status === 'running',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n error: state.error\n };\n};\n\nexport default useAsyncFunc;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { some } from 'lodash';\n\n// Apex Chart\nimport ReactApexChart from 'react-apexcharts';\nimport { useMediaQuery } from '@mui/material';\n\nconst options = {\n\tchart: {\n\t\tid: 'subs-chart2',\n\t\ttype: 'line',\n\t\twidth: '100%',\n\t\ttoolbar: {\n\t\t\tautoSelected: 'pan',\n\t\t\tshow: false,\n\t\t},\n\t\tzoom: {\n\t\t\tenabled: false,\n\t\t},\n\t\tredrawOnParentResize: true,\n\t\tredrawOnWindowResize: true,\n\t\tanimations: {\n\t\t\tenabled: false,\n\t\t},\n\t},\n\txaxis: {\n\t\ttype: 'datetime',\n\t\ttooltip: {\n\t\t\tenabled: false,\n\t\t},\n\t},\n\tyaxis: {\n\t\tlabels: {\n\t\t\tformatter: value => new Intl.NumberFormat().format(value),\n\t\t},\n\t},\n\tcolors: ['SteelBlue', '#CB4335', '#DDA0DD', 'LightPink'],\n\tstroke: {\n\t\twidth: 1,\n\t\tcurve: 'smooth',\n\t},\n\tlegend: {\n\t\tshow: true,\n\t\tposition: 'bottom',\n\t\thorizontalAlign: 'right',\n\t\tonItemClick: {\n\t\t\ttoggleDataSeries: true,\n\t\t},\n\t\tonItemHover: {\n\t\t\thighlightDataSeries: true,\n\t\t},\n\t},\n\tdataLabels: {\n\t\tenabled: false,\n\t},\n\tmarkers: {\n\t\tsize: 0,\n\t},\n};\n\nconst optionsLine = {\n\tchart: {\n\t\tanimations: {\n\t\t\tenabled: false,\n\t\t},\n\t\tid: 'subs-chart1',\n\t\theight: 130,\n\t\ttype: 'area',\n\t\tbrush: {\n\t\t\ttarget: 'subs-chart2',\n\t\t\tenabled: true,\n\t\t},\n\t\tselection: {\n\t\t\tenabled: true,\n\t\t},\n\t},\n\tcolors: ['SteelBlue', '#CB4335', '#DDA0DD', 'LightPink'],\n\tfill: {\n\t\ttype: 'gradient',\n\t\tgradient: {\n\t\t\topacityFrom: 0.91,\n\t\t\topacityTo: 0.1,\n\t\t},\n\t},\n\txaxis: {\n\t\ttype: 'datetime',\n\t\ttooltip: {\n\t\t\tenabled: false,\n\t\t},\n\t},\n\tyaxis: {\n\t\ttickAmount: 2,\n\t},\n};\n\nconst SubscribersTimeLineChart = props => {\n\tconst { data } = props;\n\tconst { t } = useTranslation(['labels']);\n\tconst matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\n\tif (!data) return null;\n\n\tvar series = [];\n\n\tif (some(data.New, val => val[1] !== 0))\n\t\tseries.push({\n\t\t\tname: t('labels:new'),\n\t\t\tdata: data.New,\n\t\t});\n\tif (some(data.Deleted, val => val[1] !== 0))\n\t\tseries.push({\n\t\t\tname: t('labels:deleted'),\n\t\t\tdata: data.Deleted,\n\t\t});\n\tif (some(data.Enrolled, val => val[1] !== 0))\n\t\tseries.push({\n\t\t\tname: t('labels:enrolled'),\n\t\t\tdata: data.Enrolled,\n\t\t});\n\tif (some(data.ATWClicked, val => val[1] !== 0))\n\t\tseries.push({\n\t\t\tname: t('labels:atwclicked'),\n\t\t\tdata: data.ATWClicked,\n\t\t});\n\n\treturn (\n\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t{!matches && }\n\t\t
    \n\t);\n};\n\nexport default SubscribersTimeLineChart;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\nimport { forEach } from 'lodash';\n\n// Helpers\nimport useAsyncFunc from '../../_helpers/async.func.helper';\n\n// Components\nimport Error from '../../_components/error.component';\nimport WidgetRow from '../../_components/widgets/widget.row.component';\nimport SubscribersTimeLineChart from '../charts/subscribers.timeline.chart';\nimport WidgetLabel from '../../_components/widgets/widget.label.component';\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\nimport WidgetToolbar from '../../_components/widgets/widget.toolbar.component';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Skeleton from '@mui/material/Skeleton';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst prepWidgetData = async data => {\n\tif (!data) return null;\n\n\tvar widgetdata = {\n\t\ttoday: { New: 0, Deleted: 0 },\n\t\tthisMonth: { New: 0, Deleted: 0 },\n\t\ttotals: { Total: 0, Active: 0, Deleted: 0, iOS: 0, Android: 0, AcceptsNoti: 0, Pending: 0 },\n\t};\n\n\tforEach(data, stat => {\n\t\tif (moment(stat.Date, 'MM/DD/YYYY hh:mm:ss').isSame(moment(), 'day')) {\n\t\t\twidgetdata.today.New += stat.New + stat.ATWClicked + stat.Enrolled;\n\t\t\twidgetdata.today.Deleted += stat.Deleted;\n\t\t}\n\t\tif (moment(stat.Date, 'MM/DD/YYYY hh:mm:ss').isSame(moment(), 'month')) {\n\t\t\twidgetdata.thisMonth.New += stat.New + stat.ATWClicked + stat.Enrolled;\n\t\t\twidgetdata.thisMonth.Deleted += stat.Deleted;\n\t\t}\n\t\twidgetdata.totals.Total += stat.New + stat.ATWClicked + stat.Enrolled + stat.Blocked + stat.Deleted;\n\t\twidgetdata.totals.Active += stat.New;\n\t\twidgetdata.totals.Deleted += stat.Deleted;\n\t\twidgetdata.totals.iOS += stat.iOS;\n\t\twidgetdata.totals.Android += stat.Android;\n\t\twidgetdata.totals.AcceptsNoti += stat.AcceptsNoti;\n\t\twidgetdata.totals.Pending += stat.Pending;\n\t});\n\n\twidgetdata.totals.DailyAverage = widgetdata.totals.Total ? (widgetdata.totals.Total / data.length).toFixed(2) : 0;\n\n\treturn widgetdata;\n};\n\nconst prepChartData = async params => {\n\tconst { data, filter } = params;\n\tif (!data) return null;\n\n\tvar chartdata = {\n\t\tNew: [],\n\t\tDeleted: [],\n\t\tEnrolled: [],\n\t\tATWClicked: [],\n\t};\n\n\tforEach(data, (stat, index) => {\n\t\tchartdata.New.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.New : chartdata.New[index - 1][1] + stat.New]);\n\t\tchartdata.Deleted.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Deleted : chartdata.Deleted[index - 1][1] + stat.Deleted]);\n\t\tchartdata.Enrolled.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Enrolled : chartdata.Enrolled[index - 1][1] + stat.Enrolled]);\n\t\tchartdata.ATWClicked.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.ATWClicked : chartdata.ATWClicked[index - 1][1] + stat.ATWClicked]);\n\t});\n\n\treturn chartdata;\n};\n\nconst SubscribersStatsLargeWidget = ({ brandhash, passhash, disableBg }) => {\n\tconst { t } = useTranslation(['labels', 'errors']);\n\n\tconst filters = [\n\t\t{\n\t\t\tlabel: t('labels:daily'),\n\t\t\ttitle: t('labels:daily'),\n\t\t\tvalue: 'daily',\n\t\t\tdefault: true,\n\t\t},\n\t\t{\n\t\t\tlabel: t('labels:cumulative'),\n\t\t\ttitle: t('labels:cumulative'),\n\t\t\tvalue: 'cumulative',\n\t\t},\n\t];\n\n\tconst [filter, setFilter] = useState(filters.find(filter => filter.default));\n\tconst { useFetchSubscriberStats } = useSubscriberApi();\n\tconst { data, isFetching, isLoading, error, refetch } = useFetchSubscriberStats(brandhash, passhash);\n\n\tconst { execute: runchartdata, data: chartdata } = useAsyncFunc(prepChartData, false);\n\tconst { execute: runwidgetdata, data: widgetdata } = useAsyncFunc(prepWidgetData, false);\n\n\tuseEffect(() => runchartdata({ data: data, filter: filter.value }), [runchartdata, filter, data]);\n\tuseEffect(() => runwidgetdata(data), [runwidgetdata, data]);\n\n\tif (isLoading) return ;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{error && !data && }\n\t\t\t\t{widgetdata && chartdata && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartdata && }\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default SubscribersStatsLargeWidget;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { some } from 'lodash';\n\n// Apex Chart\nimport ReactApexChart from 'react-apexcharts';\nimport { useMediaQuery } from '@mui/material';\n\nconst options = {\n chart: {\n type: 'line',\n id: 'trans-chart2',\n width: '100%',\n toolbar: {\n show: false,\n },\n zoom: {\n enabled: false,\n },\n redrawOnParentResize: true,\n redrawOnWindowResize: true,\n animations: {\n enabled: false,\n },\n\n },\n xaxis: {\n type: 'datetime',\n tooltip: {\n enabled: false,\n }\n },\n yaxis: {\n labels: {\n formatter: (value) => new Intl.NumberFormat().format(value)\n },\n },\n colors: ['#2471A3', '#16A085', '#E67E22', '#B03A2E',],\n stroke: {\n width: 1,\n curve: 'smooth',\n },\n legend: {\n show: true,\n position: 'bottom',\n horizontalAlign: 'right',\n onItemClick: {\n toggleDataSeries: true\n },\n onItemHover: {\n highlightDataSeries: true\n },\n },\n dataLabels: {\n enabled: false,\n },\n markers: {\n size: 0,\n },\n tooltip: {\n x: {\n format: 'dd MMM yy dddd',\n },\n y: {\n formatter: (value) => new Intl.NumberFormat().format(value)\n }\n },\n}\n\nconst optionsLine = {\n chart: {\n animations: {\n enabled: false,\n },\n id: 'trans-chart1',\n height: 130,\n type: 'area',\n brush: {\n target: 'trans-chart2',\n enabled: true\n },\n selection: {\n enabled: true\n },\n },\n colors: [\n '#2471A3',\n '#16A085',\n '#E67E22',\n '#B03A2E',\n '#8E44AD',\n '#F1C40F',\n '#2ECC71',\n '#3498DB',\n '#F39C12',\n '#C0392B',\n ],\n fill: {\n type: 'gradient',\n gradient: {\n opacityFrom: 0.91,\n opacityTo: 0.1,\n }\n },\n xaxis: {\n type: 'datetime',\n tooltip: {\n enabled: false\n }\n },\n yaxis: {\n tickAmount: 2\n }\n};\n\nconst TransactionsTimeLineChart = (props) => {\n const { data } = props;\n const { t } = useTranslation(['labels']);\n const matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\n if (!data) return null;\n\n var series = [];\n\n if (some(data.Stamps, val => val[1] !== 0))\n series.push({\n name: t('labels:stamps'),\n data: data.Stamps,\n })\n if (some(data.Loyalty, val => val[1] !== 0))\n series.push({\n name: t('labels:loyalty'),\n data: data.Loyalty,\n })\n if (some(data.CouponRedeems, val => val[1] !== 0))\n series.push({\n name: t('labels:couponredeemed'),\n data: data.CouponRedeems,\n })\n if (some(data.Failed, val => val[1] !== 0))\n series.push({\n name: t('labels:failed'),\n data: data.Failed,\n })\n if (some(data.CouponIssued, val => val[1] !== 0))\n series.push({\n name: t('labels:couponsissued'),\n data: data.CouponIssued,\n })\n if (some(data.SubscriberUpdated, val => val[1] !== 0))\n series.push({\n name: t('labels:subscriberupdated'),\n data: data.SubscriberUpdated,\n })\n if (some(data.Events, val => val[1] !== 0))\n series.push({\n name: t('labels:events'),\n data: data.Events,\n })\n if (some(data.Rollback, val => val[1] !== 0))\n series.push({\n name: t('labels:rollback'),\n data: data.Rollback,\n })\n\n return (\n
    \n
    \n \n
    \n {\n !matches &&\n \n }\n
    \n );\n}\n\nexport default TransactionsTimeLineChart;","import { useQuery, useMutation, useQueryClient, useInfiniteQuery } from 'react-query';\nimport { get, patch, post } from '../../_api/api';\nimport { useSnackbar } from 'notistack';\nimport moment from 'moment';\n\nconst useTransactionApi = () => {\n const { enqueueSnackbar } = useSnackbar();\n const queryClient = useQueryClient();\n\n const useFetchTransactions = (from, hash) => {\n let key = 'transactions';\n let query = 'Transaction?pagesize=5000';\n\n if (from === 'brand') {\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (hash) {\n key = [hash, 'transactions'];\n query = `Transaction?pagesize=5000&brand=${hash}`;\n }\n } else if (from === 'subscriber') {\n key = [hash, 'sub-transactions'];\n query = `Transaction?pagesize=5000&subscriber=${hash}`;\n }\n\n return useQuery(key, async () => get(query), { enabled: !!from });\n };\n\n const useFetchTransactionsSpecificDate = (brandhash, date) =>\n useQuery([brandhash, 'transactions-specific-date'], async () => get(`Transaction?brand=${brandhash}&date=${date}`), { enabled: !!brandhash && !!date });\n\n const useFetchTransactionsWithDate = (brandhash, startdate, enddate) => {\n let key = ['transactions'];\n let query = `/Transaction?startdate=${startdate}&enddate=${enddate}`;\n\n if (brandhash) {\n key = [brandhash, 'transactions'];\n query = `/Transaction?brand=${brandhash}&startdate=${startdate}&enddate=${enddate}`;\n }\n\n return useQuery(key, async () => get(query));\n };\n\n const useFetchTransactionsInfiniteScroll = (limit, brandhash, staticFilters) =>\n useInfiniteQuery(\n ['transactions-infinite-scroll', brandhash],\n async ({ pageParam = undefined }) => {\n const { passes, merchants, campaigns, users, coupons, dateFilter } = staticFilters;\n let queryPayload = {\n limit,\n brand: brandhash,\n cursor: pageParam,\n startdate: moment.unix(dateFilter[0]).locale('en-gb').format('YYYY-MM-DD'),\n enddate: moment.unix(dateFilter[1]).locale('en-gb').format('YYYY-MM-DD'),\n };\n\n if (passes && passes.length > 0) queryPayload.passes = passes.map((p) => p.id);\n if (merchants && merchants.length > 0) queryPayload.merchants = merchants.map((p) => p.id);\n if (campaigns && campaigns.length > 0) queryPayload.campaigns = campaigns.map((p) => p.id);\n if (users && users.length > 0) queryPayload.users = users.map((p) => p.id);\n if (coupons && coupons.length > 0) queryPayload.coupons = coupons.map((p) => p.id);\n\n const res = await post('Transaction/infinite', queryPayload);\n return res;\n },\n {\n onError: (error) => {\n enqueueSnackbar('Failed fetching transactions...' + error.status, { variant: 'error' });\n },\n getNextPageParam: (lastPage) =>\n lastPage.TransactionsList.length === 100 ? lastPage.TransactionsList[lastPage.TransactionsList.length - 1].Hash : undefined,\n }\n );\n\n const useFetchTransactionStats = (brandhash, passhash) => {\n let key = 'tran-stats';\n let query = 'transaction/stats';\n\n // If we have a brandhash, System Manager is looking for that brands stats\n // We add the hash as query param\n if (brandhash) {\n key = [brandhash, 'brand-tran-stats'];\n query = `transaction/stats?brand=${brandhash}`;\n }\n\n // If we have a passhash, we are looking for that pass stats\n // We add the hash as query param\n if (passhash) {\n key = [passhash, 'pass-tran-stats'];\n query = `transaction/stats?pass=${passhash}`;\n }\n\n return useQuery(key, async () => get(`Insights/${query}`), { refetchOnMount: true });\n };\n\n const useFetchTransactionStatsDetailed = (brandhash) => {\n return useQuery([brandhash, 'brand-tran-stats'], async () => {\n // const stats = await get(`Insights/transaction/details?brand=${brandhash}`);\n // const passes = await get(`/Pass?brand=${brandhash}`);\n // const brand = await get(`/Brand/${brandhash}`);\n // const merchants = await get(`/Merchant?brand=${brandhash}`);\n // return await prepBrandTransStats(stats, brand, passes, merchants);\n });\n };\n\n const usePurgeTransaction = useMutation((transaction) => patch('/Subscriber/purge', [transaction.Hash]), {\n onSuccess: (_, transaction) => {\n enqueueSnackbar('Transaction purged successfuly', { variant: 'success' });\n queryClient.refetchQueries([transaction.BrandHash, 'transactions'], { exact: true });\n },\n onError: (error) => enqueueSnackbar(`Could not purge subscriber. Error: ${error.status}`, { variant: 'error' }),\n });\n\n return {\n useFetchTransactions,\n useFetchTransactionsWithDate,\n useFetchTransactionsInfiniteScroll,\n useFetchTransactionsSpecificDate,\n useFetchTransactionStats,\n useFetchTransactionStatsDetailed,\n usePurgeTransaction,\n };\n};\n\nexport default useTransactionApi;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\nimport { forEach } from 'lodash';\n\nimport { Stack, Skeleton } from '@mui/material';\n\n// Helpers\nimport useAsyncFunc from '../../_helpers/async.func.helper';\n\n// Components\nimport Error from '../../_components/error.component';\nimport TransactionsTimeLineChart from '../charts/transactions.timeline.chart';\nimport WidgetLabel from '../../_components/widgets/widget.label.component';\nimport WidgetRow from '../../_components/widgets/widget.row.component';\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\n\n// Api\nimport useTransactionApi from '../api/useTransactionApi';\nimport WidgetToolbar from '../../_components/widgets/widget.toolbar.component';\n\nconst prepWidgetData = async data => {\n\tif (!data) return null;\n\n\tvar widgetdata = {\n\t\ttoday: { Success: 0, Failed: 0 },\n\t\tthisMonth: { Success: 0, Failed: 0 },\n\t\ttotals: { Success: 0, Failed: 0, DailyAverage: 0, Total: 0 },\n\t};\n\n\tforEach(data, stat => {\n\t\tif (moment(stat.Date, 'MM/DD/YYYY hh:mm:ss').isSame(moment(), 'day')) {\n\t\t\twidgetdata.today.Success += stat.Stamps + stat.Loyalty + stat.CouponRedeem;\n\t\t\twidgetdata.today.Failed += stat.Failed;\n\t\t}\n\t\tif (moment(stat.Date, 'MM/DD/YYYY hh:mm:ss').isSame(moment(), 'month')) {\n\t\t\twidgetdata.thisMonth.Success += stat.Stamps + stat.Loyalty + stat.CouponRedeem;\n\t\t\twidgetdata.thisMonth.Failed += stat.Failed;\n\t\t}\n\t\twidgetdata.totals.Success += stat.Stamps + stat.Loyalty + stat.CouponRedeem;\n\t\twidgetdata.totals.Failed += stat.Failed;\n\t\twidgetdata.totals.Total += stat.Stamps + stat.Loyalty + stat.CouponRedeem + stat.Failed;\n\t});\n\n\twidgetdata.totals.DailyAverage = widgetdata.totals.Total ? (widgetdata.totals.Total / data.length).toFixed(2) : 0;\n\n\treturn widgetdata;\n};\n\nconst prepChartData = async params => {\n\tconst { data, filter } = params;\n\tif (!data) return null;\n\n\tvar chartdata = {\n\t\tTotal: [],\n\t\tStamps: [],\n\t\tLoyalty: [],\n\t\tCouponRedeems: [],\n\t\tCouponIssued: [],\n\t\tRollback: [],\n\t\tEvents: [],\n\t\tSubscriberUpdated: [],\n\t\tSuccess: [],\n\t\tFailed: [],\n\t};\n\n\tforEach(data, (stat, index) => {\n\t\tchartdata.Total.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Stamps + stat.Loyalty + stat.CouponRedeem + stat.Failed : chartdata.Total[index - 1][1] + (stat.Stamps + stat.Loyalty + stat.CouponRedeem + stat.Failed)]);\n\t\tchartdata.Stamps.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Stamps : chartdata.Stamps[index - 1][1] + stat.Stamps]);\n\t\tchartdata.Loyalty.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Loyalty : chartdata.Loyalty[index - 1][1] + stat.Loyalty]);\n\t\tchartdata.CouponRedeems.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.CouponRedeem : chartdata.CouponRedeems[index - 1][1] + stat.CouponRedeem]);\n\t\tchartdata.CouponIssued.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.CouponIssued : chartdata.CouponIssued[index - 1][1] + stat.CouponIssued])\n\t\tchartdata.SubscriberUpdated.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.SubscriberUpdated : chartdata.SubscriberUpdated[index - 1][1] + stat.SubscriberUpdated])\n\t\tchartdata.Events.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Events : chartdata.Events[index - 1][1] + stat.Events])\n\t\tchartdata.Rollback.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Rollback : chartdata.Rollback[index - 1][1] + stat.Rollback])\n\t\tchartdata.Success.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Stamps + stat.Loyalty + stat.CouponRedeem : chartdata.Success[index - 1][1] + (stat.Stamps + stat.Loyalty + stat.CouponRedeem)]);\n\t\tchartdata.Failed.push([stat.UnixTime * 1000, filter === 'daily' || index === 0 ? stat.Failed : chartdata.Failed[index - 1][1] + stat.Failed]);\n\t});\n\n\treturn chartdata;\n};\n\nconst TransactionsStatsLargeWidget = ({ brandhash, passhash, disableBg }) => {\n\tconst { t } = useTranslation(['labels', 'errors']);\n\n\tconst filters = [\n\t\t{\n\t\t\tlabel: t('labels:daily'),\n\t\t\ttitle: t('labels:daily'),\n\t\t\tvalue: 'daily',\n\t\t\tdefault: true,\n\t\t},\n\t\t{\n\t\t\tlabel: t('labels:cumulative'),\n\t\t\ttitle: t('labels:cumulative'),\n\t\t\tvalue: 'cumulative',\n\t\t},\n\t];\n\n\tconst [filter, setFilter] = useState(filters.find(filter => filter.default));\n\tconst { useFetchTransactionStats } = useTransactionApi();\n\tconst { data, isFetching, isLoading, error, refetch } = useFetchTransactionStats(brandhash, passhash);\n\n\tconst { execute: runchartdata, data: chartdata } = useAsyncFunc(prepChartData, false);\n\tconst { execute: runwidgetdata, data: widgetdata } = useAsyncFunc(prepWidgetData, false);\n\n\tuseEffect(() => runchartdata({ data: data, filter: filter.value }), [runchartdata, filter, data]);\n\tuseEffect(() => runwidgetdata(data), [runwidgetdata, data]);\n\n\tif (isLoading) return ;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{error && !data && }\n\t\t\t\t{widgetdata && chartdata && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{chartdata && }\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default TransactionsStatsLargeWidget;\n","import React, { useContext, useState } from 'react';\nimport { useParams, Redirect } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport { Tab, Tabs, useMediaQuery } from '@mui/material';\nimport Box from '@mui/material/Box';\n\n// Components\nimport BrandNavBar from '../brand.navbar.component';\nimport Spinner from '../../_components/spinner.component';\nimport MessagesStatsLargeWidget from '../../message/widgets/messages.stats.large.widget';\nimport SubscribersStatsLargeWidget from '../../subscriber/widgets/subscribers.stats.large.widget';\nimport TransactionsStatsLargeWidget from '../../transaction/widgets/transactions.stats.large.widget';\n\n// Api\nimport useBrandApi from '../../brand/api/useBrandApi';\n\nconst TabPanel = ({ value, brandhash, hasPermissions }) => {\n\tif (!hasPermissions(['transactions:viewchart'])) return ;\n\n\telse {\n\t\tconst component = {\n\t\t\t0: ,\n\t\t\t1: ,\n\t\t}[value];\n\n\t\treturn component;\n\t}\n};\n\nconst Brand = () => {\n\tconst { hasPermissions } = useContext(UserContext);\n\tconst { brandhash } = useParams();\n\tconst matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\tconst { t } = useTranslation(['labels']);\n\n\tconst { useFetchBrand } = useBrandApi();\n\tconst { data, isLoading, isError } = useFetchBrand(brandhash);\n\n\tconst [tabValue, setTabValue] = useState(0);\n\tconst handleChange = (_, newValue) => setTabValue(newValue);\n\n\tif (!hasPermissions(['admin:viewallpages', 'client:view'])) return ;\n\n\t// TODO: Check the error type. We must send to 404 page only if the user is not authorized for the given brand\n\tif (isError) return ;\n\n\tif (isLoading) return ;\n\n\t// If we do not have brand data return nothing\n\t// TODO: we will show loading skeleton while waiting for brand data to be fetched\n\tif (!data) return ;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\thasPermissions(['transactions:viewchart']) &&\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{!matches && (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default Brand;\n","import React, { cloneElement } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\n\n// Material Ui\nimport Link from '@mui/material/Link';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\n\n\nconst IconLabel = (props) => {\n const { label, to, href } = props;\n\n if (!label) return '';\n\n return (\n \n {cloneElement(props.children, { fontSize: 'small', color: 'disabled' })}\n {\n (to)\n ? {label}\n :\n (href)\n ? {label}\n : {label}\n }\n \n );\n}\n\nexport default IconLabel;","import React, { useContext } from 'react';\nimport Enums from '../enums';\nimport { useHistory } from 'react-router';\n\n// MUI\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport AssignmentInd from '@mui/icons-material/AssignmentInd';\nimport Assignment from '@mui/icons-material/Assignment';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ReportGmailerrorredIcon from '@mui/icons-material/ReportGmailerrorred';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// Components\nimport Badge from '../_components/badge.component';\nimport IconLabel from '../_components/icon.label.component';\nimport { abbreviateNumber } from '../_helpers/function.helper';\n\nconst PartnerBadge = ({ Partner, OpaqueId }) =>\n }\n size='small'\n sx={{\n bgcolor: Enums.color[Partner],\n color: 'white',\n '& .MuiChip-icon': {\n color: 'white'\n }\n }}\n />\n\nconst BrandCard = ({ brand }) => {\n\n const history = useHistory();\n const { hasPermissions } = useContext(UserContext);\n\n const hasPermission = hasPermissions(['admin:viewallpages', 'client:view']);\n\n const locationlabel = brand?.Country ? brand?.City ? brand?.District ? `${brand.Country}, ${brand.City}, ${brand.District}`\n : `${brand.Country}, ${brand.City}` : brand.Country : ''\n\n return (\n hasPermission && history.push(`/${brand?.Hash}`)}\n >\n Brand Logo\n \n \n {brand?.Name}\n \n \n {`${brand?.MemberSince?.format('DD MMM YYYY')} - ${locationlabel}`}\n \n \n \n \n \n \n \n \n \n \n {\n brand?.ChurnStats &&\n }\n />\n }\n \n {\n brand?.Partner && (brand?.Partner !== 'None') &&\n \n }\n \n \n
    \n );\n}\n\nexport default BrandCard;","import React, { useCallback, useState } from 'react'\nimport { useDropzone } from 'react-dropzone'\n\n// Material-ui\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst toBase64 = url => fetch(url)\n .then(response => response.blob())\n .then(blob => new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onloadend = () => resolve(reader.result)\n reader.onerror = reject\n reader.readAsDataURL(blob)\n }));\n\nconst ImageDropZone = (props) => {\n const [errorMessage, setErrorMessage] = useState(null);\n const {\n fileType,\n imgHeigth,\n imgWidth,\n fixedImageSize,\n fileSize,\n initialImage,\n helperText,\n ignoreSizeCheck,\n dimensionErrorText,\n sizeErrorText,\n typeErrorText,\n handleImageChange,\n transparent,\n value,\n } = props;\n\n\n const [imageUrl, setImageUrl] = useState(null);\n\n const onDrop = useCallback((acceptedFiles) => {\n setErrorMessage(null);\n const file = acceptedFiles[0];\n\n if (file.type !== fileType) { setErrorMessage(typeErrorText || true); return; }\n if (file.size > fileSize) { setErrorMessage(sizeErrorText || true); return; }\n const image = new Image();\n\n if (file.type === fileType && file.size <= fileSize) {\n image.addEventListener('load', () => {\n if (!ignoreSizeCheck && ((image.width !== imgWidth) || (image.height !== imgHeigth))) {\n setErrorMessage(dimensionErrorText || true); return;\n }\n });\n\n image.src = URL.createObjectURL(file);\n setImageUrl(URL.createObjectURL(file));\n\n toBase64(image.src)\n .then(dataUrl => (!errorMessage) && handleImageChange(dataUrl));\n }\n\n }, [fileType, imgHeigth, imgWidth, fileSize, dimensionErrorText, sizeErrorText, typeErrorText, handleImageChange, errorMessage, ignoreSizeCheck])\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })\n\n return (\n \n
    \n \n {\n imageUrl\n ? Dropzone Img\n : (initialImage ? Brand Logo : '')\n }\n
    \n {\n !(errorMessage) &&\n {typeof (errorMessage) === 'boolean' ? '' : helperText}\n }\n {\n errorMessage &&\n {typeof (errorMessage) === 'boolean' ? '' : errorMessage} \n }\n \n )\n}\n\nexport default ImageDropZone;","import { useQuery } from 'react-query';\nimport { get } from '../../../_api/api'\n\nconst useCountryApi = () => {\n const useFetchCountries = () => useQuery('countries', () => get('Settings/country'));\n\n return { useFetchCountries, }\n}\n\nexport default useCountryApi;\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material Ui\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useCountryApi from './api/useCountryApi';\n\nconst CountrySelect = (props) => {\n const { size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur, setValues } = props;\n\n const { useFetchCountries } = useCountryApi();\n const { data, isFetching } = useFetchCountries();\n\n const getValue = (value) => find(data, ['Id', value]) || null;\n\n const handleChange = (value) => {\n onChange(value);\n setValues(prev => ({ ...prev, DistrictId: null, CityId: null }))\n }\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => handleChange(value?.Id)}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default CountrySelect;","import { useQuery } from 'react-query';\nimport { get } from '../../../_api/api'\n\nconst useCityApi = () => {\n const useFetchCities = (countryid) => useQuery(['cities', countryid], () => get(`/Settings/country/${countryid}/city`),\n {\n enabled: !!countryid,\n });\n\n return {\n useFetchCities,\n }\n}\n\nexport default useCityApi;\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material Ui\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport TextField from '@mui/material/TextField';\n\n// Api\nimport useCityApi from './api/useCityApi';\n\nconst CitySelect = (props) => {\n const { countryid, size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur, setValues } = props;\n const { useFetchCities } = useCityApi();\n const { data, isFetching } = useFetchCities(countryid);\n\n const getValue = (value) => countryid ? find(data, ['Id', value]) || null : null;\n\n const handleChange = (value) => {\n onChange(value);\n setValues(prev => ({ ...prev, DistrictId: null }))\n }\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => handleChange(value?.Id)}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default CitySelect;","import { useQuery } from 'react-query';\nimport { get } from '../../../_api/api'\n\nconst useDistrictApi = () => {\n const useFetchDistricts = (cityid) => useQuery(['districts', cityid], () => get(`/Settings/city/${cityid}/district`), { enabled: !!cityid, });\n\n return { useFetchDistricts }\n}\n\nexport default useDistrictApi;\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material-ui\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useDistrictApi from './api/useDistrictApi';\n\nconst DistrictSelect = (props) => {\n const { cityid, size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { useFetchDistricts } = useDistrictApi();\n const { data, isFetching } = useFetchDistricts(cityid);\n\n const getValue = (value) => cityid ? find(data, ['Id', value]) || null : null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.Id)}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default DistrictSelect;","import moment from 'moment';\n\nexport const intphoneformats = {\n \"+90\": /^((\\+90)( )?501|505|506|507|551|552|553|554|555|559|530|531|532|533|534|535|536|537|538|539|561|540|541|542|543|544|545|546|547|548|549()?([0-9]{3})( )?([0-9]{2})( )?([0-9]{2}))$/,\n \"+971\": /^((\\+971)( )?(50|52|54|55|56|58)( )?([0-9]{3})( )?([0-9]{4}))$/,\n \"+994\": /^((\\+994)( )?([0-9]{2})[- ]?([0-9]{3})( )?([0-9]{4}))$/,\n \"+973\": /^((\\+973)( )?([0-9]{4})( )?([0-9]{4}))$/,\n \"+1\": /^((\\+1)( )?([0-9]{3})( )?([0-9]{3})[- ]?([0-9]{4}))$/,\n \"+86\": /^((\\+86)( )?([0-9]{2})[- ]?([0-9]{9}))$/,\n \"+20\": /^((\\+20)( )?([0-9]{2,3})[- ]?([0-9]{3})[- ]?([0-9]{4}))$/,\n \"+33\": /^((\\+33)( )?([0-9]{1})( )?([0-9]{2})( )?([0-9]{2})( )?([0-9]{2})( )?([0-9]{2}))$/,\n \"+49\": /^((\\+49)( )?([0-9]{4})( )?([0-9]{8}))$/,\n \"+39\": /^((\\+39)( )?([0-9]{3})( )?([0-9]{7}))$/,\n \"+965\": /^((\\+965)( )?([0-9]{8}))|((\\+31)( )?([0-9]{2})( )?([0-9]{8}))$/,\n \"+968\": /^((\\+968)( )?([0-9]{4})( )?([0-9]{4}))|((\\+974)( )?([0-9]{2})( )?([0-9]{6}))$/,\n \"+7\": /^((\\+7)( )?([0-9]{3})( )?([0-9]{3})(-)?([0-9]{2})(-)?([0-9]{2}))$/,\n \"+966\": /^((\\+966)( )?([0-9]{2})( )?([0-9]{3})( )?([0-9]{4}))$/,\n \"+34\": /^((\\+34)( )?([0-9]{3})( )?([0-9]{3})( )?([0-9]{3}))$/,\n \"+380\": /^((\\+380)( )?([0-9]{2})( )?([0-9]{3})( )?([0-9]{2})( )?([0-9]{2}))$/,\n \"+44\": /^((\\+44)( )?([0-9]{4})( )?([0-9]{6}))$/,\n}\n\nconst validateinput = (value, field) => {\n if (field.Required && !value) return false;\n\n if (field.Type === 'JSON') {\n try {\n JSON.parse(value);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n if (field.Type === 'moment') {\n if (!field.Required && !Boolean(value)) return true;\n // Format belirtildiyse tarihin uygun olup olmadığını kontrol etmeden valid ediyoruz.\n if (field.Format) return true;\n var date = moment(value);\n return date.isValid();\n }\n\n // Latitude, longitude validasyonu için eklendi.\n if (field.Type === 'coordinate') {\n if (!field.Required) return true;\n var re_coordinate = /^[0-9]{2}(\\.)[0-9]{5,}$/;\n return re_coordinate.test(String(value));\n }\n\n\n if (field.Type === 'permissionvalue') {\n var re_permissionvalue = /^[a-z]*:[a-z]*/;\n return re_permissionvalue.test(String(value).toLowerCase());\n }\n\n if (field.Type === 'email') {\n if (!field.Required && !Boolean(value)) return true;\n var re_email = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re_email.test(String(value).toLowerCase());\n }\n\n if (field.Type === 'regex') {\n if (!field.Required && !Boolean(value)) return true;\n if (field.Regex) return field.Regex.test(String(value))\n return false;\n }\n\n if (field.Type === 'int-phone') {\n if (!field.Required && !Boolean(value)) return true;\n const _regex = intphoneformats[String(value).substr(0, 4)] || intphoneformats[String(value).substr(0, 3)] || intphoneformats[String(value).substr(0, 2)]\n if (_regex) return _regex.test(String(value))\n return false;\n }\n\n if (field.Type === 'tr-mobile') {\n if (!field.Required && !Boolean(value)) return true;\n var regex_tr_mobile = /^(501|505|506|507|551|552|553|554|555|559|530|531|532|533|534|535|536|537|538|539|561|540|541|542|543|544|545|546|547|548|549)([0-9]{7})$/\n return regex_tr_mobile.test(String(value).toLowerCase());\n }\n\n if (field.Type === 'date') {\n if (!field.Required && !Boolean(value)) return true;\n let _date = moment(value, field.DateFormat);\n if (!Boolean(_date)) return false;\n if (field.StartDate && field.EndDate) {\n var startDate = moment(field.StartDate, field.DateFormat)\n var endDate = moment(field.EndDate, field.DateFormat)\n return _date.isBetween(startDate, endDate);\n }\n }\n\n return true;\n}\n\nexport default validateinput","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useTextInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n const placeholder = _field.Placeholder;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n const type = {\n 'email': 'email',\n 'date': 'tel',\n 'int-phone': 'tel',\n 'tr-mobile': 'tel',\n }[_field.Type];\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n setTouched(false);\n setFocused(false);\n }\n\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n // rewrite self and parent's value\n const handleChange = useCallback((event) => {\n const newvalue = event.target.value;\n validateForm(false);\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, { ...prev }) : { ...prev, [name]: newvalue }));\n }, [setValue, setValues, validateForm, name, nested]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = error ? validationtext : helpertext;\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n placeholder,\n type,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useTextInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useImageInput = ({\n field,\n values,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n\n const name = _field.Name;\n const label = _field.Label;\n const nested = name.includes('.');\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n }\n }, [_value, value, setValue]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n const handleImageChange = useCallback((value) => {\n validateForm(false);\n setValue(value);\n setValues(prev => (nested ? dot.str(name, value, { ...prev }) : { ...prev, [name]: value }));\n }, [setValue, setValues, validateForm, name, nested]);\n\n return {\n value,\n label,\n valid,\n handleImageChange\n };\n}\n\nexport default useImageInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport dot from 'dot-object';\n\ndot.override = true;\n\nconst useArrayInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const type = _field.Type;\n const required = _field.Required;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validate(value, required);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, required, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value)\n setValue(_value);\n }, [_value, value, setValue]);\n\n const handleChange = useCallback((newvalue, checked, select) => {\n let newArray = (type === 'autocomplete') ? [] : (value === '') ? [] : value;\n\n /* Bu hook sadece user ve create ekranlarında kullanılıyordu. Gelen yeni değere göre \n array'i yeninden oluştururken her bir değer için id değerini array'e ekliyorduk. Fakat yeni sayfalarda\n değerin sadece id'si değil, hash değerini diziye eklememiz gerekiyordu. bunun için onChange fonksiyonuna\n select parametresi ekledim. Eğer select parametresi varsa, value'nun select değerini diziye ekliyoruz. Select değeri\n dönmüyor ise default olarak gelen değerin Id'si diziye ekleniyor.\n */\n if (type === 'autocomplete')\n newvalue.forEach(value => newArray.push(value[select] || value.Id))\n\n else {\n if (checked) newArray.push(newvalue)\n else newArray.splice(newArray.indexOf(newvalue), 1);\n }\n\n validateForm(false);\n setValue(newArray);\n setValues(prev => nested ? dot.str(name, newArray, { ...prev }) : { ...prev, [name]: newArray });\n }, [setValue, setValues, validateForm, name, nested, value, type]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = (error ? validationtext : helpertext) || ' ';\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useArrayInput;\n\nconst validate = (value, required) => {\n return !(required && value.length === 0)\n}","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useSelectInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n const type = {\n 'email': 'email',\n 'date': 'tel',\n 'text': 'text',\n 'int-phone': 'tel',\n 'tr-mobile': 'tel',\n }[_field.Type];\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n setTouched(false);\n setFocused(false);\n }\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n const handleChange = useCallback((newvalue) => {\n validateForm(false);\n if (newvalue) {\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, { ...prev }) : { ...prev, [name]: newvalue }));\n }\n else {\n setValue('');\n setValues(prev => {\n if (nested) {\n //TODO KONTROL EDİLECEK\n /* Eğer field name'ı nested bir değer ise bunu array olarak algılayıp dot.delete fonksiyonu ile silmeye çalışıyordu.\n Fakat değerin obje olduğu durumlar da olmakta. Değer obje olduğu için dot delete fonksiyonu yanlış sonuç üretiyordu.\n Bunun önüne geçmek için field'ın type değerini text olarak değiştiriyorum. Eğer type değeri text ise onChange de \n obje içerisinde silme işlemini yerine getiren dot.str fonksiyonunu kullandım. Aksi takdirde değeri array olarak algılayıp\n dot.delete fonksiyonu ile nested değerin silinmesini sağlıyorum. */\n if (type === 'text') return dot.str(name, null, prev)\n else return dot.delete(name, prev);\n }\n else {\n const { [name]: remove, ...rest } = prev;\n return rest;\n }\n });\n }\n }, [setValue, setValues, validateForm, name, type, nested]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = (error ? validationtext : helpertext);\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n type,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useSelectInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useCheckInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n setTouched(false);\n setFocused(false);\n }\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n const handleChange = useCallback((event) => {\n const newvalue = event.target.checked;\n validateForm(false);\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, { ...prev }) : { ...prev, [name]: newvalue }));\n }, [setValue, setValues, validateForm, name, nested]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = (error ? validationtext : helpertext) || ' ';\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n onChange: handleChange,\n onFocus: handleFocus,\n };\n}\n\nexport default useCheckInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useLimitedTextInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n const limit = _field.isLimited;\n const placeholder = _field.Placeholder;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n setTouched(false);\n setFocused(false);\n }\n\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n // rewrite self and parent's value\n const handleChange = useCallback((event) => {\n const newvalue = event.target.value;\n\n if (limit && newvalue.length > limit) return;\n\n validateForm(false);\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, { ...prev }) : { ...prev, [name]: newvalue }));\n }, [setValue, setValues, validateForm, name, nested, limit]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = error ? validationtext : helpertext;\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n placeholder,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useLimitedTextInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\n\nconst useTextInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n\n const _value = (nested ? dot.pick(name, values) : values[name]) || '';\n\n const [value, setValue] = useState(_value);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value);\n setTouched(false);\n setFocused(false);\n }\n\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n // rewrite self and parent's value\n const handleChange = useCallback((color) => {\n const newvalue = color;\n validateForm(false);\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, prev) : { ...prev, [name]: newvalue }));\n }, [setValue, setValues, validateForm, name, nested]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n\n return {\n value,\n name,\n label,\n error,\n required,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useTextInput;","import { useState, useCallback, useEffect, useMemo } from 'react'\nimport validateinput from './validateinput';\nimport dot from 'dot-object';\nimport moment from 'moment';\n\nconst useDateInput = ({\n field,\n values,\n validating,\n setValues,\n validateForm,\n handleError,\n options,\n}) => {\n const _field = useMemo(() => ({ ...field, ...options }), [field, options]);\n const name = _field.Name;\n const nested = name.includes('.');\n const label = _field.Label;\n const required = _field.Required;\n // Fieldın format tipi varsa onu belirtir. BirthDate fieldında sadece tarih ve saat olduğu için formatı HH:mm olarak girildi.\n const format = _field.Format;\n const validationtext = _field.ValidationText || '';\n const helpertext = _field.HelperText || '';\n const type = {\n 'email': 'email',\n 'date': 'tel',\n 'int-phone': 'tel',\n 'tr-mobile': 'tel',\n }[_field.Type];\n\n const _value = (nested ? dot.pick(name, values) : (values[name] || null));\n\n /* Eğer format belirtildiyse değeri olduğu gibi value'a set ediyoruz. Bunu yapmamın sebebi\n birthday action için servis messageTime'ı 'HH:mm' formatında kabul ediyor. Bunun için value'yu bu şekilde set ediyoruz.\n TimePicker componenti kendi içerisinde value'ı moment formatında aldığı için buradaki value'yu orada otomatik olarak\n gösteremiyor. Bunun için componentin kendi içerisinde buradan aldığı value'yu manipule ederek set ediyoruz.\n\n Eğer format belirtilmediyse, hook olduğu gibi çalışıyor. Diğer componentleri etkilemiyor.\n */\n const [value, setValue] = useState(_value ? format ? _value : moment(_value) : null);\n const [valid, setValid] = useState(true);\n const [touched, setTouched] = useState(false);\n const [focused, setFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const _valid = validateinput(value, _field);\n setValid(_valid);\n handleError(name, _valid);\n }, [setValid, name, value, _field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== _value) {\n setValue(_value ? moment(_value) : null);\n setTouched(false);\n setFocused(false);\n }\n }, [_value, value, setValue, setFocused, setTouched]);\n\n // validate on value change\n useEffect(() => handleValidation(), [handleValidation, name]);\n\n const handleChange = useCallback((value) => {\n /* Buradaki amaç, TimePicker componenti onChange olarak moment formatında value gönderdiği için \n belirtilen format ile değiştirip set ediyoruz. Eğer format belirtilmediyse, hook olduğu gibi çalışıyor.\n */\n const newvalue = value ? format ? moment(value).locale('en-gb').format(format) : moment(value).locale('en-gb').format('YYYY-MM-DDTHH:mm:ss') : null;\n validateForm(false);\n if (newvalue) {\n setValue(newvalue);\n setValues(prev => (nested ? dot.str(name, newvalue, { ...prev }) : { ...prev, [name]: newvalue }));\n }\n else {\n setValue(null);\n setValues(prev => {\n if (nested)\n return dot.delete(name, prev);\n else {\n const { [name]: remove, ...rest } = prev;\n return rest;\n }\n });\n }\n }, [setValue, setValues, validateForm, name, format, nested]);\n\n const handleFocus = useCallback(() => {\n setTouched(true);\n setFocused(true);\n handleValidation();\n }, [setTouched, setFocused, handleValidation]);\n\n const handleBlur = useCallback(() => setFocused(false), [setFocused]);\n\n const error = validating ? !valid : !valid && touched && !focused;\n const helperText = (error ? validationtext : helpertext);\n\n return {\n value,\n name,\n label,\n error,\n required,\n helperText,\n type,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n };\n}\n\nexport default useDateInput;","import { useState, useCallback, useEffect } from 'react'\nimport useTextInput from './useTextInput';\nimport useImageInput from './useImageInput';\nimport useArrayInput from './useArrayInput';\nimport useSelectInput from './useSelectInput';\nimport useCheckInput from './useCheckInput';\nimport useLimitedTextInput from './useLimitedTextInput';\nimport useColorPickerInput from './useColorPickerInput';\nimport useDateInput from './useDateInput';\n\nconst useForm = (defaults) => {\n const [values, setValues] = useState(defaults || {});\n const [errors, setErrors] = useState([]);\n const [valid, setValid] = useState(false);\n const [validating, validateForm] = useState(false);\n const [mounted, setMounted] = useState(false);\n\n const handleError = useCallback((name, valid) => {\n let _errors = errors;\n const index = _errors.findIndex(error => error === name);\n\n if (!valid) {\n if (index < 0) _errors.push(name);\n } else {\n if (index > -1) _errors.splice(index, 1);\n }\n\n setErrors(_errors);\n setValid(mounted && !Boolean(_errors.length));\n }, [errors, mounted]);\n\n useEffect(() => setMounted(true), []);\n\n const setValue = useCallback((name, value) => setValues(prev => ({ ...prev, [name]: value })), []);\n\n const useTextFieldInput = (field, options) => useTextInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n });\n\n const useLimitedTextFieldInput = (field, options) => useLimitedTextInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n });\n\n const useCheckFieldInput = (field, options) => useCheckInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n });\n\n const useSelectableFieldInput = (field, options) => useSelectInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n });\n\n const useDatePickerFieldInput = (field, options) => useDateInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n });\n\n const useImageFieldInput = (field, options) => useImageInput({\n field,\n values,\n setValues,\n validateForm,\n handleError,\n options,\n });\n\n const useArrayFieldInput = (field, options) => useArrayInput({\n field,\n values,\n setValues,\n validateForm,\n handleError,\n options,\n });\n\n const useColorInput = (field, options) => useColorPickerInput({\n field,\n values,\n validating,\n setValues,\n setValue,\n validateForm,\n handleError,\n options,\n })\n\n return {\n values,\n errors,\n valid,\n validating,\n setValues,\n setValue,\n validateForm,\n useTextFieldInput,\n useLimitedTextFieldInput,\n useDatePickerFieldInput,\n useCheckFieldInput,\n useImageFieldInput,\n useArrayFieldInput,\n useSelectableFieldInput,\n useColorInput\n };\n}\n\nexport default useForm;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Enums from '../enums';\n\n// Material UI\nimport AppBar from '@mui/material/AppBar';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport LabeledInputField from '../_components/labeled.input.component';\nimport ImageDropZone from '../_components/image.dropzone.component';\nimport CountrySelect from '../settings/country/country.select.component';\nimport CitySelect from '../settings/city/city.select.component';\nimport DistrictSelect from '../settings/district/district.select.component';\n\n// Api\nimport useBrandApi from './api/useBrandApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst BrandForm = (props) => {\n\tconst { brand, open, onClose } = props;\n\tconst { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n\tconst { values, valid, setValues, useTextFieldInput, useImageFieldInput, useSelectableFieldInput } = useForm(brand || {}); // useForm hook takes care of all validation and state management for forms\n\n\tconst newbrand = !brand;\n\n\tconst actiontitle = newbrand ? t('labels:create') : t('labels:update'); // Title of the action button on top right\n\tconst dialogtitle = newbrand ? t('labels:newclient') : brand?.Name; // Title of the dialog on top left\n\n\tconst { useCreateBrand, useUpdateBrand } = useBrandApi();\n\tconst { isLoading: creating, mutate: createBrand } = useCreateBrand;\n\tconst { isLoading: updating, mutate: updateBrand } = useUpdateBrand;\n\n\tconst disabled = creating || updating;\n\n\tconst form = {\n\t\tName: {\n\t\t\tName: 'Name',\n\t\t\tLabel: t('labels:brandname'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tCompanyName: {\n\t\t\tName: 'CompanyName',\n\t\t\tLabel: t('labels:company'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tBrandTypeId: {\n\t\t\tName: 'BrandTypeId',\n\t\t\tLabel: t('labels:brandtype'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tSectorTypeId: {\n\t\t\tName: 'SectorTypeId',\n\t\t\tLabel: t('labels:sector'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tContactPersonName: {\n\t\t\tName: 'ContactPersonName',\n\t\t\tLabel: t('labels:contactperson'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tContactPersonPhone: {\n\t\t\tName: 'ContactPersonPhone',\n\t\t\tLabel: t('labels:phone'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tContactPersonEmail: {\n\t\t\tName: 'ContactPersonEmail',\n\t\t\tLabel: t('labels:email'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tBrandWebsite: {\n\t\t\tName: 'BrandWebsite',\n\t\t\tLabel: t('labels:website'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tLanguageId: {\n\t\t\tName: 'LanguageId',\n\t\t\tLabel: t('labels:language'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tCurrencyId: {\n\t\t\tName: 'CurrencyId',\n\t\t\tLabel: t('labels:currency'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tTimezone: {\n\t\t\tName: 'Timezone',\n\t\t\tLabel: t('labels:timezone'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tAddress: {\n\t\t\tName: 'Address',\n\t\t\tLabel: t('labels:address'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tPostalCode: {\n\t\t\tName: 'PostalCode',\n\t\t\tLabel: t('labels:postalcode'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tCountryId: {\n\t\t\tName: 'CountryId',\n\t\t\tLabel: t('labels:country'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tCityId: {\n\t\t\tName: 'CityId',\n\t\t\tLabel: t('labels:city'),\n\t\t\tRequired: true,\n\t\t\tType: 'text',\n\t\t},\n\t\tDistrictId: {\n\t\t\tName: 'DistrictId',\n\t\t\tLabel: t('labels:district'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t\tLogoBase64: {\n\t\t\tName: 'LogoBase64',\n\t\t\tLabel: t('labels:logo'),\n\t\t\tRequired: false,\n\t\t\tType: 'base64image',\n\t\t},\n\t\tPartner: {\n\t\t\tName: 'Config.IntegrationPartner',\n\t\t\tLabel: t('labels:integrationpartner'),\n\t\t\tRequired: false,\n\t\t\tType: 'text',\n\t\t},\n\t};\n\n\tconst onSubmit = () => {\n\t\tnewbrand ? createBrand(values, { onSuccess: onClose }) : updateBrand(values, { onSuccess: onClose });\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{dialogtitle}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {t('prompts:generalinfo')} \n\t\t\t\t\t\t\t\t {t('prompts:brandgeneralinfo')} \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{[1, 2, 3].map((brandtype) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14].map((sector) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {t('prompts:contact')} \n\t\t\t\t\t\t\t\t {t('prompts:contactdetailed')} \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {t('prompts:localization')} \n\t\t\t\t\t\t\t\t {t('prompts:localizationdetailed')} \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16].map((language) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{[\n\t\t\t\t\t\t\t\t\t\t\t\t\t1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,\n\t\t\t\t\t\t\t\t\t\t\t\t\t30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,\n\t\t\t\t\t\t\t\t\t\t\t\t].map((currency) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\t\t\t\t{Array.from({ length: 147 }, (_, i) => i + 1).map((timezone) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {t('prompts:integrations')} \n\t\t\t\t\t\t\t\t {t('prompts:integrationsdetailed')} \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{['1', '2', '3', '4'].map((partner) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default BrandForm;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport BrandForm from '../brand.form';\n\nconst BrandNewAction = props => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n } permissions={['client:create']} {...props} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default BrandNewAction;","const config = {\n 'small': {\n height: 30,\n variant: 'body1',\n buttonsize: 'small',\n },\n 'medium': {\n height: 48,\n textvariant: 'h6',\n buttonsize: 'medium',\n },\n 'large': {\n height: 64,\n textvariant: 'h5',\n buttonsize: 'medium',\n },\n}\n\nexport default config;","import React, { useState } from 'react';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport Popover from '@mui/material/Popover';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst FilterBeforeScope = ({ column }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n return (\n <>\n : }\n onClick={openFilter}\n onDelete={column.filterValue && (() => column.setFilter(undefined))}\n sx={{ borderRadius: '4px' }}\n />\n \n \n \n column.setFilter('THISWEEK')}>\n \n \n \n \n column.setFilter('THISMONTH')}>\n \n \n \n \n column.setFilter('TWOMONTHS')}>\n \n \n \n \n column.setFilter('THREEMONTHS')}>\n \n \n \n \n column.setFilter('LASTYEAR')}>\n \n \n \n {column.filterValue && (\n <>\n \n \n column.setFilter(undefined)}>\n \n \n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default FilterBeforeScope;\n","import moment from 'moment';\n\nexport const getScopeDatesInUnix = (scope) => {\n if (scope === 'TODAY') return [moment().startOf('day').unix(), moment().endOf('day').unix()];\n else if (scope === 'YESTERDAY') return [moment().subtract(1, 'days').startOf('day').unix(), moment().subtract(1, 'days').endOf('day').unix()];\n else if (scope === 'TOMORROW') return [moment().add(1, 'days').startOf('day').unix(), moment().add(1, 'days').endOf('day').unix()];\n else if (scope === 'THISWEEK') return [moment().startOf('week').unix(), moment().endOf('week').unix()];\n else if (scope === 'NEXTWEEK') return [moment().add(1, 'weeks').startOf('week').unix(), moment().add(1, 'weeks').endOf('week').unix()];\n else if (scope === 'LASTWEEK') return [moment().subtract(1, 'weeks').startOf('week').unix(), moment().subtract(1, 'weeks').endOf('week').unix()];\n else if (scope === 'LAST7DAYS') return [moment().subtract(7, 'days').startOf('day').unix(), moment().endOf('day').unix()];\n else if (scope === 'THISMONTH') return [moment().startOf('month').unix(), moment().endOf('month').unix()];\n else if (scope === 'LASTMONTH') return [moment().subtract(1, 'months').startOf('month').unix(), moment().subtract(1, 'months').endOf('month').unix()];\n else if (scope === 'NEXTMONTH') return [moment().add(1, 'months').startOf('month').unix(), moment().add(1, 'months').endOf('month').unix()];\n else if (scope === 'LASTTHREEMONTHS') return [moment().subtract(3, 'months').startOf('month').unix(), moment().endOf('month').unix()];\n else if (scope === 'NEXTTHREEMONTHS') return [moment().add(3, 'months').startOf('month').unix(), moment().add(3, 'months').endOf('month').unix()];\n else if (scope === 'NEXTSIXMONTHS') return [moment().add(6, 'months').startOf('month').unix(), moment().add(6, 'months').endOf('month').unix()];\n else if (scope === 'THISYEAR') return [moment().startOf('year').unix(), moment().endOf('day').unix()];\n else if (scope === 'LASTYEAR') return [moment().subtract(1, 'years').startOf('year').unix(), moment().subtract(1, 'years').endOf('year').unix()];\n};\n\nconst calcScope = (date, scope) => {\n if (!date) return false;\n\n if (scope === '1') return moment().isSame(date, 'day');\n else if (scope === '2') return moment().subtract(24, 'hours').isSameOrBefore(date);\n else if (scope === '3') return moment().subtract(1, 'day').isSameOrBefore(date);\n else if (scope === '4') return moment().isSame(date, 'week');\n else if (scope === '5') return moment().subtract(7, 'day').isSameOrBefore(date);\n else if (scope === '6') return moment().isSame(date, 'month');\n else if (scope === '7') return moment().subtract(30, 'days').isSameOrBefore(date);\n else if (scope === '8') return moment().subtract(45, 'days').isSameOrBefore(date);\n else if (scope === '9') return moment().subtract(90, 'days').isSameOrBefore(date);\n else if (scope === '10') return moment().isSame(date, 'year');\n else if (scope === '11') return moment().subtract(1, 'years').isSame(date, 'year');\n else if (scope === '12') return moment().subtract(2, 'years').isSameOrAfter(date, 'year');\n else if (scope === '99') return true;\n};\n\nexport const calcPastScope = (date, scope) => {\n if (!date) return false;\n\n if (scope === 'THISWEEK') return date.isBefore(moment().startOf('week'));\n else if (scope === 'THISMONTH') return date.isBefore(moment().startOf('month'));\n else if (scope === 'TWOMONTHS') return date.isBefore(moment().subtract(2, 'month').startOf('date'));\n else if (scope === 'THREEMONTHS') return date.isBefore(moment().subtract(1, 'month').startOf('date'));\n else if (scope === 'LASTYEAR') return date.isBefore(moment().startOf('year'));\n};\n\nconst calcRange = (date, filterValue) =>\n date ? (filterValue[0] && filterValue[1] ? date.isBetween(moment.unix(filterValue[0]), moment.unix(filterValue[1])) : false) : false;\n\nexport const calcRenewalDate = (date) => {\n if (moment(date).year() === moment().year()) return moment([moment().year() + 1, moment(date).month(), moment(date).date()]);\n else return moment([moment().year(), moment(date).month(), moment(date).date()]);\n};\n\nexport const minMaxFilterFn = (rows, id, filterValue) => {\n return rows.filter((row) => {\n const rowValue = parseInt(row.values[id]);\n const min = parseInt(filterValue[0]);\n const max = parseInt(filterValue[1]);\n\n return !isNaN(rowValue) ? (min && max ? rowValue >= min && rowValue <= max : min ? rowValue >= min : max ? rowValue <= max : true) : false;\n });\n};\n\nexport const dateRangeFilterFn = (rows, id, filterValue) => rows.filter((row) => calcRange(row.values[id], filterValue));\nexport const scopeFilterFn = (rows, id, filterValue) => rows.filter((row) => calcScope(row.values[id], filterValue));\nexport const ageRangeFilterFn = (rows, id, filterValue) => {\n if (filterValue?.length === 0) return rows;\n return rows.filter(\n (row) =>\n (row.values[id] && filterValue.includes('18 - 25') && row.values[id] >= 18 && row.values[id] <= 25) ||\n (filterValue.includes('26 - 35') && row.values[id] >= 26 && row.values[id] <= 35) ||\n (filterValue.includes('36 - 45') && row.values[id] >= 36 && row.values[id] <= 45) ||\n (filterValue.includes('46 and over') && row.values[id] >= 46)\n );\n};\nexport const beforeScopeFilterFn = (rows, id, filterValue) => rows.filter((row) => calcPastScope(row.values[id], filterValue));\nexport const oneOfFilterFn = (rows, id, filterValue) =>\n filterValue?.length === 0 ? rows : rows.filter((row) => filterValue && filterValue.includes(row.values[id]));\nexport const momentSortFn = (rowA, rowB, columnId) =>\n rowA.values[columnId] && rowB.values[columnId] ? (rowA.values[columnId].isAfter(rowB.values[columnId]) ? 1 : -1) : rowA.values[columnId] ? 1 : -1;\n","import React, { useState } from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport Popover from '@mui/material/Popover';\nimport Stack from '@mui/material/Stack';\nimport StaticDateRangePicker from '@mui/lab/StaticDateRangePicker';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Helper Functions\nimport { getScopeDatesInUnix } from '../filter.functions';\n\nconst FilterDateRange = ({ column }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const { t } = useTranslation(['labels']);\n\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const formatFilterValue = (filterValue) => (filterValue[0] && filterValue[1])\n ? `${column.Header} : ${moment.unix(filterValue[0]).format('DD MMM YYYY')} - ${moment.unix(filterValue[1]).format('DD MMM YYYY')}`\n : '';\n\n return (\n <>\n : }\n onClick={openFilter}\n onDelete={column.filterValue && (() => column.setFilter(undefined))}\n sx={{ borderRadius: '4px' }}\n />\n \n \n \n
    \n (newvalue[0] && newvalue[1]) && column.setFilter([newvalue[0].startOf('day').unix(), newvalue[1].endOf('day').unix()])}\n renderInput={(startProps, endProps) => console.log(startProps, endProps)}\n maxDate={moment()}\n />\n
    \n \n column.setFilter(getScopeDatesInUnix('TODAY'))} />\n column.setFilter(getScopeDatesInUnix('YESTERDAY'))} />\n column.setFilter(getScopeDatesInUnix('THISWEEK'))} />\n column.setFilter(getScopeDatesInUnix('LAST7DAYS'))} />\n column.setFilter(getScopeDatesInUnix('LASTWEEK'))} />\n column.setFilter(getScopeDatesInUnix('THISMONTH'))} />\n column.setFilter(getScopeDatesInUnix('LASTMONTH'))} />\n column.setFilter(getScopeDatesInUnix('LASTTHREEMONTHS'))} />\n column.setFilter(getScopeDatesInUnix('THISYEAR'))} />\n column.setFilter(getScopeDatesInUnix('LASTYEAR'))} />\n \n {\n column.filterValue &&\n \n \n column.setFilter(undefined)} >\n \n \n \n \n \n \n \n }\n
    \n
    \n \n \n );\n}\n\nexport default FilterDateRange","import React, { useState } from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport Popover from '@mui/material/Popover';\nimport Stack from '@mui/material/Stack';\nimport StaticDateRangePicker from '@mui/lab/StaticDateRangePicker';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Helper Functions\nimport { getScopeDatesInUnix } from '../filter.functions';\n\nconst FilterDateRangeFuture = ({ column }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const { t } = useTranslation(['labels']);\n\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const formatFilterValue = (filterValue) => (filterValue[0] && filterValue[1])\n ? `${column.Header} : ${moment.unix(filterValue[0]).format('DD MMM YYYY')} - ${moment.unix(filterValue[1]).format('DD MMM YYYY')}`\n : '';\n\n return (\n <>\n : }\n onClick={openFilter}\n onDelete={column.filterValue && (() => column.setFilter(undefined))}\n sx={{ borderRadius: '4px' }}\n />\n \n \n \n
    \n (newvalue[0] && newvalue[1]) && column.setFilter([newvalue[0].startOf('day').unix(), newvalue[1].endOf('day').unix()])}\n renderInput={(startProps, endProps) => console.log(startProps, endProps)}\n minDate={moment()}\n />\n
    \n \n column.setFilter(getScopeDatesInUnix('THISWEEK'))} />\n column.setFilter(getScopeDatesInUnix('NEXTWEEK'))} />\n column.setFilter(getScopeDatesInUnix('THISMONTH'))} />\n column.setFilter(getScopeDatesInUnix('NEXTMONTH'))} />\n column.setFilter(getScopeDatesInUnix('NEXTTHREEMONTHS'))} />\n column.setFilter(getScopeDatesInUnix('NEXTSIXMONTHS'))} />\n \n {\n column.filterValue &&\n \n \n column.setFilter(undefined)} >\n \n \n \n \n \n \n \n }\n
    \n
    \n \n \n );\n}\n\nexport default FilterDateRangeFuture","import React, { useState } from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport Popover from '@mui/material/Popover';\nimport Stack from '@mui/material/Stack';\nimport StaticDateRangePicker from '@mui/lab/StaticDateRangePicker';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\n// Helper Functions\nimport { getScopeDatesInUnix } from '../filter.functions';\n\nconst FilterDateRangeUpdateState = ({ column }) => {\n const { t } = useTranslation(['labels']);\n\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const formatFilterValue = (filterValue) =>\n filterValue[0] && filterValue[1]\n ? `${column.Header} : ${moment.unix(filterValue[0]).format('DD MMM YYYY')} - ${moment.unix(filterValue[1]).format('DD MMM YYYY')}`\n : '';\n\n return (\n <>\n : }\n onClick={openFilter}\n sx={{ borderRadius: '4px' }}\n />\n \n \n \n
    \n {\n if (newvalue[0] && newvalue[1]) {\n // if difference between newvalue[0] and newvalue[1] is more than 3 months, set newvalue[1] to 3 months after newvalue[0]\n if (moment(newvalue[0]).diff(moment(newvalue[1]), 'months') < -3) {\n column.onChange([newvalue[0].startOf('day').unix(), moment(newvalue[0]).add(3, 'months').endOf('day').unix()]);\n } else column.onChange([newvalue[0].startOf('day').unix(), newvalue[1].endOf('day').unix()]);\n }\n }}\n renderInput={(startProps, endProps) => console.log(startProps, endProps)}\n />\n
    \n \n column.onChange(getScopeDatesInUnix('TODAY'))}\n />\n column.onChange(getScopeDatesInUnix('YESTERDAY'))}\n />\n column.onChange(getScopeDatesInUnix('THISWEEK'))}\n />\n column.onChange(getScopeDatesInUnix('LAST7DAYS'))}\n />\n column.onChange(getScopeDatesInUnix('LASTWEEK'))}\n />\n column.onChange(getScopeDatesInUnix('THISMONTH'))}\n />\n column.onChange(getScopeDatesInUnix('LASTMONTH'))}\n />\n column.onChange(getScopeDatesInUnix('LASTTHREEMONTHS'))}\n />\n {/* column.onChange(getScopeDatesInUnix('THISYEAR'))} /> */}\n {/* column.onChange(getScopeDatesInUnix('LASTYEAR'))} /> */}\n \n
    \n
    \n \n \n );\n};\n\nexport default FilterDateRangeUpdateState;\n","import React, { useState } from 'react';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Popover from '@mui/material/Popover';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst FilterEquals = ({ column }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const uniquevalues = [...new Set(column.preFilteredRows.map(row => row.values[column.id]))];\n\n if (uniquevalues?.length <= 1)\n return null;\n\n return (\n <>\n : }\n onClick={openFilter}\n onDelete={column.filterValue && (() => column.setFilter(undefined))}\n sx={{borderRadius:'4px'}}\n />\n \n \n {\n uniquevalues.map((value, index) =>\n value &&\n \n { column.setFilter(value); closeFilter(); }}>\n \n \n \n )\n }\n {\n column.filterValue &&\n <>\n \n \n column.setFilter(undefined)} >\n \n \n \n \n \n \n \n }\n \n \n \n );\n}\n\nexport default FilterEquals","import React, { useState } from 'react';\n\n// MUI\nimport Chip from '@mui/material/Chip';\nimport Checkbox from '@mui/material/Checkbox';\nimport Popover from '@mui/material/Popover';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst FilterOneOf = ({ column }) => {\n\tconst [anchorEl, setAnchorEl] = useState(null);\n\tconst open = Boolean(anchorEl);\n\tconst openFilter = event => setAnchorEl(event.currentTarget);\n\tconst closeFilter = () => setAnchorEl(null);\n\n\tconst uniquevalues = [...new Set(column.preFilteredRows.map(row => row.values[column.id]))].sort();\n\n\tif (uniquevalues?.length <= 1) return null;\n\n\tconst changeFilter = value => {\n\t\tif (column.filterValue) {\n\t\t\tif (Array.isArray(column.filterValue))\n\t\t\t\tif (column.filterValue.includes(value))\n\t\t\t\t\tif (column.filterValue.length === 1) column.setFilter(undefined);\n\t\t\t\t\telse column.setFilter(column.filterValue.filter(item => item !== value));\n\t\t\t\telse column.setFilter([...column.filterValue, value]);\n\t\t\telse column.setFilter([value]);\n\t\t} else column.setFilter([value]);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t : } onClick={openFilter} onDelete={column.filterValue && (() => column.setFilter(undefined))} sx={{ borderRadius: '4px' }} />\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{uniquevalues.map(\n\t\t\t\t\t\t(value, index) =>\n\t\t\t\t\t\t\t(value || value === 0) && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t changeFilter(value)}>\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)}\n\t\t\t\t\t{column.filterValue && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t column.setFilter(undefined)}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FilterOneOf;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\nconst FilterMinMax = ({ column }) => {\n const { t } = useTranslation(['labels']);\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const [min, setMin] = useState(column.filterValue?.[0]);\n const [max, setMax] = useState(column.filterValue?.[1]);\n\n return (\n <>\n val).length > 1 ? '-' : ''} ${\n column.filterValue[1] ? `Max:${column.filterValue?.[1]}` : ''\n }`\n : column.Header\n }\n color={column.filterValue ? 'primary' : 'default'}\n size=\"small\"\n variant={column.filterValue ? 'filled' : 'outlined'}\n icon={column.filterValue ? : }\n onClick={openFilter}\n onDelete={column.filterValue && (() => column.setFilter(undefined))}\n sx={{ borderRadius: '4px' }}\n />\n \n }\n spacing={2}\n sx={{ px: 2 }}>\n setMin(e.target.value)}\n />\n setMax(e.target.value)}\n />\n {\n column.setFilter([min, max]);\n closeFilter();\n }}>\n \n \n \n \n \n );\n};\n\nexport default FilterMinMax;\n","import React, { useState } from 'react';\n\n// MUI\nimport Chip from '@mui/material/Chip';\nimport Checkbox from '@mui/material/Checkbox';\nimport Popover from '@mui/material/Popover';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst ageranges = ['18 - 25', '26 - 35', '36 - 45', '46 and over'];\n\nconst FilterAgeRange = ({ column }) => {\n\tconst [anchorEl, setAnchorEl] = useState(null);\n\tconst open = Boolean(anchorEl);\n\tconst openFilter = event => setAnchorEl(event.currentTarget);\n\tconst closeFilter = () => setAnchorEl(null);\n\n\tconst changeFilter = value => {\n\t\tif (column.filterValue) {\n\t\t\tif (Array.isArray(column.filterValue))\n\t\t\t\tif (column.filterValue.includes(value))\n\t\t\t\t\tif (column.filterValue.length === 1) column.setFilter(undefined);\n\t\t\t\t\telse column.setFilter(column.filterValue.filter(item => item !== value));\n\t\t\t\telse column.setFilter([...column.filterValue, value]);\n\t\t\telse column.setFilter([value]);\n\t\t} else column.setFilter([value]);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t : } onClick={openFilter} onDelete={column.filterValue && (() => column.setFilter(undefined))} sx={{ borderRadius: '4px' }} />\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{ageranges.map((value, index) => (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t changeFilter(value)}>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t))}\n\t\t\t\t\t{column.filterValue && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t column.setFilter(undefined)}>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FilterAgeRange;\n","import React, { useState } from 'react';\n\n// MUI\nimport Chip from '@mui/material/Chip';\nimport Checkbox from '@mui/material/Checkbox';\nimport Popover from '@mui/material/Popover';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CloseIcon from '@mui/icons-material/Close';\n\nconst FilterOneOfStatic = ({ column }) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const { filterLabelAccessor, filterIdAccessor, filterQuery, values, onChange, hideIf } = column;\n\n const { data, isLoading } = filterQuery;\n\n const changeFilter = (value) => {\n if (values.find((item) => item.id === value.id)) onChange(values.filter((item) => item.id !== value.id));\n else onChange([...values, value]);\n };\n\n if (hideIf && hideIf(data)) return null;\n\n return (\n <>\n 0 ? `${column.Header}: ${values.map((item) => item.label).join([' - '])}` : column.Header}\n color={values.length > 0 ? 'primary' : 'default'}\n size=\"small\"\n variant={values.length > 0 ? 'filled' : 'outlined'}\n icon={values.length > 0 ? : }\n onClick={openFilter}\n onDelete={values.length > 0 ? () => onChange([]) : null}\n sx={{ borderRadius: '4px' }}\n />\n \n \n {data?.map((row, index) => (\n \n changeFilter({ label: row[filterLabelAccessor], id: row[filterIdAccessor] })}>\n \n item.id === row[filterIdAccessor])} edge=\"start\" tabIndex={-1} disableRipple />\n \n \n \n \n ))}\n {values.length > 0 && (\n <>\n \n \n onChange([])}>\n \n \n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default FilterOneOfStatic;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Chip from '@mui/material/Chip';\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport CheckIcon from '@mui/icons-material/Check';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\n\nconst FilterMinMaxStatic = ({ column }) => {\n const { t } = useTranslation(['labels']);\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openFilter = (event) => setAnchorEl(event.currentTarget);\n const closeFilter = () => setAnchorEl(null);\n\n const [min, setMin] = useState(column.values?.[0]);\n const [max, setMax] = useState(column.values?.[1]);\n\n return (\n <>\n val).length > 1 ? '-' : ''} ${\n column.values?.[1] !== null ? `Max:${column.values[1]}` : ''\n }`\n : column.Header\n }\n color={column.values?.every((val) => val === null) ? 'default' : 'primary'}\n size=\"small\"\n variant={column.values?.every((val) => val === null) ? 'outlined' : 'filled'}\n icon={column.values?.every((val) => val === null) ? : }\n onClick={openFilter}\n onDelete={!column.values?.every((val) => val === null) ? () => column.onChange(null, null) : undefined}\n sx={{ borderRadius: '4px' }}\n />\n \n }\n spacing={2}\n sx={{ px: 2 }}>\n setMin(parseInt(e.target.value))}\n />\n setMax(parseInt(e.target.value))}\n />\n {\n column.onChange(min, max);\n closeFilter();\n }}>\n \n \n \n \n \n );\n};\n\nexport default FilterMinMaxStatic;\n","import React from 'react';\n\n// Components\nimport FilterBeforeScope from './filter.beforescope.component';\nimport FilterDateRange from './filter.daterange.component';\nimport FilterDateRangeFuture from './filter.daterangefuture.component';\nimport FilterDateRangeUpdateState from './filter.daterangeupdatestate.component';\nimport FilterEquals from './filter.equals.component';\nimport FilterOneOf from './filter.oneof.component';\nimport FilterMinMax from './filter.minmax.component';\nimport FilterAgeRange from './filter.agerange.component';\nimport FilterOneOfStatic from './filter.staticoneof.component';\nimport FilterMinMaxStatic from './filter.staticminmax.component';\n\nconst FilterColumn = ({ column }) => {\n if (column.filter === 'equals') return ;\n else if (column.filter === 'oneof') return ;\n else if (column.filter === 'staticoneof') return ;\n else if (column.filter === 'daterange') return ;\n else if (column.filter === 'futuredaterange') return ;\n else if (column.filter === 'daterangeupdatestate') return ;\n else if (column.filter === 'beforescope') return ;\n else if (column.filter === 'minmax') return ;\n else if (column.filter === 'minmaxstatic') return ;\n else if (column.filter === 'agerange') return ;\n return null;\n};\n\nexport default FilterColumn;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport FilterColumn from './filter.column.component';\n\nconst filterfunc = (a, b) => (a.filterValue && b.filterValue ? -1 : a.filterValue ? -1 : b.filterValue ? 1 : a.filterorder - b.filterorder);\n\nconst FilterBar = ({ columns, filters, loading }) => {\n\tconst { t } = useTranslation(['labels', 'actions']);\n\n\tif (!columns) return null;\n\tif (!filters) return null;\n\n\tconst filteredcolumns = filters.map(filter => columns.find(column => column.id === filter.id));\n\tconst sortedcolumns = columns?.filter(column => column.canFilter && !column.filterValue).sort(filterfunc);\n\n\treturn (\n\t\t\n\t\t\t{filteredcolumns.length > 0 && (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{t('labels:filters')}\n\t\t\t\t\t\n\t\t\t\t\t{filteredcolumns.map(column => column && )}\n\t\t\t\t\n\t\t\t)}\n\t\t\t\n\t\t\t\t{!loading > 0 && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{sortedcolumns.length > 0 && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{t('actions:addfilter')}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{sortedcolumns.map(column => column && )}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default FilterBar;\n","import React, { useState } from 'react';\n\nimport { styled, alpha } from '@mui/material/styles';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport IconButton from '@mui/material/IconButton';\nimport InputBase from '@mui/material/InputBase';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport Stack from '@mui/material/Stack';\n\nimport { useAsyncDebounce } from 'react-table';\n\nconst StyledInputBase = styled(InputBase)(({ theme }) => ({\n color: 'inherit',\n lineHeight: 'inherit',\n '& .MuiInputBase-input': {\n fontSize: '0.9em',\n padding: theme.spacing(1, 1, 1, 1),\n transition: theme.transitions.create('width'),\n width: '100%',\n [theme.breakpoints.up('sm')]: {\n width: '12ch',\n '&:focus': {\n width: '20ch',\n },\n },\n },\n}));\n\nconst SearchBox = ({ searchingFor, onSearch, onSearchValue, onSearchChange, debounceTime, placeholder }) => {\n const [value, setValue] = useState(searchingFor || onSearchValue);\n\n const onChange = useAsyncDebounce((value) => {\n if (onSearchChange) {\n onSearchChange(value || undefined);\n } else onSearch(value || undefined);\n }, debounceTime);\n\n return (\n \n \n {\n setValue(e.target.value);\n onChange(e.target.value);\n }}\n sx={{ height: 32 }}\n endAdornment={\n \n {\n setValue(undefined);\n onSearch('');\n if (onSearchChange) onSearchChange(undefined);\n }}>\n \n \n \n }\n />\n \n );\n};\n\nSearchBox.defaultProps = {\n debounceTime: 700,\n};\n\nexport default SearchBox;\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Badge from '@mui/material/Badge';\nimport Divider from '@mui/material/Divider';\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Popover from '@mui/material/Popover';\nimport TableSortLabel from '@mui/material/TableSortLabel';\n\n// MUI Icons\nimport CloseIcon from '@mui/icons-material/Close';\nimport SortIcon from '@mui/icons-material/Sort';\n\n// Components\nimport Action from '../navigation/navbar/action.component';\n\nconst TableSorter = ({ columns, title, size, disabled }) => {\n const { t } = useTranslation(['actions']);\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n const openSorter = (event) => setAnchorEl(event.currentTarget);\n const closeSorter = () => setAnchorEl(null);\n\n const sortedcolumcount = columns?.filter(column => column.isSorted).length;\n const clearSort = () => columns?.map(column => column.canSort && column.isSorted && column.clearSortBy())\n\n return (\n <>\n \n } />\n \n \n \n {\n columns.map((column, index) =>\n column.canSort &&\n \n \n \n \n \n \n )\n }\n {\n (sortedcolumcount > 0) &&\n <>\n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n );\n}\n\nexport default TableSorter;","import React, { cloneElement } from 'react';\nimport PropTypes from 'prop-types';\nimport config from './config';\nimport { CSVLink } from 'react-csv';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Avatar from '@mui/material/Avatar';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport Menu from '@mui/material/Menu';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport CloseIcon from '@mui/icons-material/Close';\nimport DownloadIcon from '@mui/icons-material/Download';\n\n// Components\nimport FilterBar from '../filter/filterbar/filter.bar.component';\nimport RefetchButton from '../buttons/refetch.button';\nimport SearchBox from '../search.box.component';\nimport TableSorter from './sorter.component';\nimport Action from '../navigation/navbar/action.component';\n\nconst ToolBar = (props) => {\n const {\n size,\n gap,\n padding,\n px,\n py,\n sx,\n avatar,\n icon,\n title,\n rowCount,\n filteredRowCount,\n searchingFor,\n filters,\n refetch,\n isFetching,\n isLoading,\n addAsIconButton,\n addAction,\n csvData,\n onCsvExport,\n onExcelExport,\n columns,\n showFilterBar,\n showSorter,\n onClose,\n onBack,\n onSearch,\n onSearchChange,\n onSearchValue,\n onAddNew,\n selectedRowsActions,\n beforeItems,\n afterItems,\n beforeActions,\n afterActions,\n localization,\n totalRowCount,\n } = props;\n const { t } = useTranslation(['labels']);\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n return (\n \n \n \n {beforeItems}\n {onClose && (\n }\n size={config[size].buttonsize}\n label={localization?.close || t('actions:close')}\n />\n )}\n {onBack && (\n }\n label={localization?.back || t('actions:goback')}\n />\n )}\n {avatar && typeof avatar === 'string' && }\n {icon && cloneElement(icon, { color: 'action' })}\n \n {title && (\n \n {title}\n \n )}\n {title && !isLoading && rowCount && (\n \n {filteredRowCount ? `(${filteredRowCount}/${totalRowCount || rowCount})` : `(${rowCount})`}\n \n )}\n \n {afterItems}\n \n \n {selectedRowsActions}\n {onSearch && (\n \n )}\n \n {beforeActions}\n {onCsvExport && (\n <>\n } label=\"Export\" />\n \n onCsvExport().then((isDataEmpty) => (isDataEmpty ? done(false) : done()))}>\n } label=\"Export as CSV\" />\n \n }\n label=\"Export as XLS\"\n />\n \n \n )}\n {showSorter && (\n \n )}\n {refetch && (\n \n )}\n {onAddNew ? (\n }\n label={localization?.addnew || 'Add New'}\n />\n ) : (\n addAction\n )}\n {afterActions}\n {avatar && typeof avatar !== 'string' && avatar}\n \n \n \n {showFilterBar && }\n \n );\n};\n\nToolBar.defaultProps = {\n size: 'small',\n gap: 1,\n showFilterBar: false,\n};\n\nToolBar.propTypes = {\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n gap: PropTypes.number,\n padding: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n px: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n py: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n avatar: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\n icon: PropTypes.element,\n title: PropTypes.string,\n rowCount: PropTypes.number,\n filteredRowCount: PropTypes.number,\n selectedRowCount: PropTypes.number,\n selectedRowsActions: PropTypes.element,\n searchingFor: PropTypes.string,\n onClose: PropTypes.func,\n onBack: PropTypes.func,\n onSearch: PropTypes.func,\n onFilterSelect: PropTypes.func,\n onExpand: PropTypes.func,\n onInsight: PropTypes.func,\n onAddNew: PropTypes.func,\n filters: PropTypes.array,\n refetch: PropTypes.func,\n isFetching: PropTypes.bool,\n isLoading: PropTypes.bool,\n addAsIconButton: PropTypes.bool,\n addAction: PropTypes.element,\n columns: PropTypes.array,\n showFilterBar: PropTypes.bool,\n};\n\nexport default ToolBar;\n\n/**\n const _export = useRef(null);\n\tconst [excelExporting, setExcelExporting] = useState(false);\n\n\tconst excelExport = () => {\n\t\tsave(_export);\n\t};\n\tconst save = (component) => {\n\t\tsetExcelExporting(true);\n\t\tconst options = component.current.workbookOptions();\n\t\tconst rows = options.sheets[0].rows;\n\n\t\tlet altIdx = 0;\n\t\trows.forEach((row) => {\n\t\t\tif (row.type === \"data\") {\n\t\t\t\trow.height = 50;\n\t\t\t\trow.fontSize = 30;\n\t\t\t\tif (altIdx % 2 !== 0) {\n\t\t\t\t\trow.cells.forEach((cell) => {\n\t\t\t\t\t\tcell.background = \"#aabbcc\";\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\taltIdx++;\n\t\t\t}\n\t\t});\n\t\tcomponent.current.save(options);\n\t};\n\n\tconst handleExport = () => setExcelExporting(false);\n\n\tconst exportableColumns = columns?.filter(c => !c.disableExport && (c.id !== 'selection')) || [];\n\tconsole.log([...exportableColumns.filter(c => c.exportorder && Boolean(_export?.current?.props?.data?.find(r => Boolean(r[c.Header])))).sort((a, b) => a.exportorder - b.exportorder), ...exportableColumns.filter(c => !c.exportorder)]);\n\n\t\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t[...exportableColumns.filter(c => c.exportorder && Boolean(_export?.current?.props?.data?.find(r => Boolean(r[c.Header])))).sort((a, b) => a.exportorder - b.exportorder), ...exportableColumns.filter(c => !c.exportorder)]\n\t\t\t\t\t\t\t\t\t\t\t\t.map((column, key) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\n */\n","import React, { useMemo, useEffect, useRef, useCallback, useState } from 'react';\nimport { useVirtualizer, elementScroll } from '@tanstack/react-virtual';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\nimport Enums from '../enums';\nimport slice from 'lodash/slice';\n\n// MUI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Grid from '@mui/material/Grid';\nimport useTheme from '@mui/material/styles/useTheme';\n\n// MUI Icons\nimport Star from '@mui/icons-material/Star';\n\n// Components\nimport BrandCard from './brand.info.card';\nimport BrandNewAction from './actions/brand.new.action';\nimport ToolBar from '../_components/toolbar/toolbar.component';\n\n// React Table\nimport { useTable, useGlobalFilter, useSortBy, useFilters } from 'react-table';\nimport { calcRenewalDate, momentSortFn, oneOfFilterFn, scopeFilterFn, dateRangeFilterFn, beforeScopeFilterFn } from '../_components/filter/filter.functions';\n\n// Api\nimport useBrandApi from './api/useBrandApi';\n\nfunction easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n}\n\nconst BrandsCardList = () => {\n const { t } = useTranslation(['labels', 'enums']);\n const initialState = JSON.parse(localStorage.getItem('bw-live-preferences-clients-table'));\n\n const parentRef = useRef();\n const scrollingRef = useRef();\n const [currentBreakpoint, setCurrentBreakpoint] = useState('');\n\n const { useFetchBrands } = useBrandApi();\n const { data, isFetching, isLoading, refetch } = useFetchBrands();\n\n const brands = useMemo(() => data || [], [data]);\n\n const columns = useMemo(() => [\n {\n Header: t('labels:clientname'),\n id: 'Name',\n accessor: 'Name',\n disableFilters: true,\n },\n {\n Header: t('labels:region'),\n id: 'Region',\n accessor: 'Region',\n filter: 'oneof',\n filterorder: 1,\n },\n {\n Header: t('labels:country'),\n id: 'Country',\n accessor: 'Country',\n filter: 'oneof',\n filterorder: 2,\n },\n {\n Header: t('labels:status'),\n id: 'Status',\n accessor: (row) => t(`enums:brandstatus.${row.Status}`),\n filter: 'oneof',\n filterorder: 3,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n Header: t('labels:membersince'),\n accessor: (row) => row.CreatedAt && moment(row.CreatedAt),\n id: 'MemberSince',\n filter: 'daterange',\n filterorder: 4,\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:renewaldate'),\n accessor: (row) => calcRenewalDate(row.CreatedAt),\n id: 'RenewalDate',\n filter: 'futuredaterange',\n filterorder: 5,\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:clienttype'),\n id: 'ClientType',\n accessor: (row) => t(`enums:brandtype.${row.BrandTypeId}`),\n filter: 'oneof',\n filterorder: 6,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n Header: t('labels:firstsubscriber'),\n accessor: (row) => row.FirstSubscriberTime && moment(row.FirstSubscriberTime),\n id: 'FirstSubscriberTime',\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:lastsubscriber'),\n accessor: (row) => row.LastSubscriberTime && moment(row.LastSubscriberTime),\n id: 'LastSubscriberTime',\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:firsttransaction'),\n accessor: (row) => row.FirstTransactionTime && moment(row.FirstTransactionTime),\n id: 'FirstTransactionTime',\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:lasttransaction'),\n accessor: (row) => row.LastTransactionTime && moment(row.LastTransactionTime),\n id: 'LastTransactionTime',\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:partner'),\n id: 'Partner',\n accessor: (row) => row.Config?.IntegrationPartner ? Enums.partners[row.Config.IntegrationPartner] : 'None',\n filter: 'equals',\n filterorder: 7,\n disableSortBy: true,\n },\n {\n Header: t('labels:subscribercount'),\n id: 'SubscriberCount',\n accessor: 'SubscriberCount',\n disableFilters: true,\n disableGlobalFilter: true,\n sortType: 'number',\n },\n {\n Header: t('labels:transactioncount'),\n id: 'TransactionCount',\n accessor: 'TransactionCount',\n disableFilters: true,\n disableGlobalFilter: true,\n sortType: 'number',\n },\n {\n Header: t('labels:sector'),\n id: 'SectorTypeId',\n accessor: (row) => t(`enums:sector.${row.SectorTypeId}`),\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 10\n },\n {\n id: 'BrandLogoUrl',\n accessor: 'BrandLogoUrl',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n id: 'Hash',\n accessor: 'Hash',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n id: 'Config',\n accessor: 'Config',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n id: 'Id',\n accessor: 'Id',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n id: 'City',\n accessor: 'City',\n disableFilters: true,\n disableSortBy: true,\n },\n {\n id: 'OpaqueId',\n accessor: 'OpaqueId',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n Header: t('labels:churnstatus'),\n id: 'ChurnStats',\n accessor: (row) => row.ChurnStats?.TypeId ? t(`enums:churnstatus.${row.ChurnStats?.TypeId}`) : null,\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 6,\n disableSortBy: true,\n },\n ], [t]);\n\n // Let the table remove the filter if the string is empty\n scopeFilterFn.autoRemove = val => !val\n\n const {\n state,\n allColumns,\n rows,\n prepareRow,\n setGlobalFilter,\n } = useTable(\n {\n columns: columns,\n data: brands,\n initialState: initialState,\n autoResetGlobalFilter: false,\n autoResetFilters: false,\n sortTypes: useMemo(() => ({\n moment: momentSortFn,\n }), []),\n filterTypes: useMemo(() => ({\n scope: scopeFilterFn,\n oneof: oneOfFilterFn,\n daterange: dateRangeFilterFn,\n futuredaterange: dateRangeFilterFn,\n beforescope: beforeScopeFilterFn,\n }), []),\n },\n useGlobalFilter,\n useFilters,\n useSortBy,\n );\n\n const theme = useTheme();\n const getCurrentBreakpoint = useCallback(() => {\n const width = window.innerWidth;\n if (width < theme.breakpoints.values.sm) {\n return 'xs';\n } else if (width < theme.breakpoints.values.md) {\n return 'sm';\n } else if (width < theme.breakpoints.values.lg) {\n return 'md';\n } else if (width < theme.breakpoints.values.xl) {\n return 'lg';\n } else {\n return 'xl';\n }\n }, [theme]);\n\n useEffect(() => localStorage.setItem('bw-live-preferences-clients-table', JSON.stringify(state)), [state]);\n\n useEffect(() => {\n function handleResize() {\n setCurrentBreakpoint(getCurrentBreakpoint());\n }\n window.addEventListener('resize', handleResize);\n setCurrentBreakpoint(getCurrentBreakpoint());\n return () => window.removeEventListener('resize', handleResize);\n }, [getCurrentBreakpoint]);\n\n const getItemPerRow = useCallback(() => {\n switch (currentBreakpoint) {\n case 'xs': return 1;\n case 'sm': return 2;\n case 'md': return 3;\n case 'lg': return 4;\n case 'xl': return 6;\n default: return 0;\n }\n }, [currentBreakpoint]);\n\n const getCalculatedRowCount = useCallback(() => {\n if (!rows || rows.length === 0 || getItemPerRow() === 0) return 0;\n return Math.ceil(rows?.length / getItemPerRow());\n }, [getItemPerRow, rows]);\n\n const scrollToFn = React.useCallback((offset, canSmooth, instance) => {\n const duration = 0;\n const start = parentRef.current.scrollTop;\n const startTime = (scrollingRef.current = Date.now());\n\n const run = () => {\n if (scrollingRef.current !== startTime) return;\n const now = Date.now();\n const elapsed = now - startTime;\n const progress = easeInOutQuint(Math.min(elapsed / duration, 1));\n const interpolated = start + (offset - start) * progress;\n\n if (elapsed < duration) {\n elementScroll(interpolated, canSmooth, instance);\n requestAnimationFrame(run);\n } else {\n elementScroll(interpolated, canSmooth, instance);\n }\n };\n\n requestAnimationFrame(run);\n }, []);\n\n const rowVirtualizer = useVirtualizer({\n overscan: 5,\n estimateSize: () => 332,\n count: getCalculatedRowCount(),\n scrollToFn: scrollToFn,\n initialOffset: parseInt(localStorage.getItem(\"bw-live-preferences-clients-table-scroll-offset\")),\n getScrollElement: () => parentRef.current,\n });\n\n var timer;\n\n return (\n \n }\n px\n showFilterBar\n showSorter\n filters={state.filters}\n columns={allColumns}\n rowCount={data?.length}\n filteredRowCount={rows?.length}\n searchingFor={state?.globalFilter}\n onSearch={setGlobalFilter}\n refetch={refetch}\n isFetching={isFetching}\n isLoading={isLoading}\n addAction={}\n localization={{\n search: t('labels:search'),\n refetch: t('labels:refresh'),\n addnew: t('actions:newclient'),\n }}\n />\n {\n clearTimeout(timer);\n timer = setTimeout(() => {\n localStorage.setItem('bw-live-preferences-clients-table-scroll-offset', rowVirtualizer.scrollOffset);\n }, 100);\n }}\n height='calc(100% - 110px)'\n sx={{ overflowY: 'scroll' }}\n pt={1}\n px={2}\n boxSizing='border-box'>\n
    \n {\n rowVirtualizer.getVirtualItems().map(virtualRow => {\n\n const itemPerRow = getItemPerRow();\n let items = slice(rows, virtualRow.index * itemPerRow, virtualRow.index * itemPerRow + itemPerRow);\n\n return (\n \n {\n items.map((row, index) => {\n prepareRow(row);\n return \n \n \n })\n }\n {\n items.length < itemPerRow && Array.from(Array(itemPerRow - items.length)).map((_, index) => {\n return \n })\n }\n \n )\n }\n )\n }\n
    \n \n
    \n );\n}\n\nexport default BrandsCardList;\n\n// var timer;\n\n/**\n * {\n data &&\n {\n clearTimeout(timer);\n timer = setTimeout(() => {\n localStorage.setItem('bw-live-preferences-clients-table-scroll', e.target.scrollTop);\n }, 100);\n }}\n sx={{\n flexGrow: 1,\n flexWrap: 'wrap',\n px: 2,\n pb: 2,\n gap: '4px',\n alignItems: 'flex-start',\n width: '100%',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }}\n >\n {\n rows.map((row, index) => {\n prepareRow(row)\n return (\n \n \n \n )\n })\n }\n {\n // The following piece is to fill the card list with invisible cards, so that the cards at the bottom row can align to the left\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(i => )\n }\n \n }\n */","import React, { useContext } from 'react';\nimport { Redirect } from \"react-router-dom\";\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\n// Components\nimport BrandsCardList from '../brands.card.list';\n\nconst Brands = () => {\n const { hasPermissions } = useContext(UserContext);\n\n if (!hasPermissions(['admin:viewallpages', 'clients:view']))\n return \n\n return \n}\n\nexport default Brands","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport { TextField, Autocomplete, CircularProgress } from '@mui/material';\n\n// Api\nimport usePassApi from './api/usePassApi';\n\n\nconst PassSelect = (props) => {\n const { brandhash, select = 'Hash', size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n const { useFetchPasses } = usePassApi();\n const { data, isFetching } = useFetchPasses(brandhash);\n\n return (\n onChange(value?.[select])}\n getOptionLabel={(option) => option.Name || ''}\n renderOption={(props, option) => (\n
  • \n {option.Name}\n
  • \n )}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default PassSelect;","import React, { useState } from 'react';\nimport Enums from '../../../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - UI\nimport Radio from '@mui/material/Radio';\nimport FormLabel from '@mui/material/FormLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nconst CouponConfigTypeRadios = (props) => {\n const { setValues, values, label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n const [tempNotifications, setTempNotifications] = useState(values.Config?.Notifications || []);\n\n const handleChange = (event) => {\n setTempNotifications(values.Config?.Notifications);\n setValues(prev => {\n switch (event.target.value) {\n case 'none': return ({ ...prev, Config: { ...prev.Config, SendMessage: null, UpdateSubscriber: null, Notifications: [] } })\n case 'updatesubscriber': return ({ ...prev, Config: { ...prev.Config, SendMessage: null, UpdateSubscriber: true, Notifications: [] } })\n case 'sendmessage': return ({ ...prev, Config: { ...prev.Config, SendMessage: true, UpdateSubscriber: null, Notifications: [...tempNotifications] } })\n default: return prev;\n }\n })\n onChange(event);\n }\n return (\n \n {label}\n \n {\n Enums.couponconfigtypes.map((option, key) =>\n (}\n label={t('enums:couponconfigtype.' + option)} />))\n }\n \n {helperText}\n \n )\n}\n\nexport default CouponConfigTypeRadios;","import React, { useState } from 'react'\nimport { SketchPicker } from 'react-color'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Popover from '@mui/material/Popover';\n\nconst ColorPicker = (props) => {\n const { value, onChange, disabled } = props;\n\n const [color, setColor] = useState({ hex: value });\n const handleChangeColor = (color) => setColor(color);\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n const handleClick = (event) => setAnchorEl(event.currentTarget);\n\n const handleClose = () => setAnchorEl(null);\n\n const open = Boolean(anchorEl);\n const id = anchorEl ? 'simple-popover' : undefined;\n\n return (\n <>\n \n \n \n \n onChange(color.hex)} />\n \n \n )\n}\n\nexport default ColorPicker","import React from 'react';\n\n// Material UI\nimport Switch from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\n\nconst LabelSwitch = (props) => {\n const { visible = true, disabled, label, labelPlacement, color, size, value, onChange } = props;\n\n if (!visible) return null;\n\n return (\n }\n label={label}\n disabled={disabled}\n labelPlacement={labelPlacement} />\n );\n}\n\nLabelSwitch.defaultProps = {\n label: '',\n labelPlacement: 'start',\n color: 'primary',\n size: 'medium',\n value: false,\n};\n\nexport default LabelSwitch;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { get, post, put, patch } from '../../_api/api'\nimport { useSnackbar } from 'notistack';\nimport { uniq } from 'lodash';\n\nconst useProductApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n const useFetchCategories = (brandhash) => useQuery([brandhash, 'product-categories'], () => get(`/Product/category/${brandhash}`), { enabled: !!brandhash });\n\n const useFetchProducts = (brandhash) => useQuery(brandhash ? [brandhash, 'products'] : ['products'], () => get(brandhash ? `/Product?brand=${brandhash}` : '/Product'));\n\n const useFetchActiveProducts = (brandhash) => useFetchProducts(brandhash, (products) => {\n return uniq(products.filter(product => product.Status === 1))\n })\n\n const useFetchProduct = (producthash) => useQuery(['product', producthash], () => get(`/Product/${producthash}`),\n {\n enabled: !!producthash,\n retry: false,\n staleTime: 1000 * 60 * 20,\n refetchOnWindowFocus: false,\n onError: (error) => enqueueSnackbar(`Ürün yüklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useCreateCategory = useMutation(newCategory => post('/Product/category', newCategory),\n {\n retry: false,\n onSuccess: (_, variables) => {\n enqueueSnackbar('Yeni Kategori başarıyla oluşturuldu', { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'product-categories'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`Kategori oluşturulurken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateCategory = useMutation(Category => put('/Product/category', Category),\n {\n retry: false,\n onSuccess: (_, variables) => {\n enqueueSnackbar('Kategori başarıyla güncellendi', { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'product-categories'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`Kategori güncellenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useMoveUpCategory = useMutation((category) => patch(`/Product/category/${category.Hash}/up`),\n {\n retry: false,\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar('Kategori başarıyla yer değiştirildi', { variant: 'success' });\n queryClient.invalidateQueries(['product-categories', variables.BrandHash], { refetchInactive: true })\n }\n },\n onError: (error) => enqueueSnackbar(`Kategori yer değiştiriliken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useMoveDownCategory = useMutation((category) => patch(`/Product/category/${category.Hash}/down`),\n {\n retry: false,\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar('Kategori başarıyla yer değiştirildi', { variant: 'success' });\n queryClient.invalidateQueries(['product-categories', variables.BrandHash], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`Kategori yer değiştiriliken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useCreateProduct = useMutation(newProduct => post('/Product', newProduct),\n {\n retry: false,\n onSuccess: (_, variables) => {\n enqueueSnackbar('Yeni Ürün başarıyla oluşturuldu', { variant: 'success' });\n queryClient.invalidateQueries([variables.Brand, 'products'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`Kategori oluşturulurken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateProduct = useMutation(Product => put('/Product', Product),\n {\n retry: false,\n onSuccess: (data, variables) => {\n enqueueSnackbar('Ürün başarıyla güncellendi', { variant: 'success' });\n queryClient.invalidateQueries(['products', variables.BrandHash], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`Kategori güncellenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useArchiveProduct = useMutation((producthash) => patch(`/Product/${producthash}/archive`),\n {\n retry: false,\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar('Ürün başarıyla arşivlendi', { variant: 'success' });\n }\n },\n onError: (error) => enqueueSnackbar(`Ürün arşivlenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useActivateProduct = useMutation((producthash) => patch(`/Product/${producthash}/activate`),\n {\n retry: false,\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar('Marka başarıyla aktif edildi', { variant: 'success' });\n }\n },\n onError: (error) => enqueueSnackbar(`Ürün aktif edilirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchProducts,\n useFetchActiveProducts,\n useFetchCategories,\n useCreateCategory,\n useUpdateCategory,\n useMoveUpCategory,\n useMoveDownCategory,\n useFetchProduct,\n useCreateProduct,\n useUpdateProduct,\n useArchiveProduct,\n useActivateProduct\n }\n}\n\nexport default useProductApi;\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { createFilterOptions } from '@mui/material';\n\n// Api\nimport useProductApi from './api/useProductApi';\n\nconst filterOptions = createFilterOptions({ limit: 40 });\n\nconst ProductSelect = (props) => {\n const { brandhash, select = 'Hash', size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const { useFetchActiveProducts } = useProductApi();\n const { data, isFetching } = useFetchActiveProducts(brandhash);\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>\n
  • \n \n \n {option.Name}\n \n \n {option.Barcode}\n \n \n
  • \n }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default ProductSelect;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nconst NumberField = (props) => {\n const { name, type, error, fullWidth, size, value, label, placeholder, disabled, onFocus, onBlur, onChange } = props;\n\n const availableKeys = {\n 'integer': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Tab', 'Enter', 'Escape', 'Control', 'Alt', 'Shift', 'Meta', 'CapsLock'],\n 'decimal': ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Tab', 'Enter', 'Escape', 'Control', 'Alt', 'Shift', 'Meta', 'CapsLock']\n }[type]\n\n return (\n {\n const lengthOfValue = value.length;\n if (!availableKeys.includes(e.key) || (e.key === '.' && value[lengthOfValue - 1] === '.') || (lengthOfValue === 0 && e.key === '.')) e.preventDefault();\n }\n }\n }\n />\n )\n}\n\nexport default NumberField","// React Query\nimport { useQuery } from 'react-query';\n\n// API\nimport { get, post } from '../_api/api'\n\nexport const usePasses = () => useQuery('passes', () => get(`/Pass`), { refetchOnWindowFocus: false });\nexport const usePass = (passid) => useQuery(['pass', passid], () => get(`/Pass/get/${passid}`), { enabled: !!passid, refetchOnWindowFocus: false });\nexport const useMembers = (hash) => useQuery(['users', hash], () => get(`/User/?brand=${hash}`));\nexport const useBrandPasses = (hash) => useQuery(['brand-passes', hash], () => get(`/Pass/?brand=${hash}`));\nexport const useBrandPassDesign = (hash) => useQuery(['pass-design', hash], () => get(`/Pass/${hash}/design`));\nexport const useCoupons = (brandid) => useQuery(['coupons', brandid], () => get(`/Coupon/list/?brandid=${brandid}`));\nexport const useProducts = (brandid) => useQuery(['products', brandid], () => get(`/Product/list?brandid=${brandid}`));\nexport const useInsightsToday = () => useQuery('insights-today', () => post('/Insights/today', {}));\nexport const useInsightsTransactions = (params) => useQuery('insights-transactions', () => post('/Insights/transaction', params));\nexport const useInsightsSubscribers = (params) => useQuery('insights-subscribers', () => post('/Insights/subscriber', params));\nexport const useInsightsDevices = (params) => useQuery(['insights-devices'], () => post('/Insights/operating-systems', params));\nexport const useTopPasses = () => useQuery('top-passes', () => post('/Insights/top-passes', {}), { refetchOnWindowFocus: false });\nexport const useTransactionsChart = (hash) => useQuery(hash ? ['chart-transactions', hash] : 'chart-transactions', () => get(`/Insights/transaction/stats${hash ? '?brand=' + hash : ''}`));\nexport const useSubscribersChart = (hash) => useQuery(hash ? ['chart-subscribers', hash] : 'chart-subscribers', () => get(`/Insights/subscriber/stats${hash ? '?brand=' + hash : ''}`));\nexport const useInsightsClients = () => useQuery('insights-clients', () => post('/Insights/client', {}));\nexport const useRoles = () => useQuery('roles', () => get('/Role'), { refetchOnWindowFocus: false });\nexport const usePermissions = () => useQuery('permissions', () => get('/Permission'), { refetchOnWindowFocus: false });\nexport const useRolePermissions = (roleid) => useQuery(['role-permissions', roleid], () => get(`/Role/${roleid}/permissions`), { enabled: !!roleid, refetchOnWindowFocus: false });\nexport const useCurrencies = () => useQuery('currencies', () => get('/Settings/currency'), { refetchOnWindowFocus: false })\nexport const useLanguages = () => useQuery('languages', () => get('/Settings/language'), { refetchOnWindowFocus: false })\nexport const useSectors = () => useQuery('sectors', () => get('/Settings/sector'), { refetchOnWindowFocus: false })\nexport const useUserTypes = () => useQuery('usertypes', () => get('/Settings/user-type'), { refetchOnWindowFocus: false })\n\nexport const GetPassListOfBrand = (brandid) => {\n return useQuery(['passesOf', brandid], () => get(`/Pass/list/?brandid=${brandid}&status=1`), { refetchOnWindowFocus: false })\n}\n\n// * Admin Widgets\nexport const GetAllTransactions = () => {\n return useQuery('transactions', () => post('/Insights/transaction', {}))\n}\n\nexport const GetAllTransactionsChart = () => {\n return useQuery('transactionschart', () => post('/Insights/transaction-chart'));\n}\n\nexport const GetAllSubscribersChart = () => {\n return useQuery('subscriberschart', () => post('/Insights/subscriber-chart'));\n}\n\nexport const GetAllClients = () => {\n return useQuery('clients', () => post('/Insights/client', {}))\n}\n\nexport const GetAllDevices = () => {\n return useQuery('devices', () => post('/Insights/operating-systems', {}))\n}\n\nexport const GetAllSubscribers = () => {\n return useQuery('subscribers', () => post('/Insights/subscriber', {}))\n}\n\nexport const GetAllMessages = () => {\n return useQuery('messages', () => post('/Insights/notifications', {}))\n}\n\n\n// * Brand widgets\n\nexport const GetTransactions = (params) => {\n return useQuery(['transactions', params.brandid], () => post('/Insights/transaction', params))\n}\n\nexport const GetTransactionsChart = (brandid) => {\n return useQuery(['transactionschart', brandid], () => post(`/Insights/transaction-chart?&brandid=${brandid}`));\n}\n\nexport const GetSubscribersChart = (brandid) => {\n return useQuery(['subscriberschart', brandid], () => post(`/Insights/subscriber-chart?&brandid=${brandid}`));\n}\n\nexport const GetClients = (params) => {\n return useQuery(['clients', params.brandid], () => post('/Insights/client', params))\n}\n\nexport const GetDevices = (params) => {\n return useQuery(['devices', params.brandid], () => post('/Insights/operating-systems', params))\n}\n\nexport const GetSubscribers = (params) => {\n return useQuery(['subscribers', params.brandid], () => post('/Insights/subscriber', params))\n}\n\nexport const GetMessages = (params) => {\n return useQuery(['messages', params.brandid], () => post('/Insights/notifications', params))\n}\n\n/* \n* Settings\n*/\n\nexport const GetReturnMessages = () => {\n return useQuery('returnmessagelist', () => get('/Settings/return-message-list'), { refetchOnWindowFocus: false })\n}\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport { useLanguages } from '../../_api/queries';\n\nconst LanguageSelect = (props) => {\n const { size, select = 'Id', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n const { data, isFetching } = useLanguages();\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n onChange={(_, value) => onChange(value?.[select])}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default LanguageSelect;","import React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\n\n// Components\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport LanguageSelect from '../../../settings/language/language.select.component';\n\n// Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst NotificationForm = (props) => {\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const { addNotification, updateNotification, setSelectedResponseParameter, selectedResponseParameter, disabled } = props;\n const { values, setValues, useSelectableFieldInput, useTextFieldInput, valid } = useForm(selectedResponseParameter || {});\n\n // useEffect to setValues to selectedResponseParameter when selectedResponseParameter changes\n useEffect(() => {\n if (selectedResponseParameter) setValues(selectedResponseParameter);\n else setValues({});\n\n }, [selectedResponseParameter, setValues]);\n\n const form = {\n NotificationText: {\n Name: 'NotificationText',\n Label: t('labels:couponnotitext'),\n Required: true,\n },\n Language: {\n Name: 'Language',\n Label: t('labels:language'),\n Required: true,\n },\n LanguageNotRequired: {\n Name: 'Language',\n Label: t('labels:language'),\n Required: true,\n },\n }\n\n const clearValues = () => {\n setValues({});\n setSelectedResponseParameter(null);\n }\n\n const onSubmit = () => {\n if (selectedResponseParameter) updateNotification(values)\n else addNotification(values)\n clearValues();\n }\n\n return (\n \n \n \n } />\n \n \n \n \n \n \n );\n}\n\nexport default NotificationForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport NotificationForm from './coupon.notification.form';\n\nconst CouponNotificationField = (props) => {\n const { field, setValues, values } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const [selectedResponseParameter, setSelectedResponseParameter] = useState(null);\n\n var lengthOfSplitted = field.Name.split('.').length;\n var fieldName = field.Name.split('.')[lengthOfSplitted - 1];\n\n const addNotification = (params) => {\n setValues(prev => {\n return { ...prev, Config: { ...prev.Config, Notifications: [...prev.Config.Notifications, params] } }\n })\n }\n\n const updateNotification = (params) => {\n setValues(prev => {\n var newNotifications = _.map(prev.Config?.Notifications, (a) => a.Language === params.Language ? params : a);\n return { ...prev, Config: { ...prev.Config, Notifications: newNotifications } };\n })\n }\n\n const deleteNotification = (key) => {\n setValues(prev => {\n var newNotifications = [...prev.Config?.Notifications];\n _.remove(newNotifications, n => n.Language === key);\n return { ...prev, Config: { ...prev.Config, Notifications: newNotifications } };;\n })\n }\n\n return (\n <>\n \n {\n values.Config[fieldName].map((notification, key) =>\n \n \n \n {notification.NotificationText}\n \n \n {t(`enums:language:${notification.Language}`)}\n \n \n deleteNotification(notification.Language)}\n sx={{ '&:hover': { bgcolor: 'rgba(231,76,59,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#E74C3B' }}>\n \n \n setSelectedResponseParameter(notification)}\n sx={{ '&:hover': { bgcolor: 'rgba(125,206,160,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#7DCEA0' }}>\n \n \n \n )\n }\n \n \n \n );\n}\n\nexport default CouponNotificationField;","import React, { useState, useEffect } from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { createFilterOptions } from '@mui/material';\n\n// Material UI Icons\nimport CheckBoxIcon from '@mui/icons-material/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';\n\n// Api\nimport useProductApi from './api/useProductApi';\n\nconst icon = ;\nconst checkedIcon = ;\n\nconst filterOptions = createFilterOptions({ limit: 40 });\n\nconst ProductMultiSelect = (props) => {\n const { brandhash, select = 'OpaqueId', size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const [values, setValues] = useState([]);\n\n const { useFetchActiveProducts } = useProductApi();\n const { data, isFetching } = useFetchActiveProducts(brandhash);\n\n useEffect(() => {\n const getValue = (value) => find(data, [select, value]) || null;\n\n if (value) {\n let _values = [];\n value.forEach(opaqueid => {\n let _value = getValue(opaqueid);\n if (_value) _values.push(_value)\n });\n setValues(_values);\n }\n }, [value, select, data])\n\n return (\n option.Name}\n onChange={(_, value) => onChange(value, null, select)}\n renderOption={(props, option, { selected }) => {\n return (\n
  • \n \n \n \n {option.Name}\n \n \n {option.Barcode}\n \n \n
  • \n\n )\n }}\n renderInput={(params) => (\n \n )}\n />\n );\n}\n\nexport default ProductMultiSelect","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport { useCurrencies } from '../../_api/queries';\n\nconst CurrencySelect = (props) => {\n const { size, select = 'Id', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n const { data, isFetching } = useCurrencies();\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n onChange={(_, value) => onChange(value?.[select])}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default CurrencySelect;","import React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\n\n// Components\nimport LabeledInputField from '../../../_components/labeled.input.component';\n\n// Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst ExpireNotificationForm = (props) => {\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const { addNotification, updateNotification, setSelectedResponseParameter, selectedResponseParameter, disabled } = props;\n const { values, setValues, useTextFieldInput, valid } = useForm(selectedResponseParameter || {});\n\n // useEffect to setValues to selectedResponseParameter when selectedResponseParameter changes\n useEffect(() => {\n if (selectedResponseParameter) setValues(selectedResponseParameter);\n else setValues({});\n\n }, [selectedResponseParameter, setValues]);\n\n const form = {\n ScheduledTime: {\n Name: 'ScheduleTime',\n Label: t('labels:scheduleto'),\n Required: true,\n },\n NotificationText: {\n Name: 'NotificationText',\n Label: t('labels:message'),\n Required: true,\n }\n }\n\n const clearValues = () => {\n setValues({});\n setSelectedResponseParameter(null);\n }\n\n const onSubmit = () => {\n if (selectedResponseParameter) updateNotification(values)\n else addNotification(values)\n clearValues();\n }\n\n return (\n \n \n \n \n \n {[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15].map(day => (\n \n ))}\n \n } />\n \n \n \n \n \n \n );\n}\n\nexport default ExpireNotificationForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport ExpireNotificationForm from './coupon.expire.notification.form';\n\nconst CouponExpireNotificationField = (props) => {\n const { field, setValues, values } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const [selectedResponseParameter, setSelectedResponseParameter] = useState(null);\n\n var lengthOfSplitted = field.Name.split('.').length;\n var fieldName = field.Name.split('.')[lengthOfSplitted - 1];\n\n const addNotification = (params) => {\n setValues(prev => {\n return { ...prev, Config: { ...prev.Config, CouponReminder: [...prev.Config.CouponReminder, params] } }\n })\n }\n\n const updateNotification = (params) => {\n setValues(prev => {\n var newNotifications = _.map(prev.Config?.CouponReminder, (a) => a.NotificationText === params.NotificationText ? params : a);\n return { ...prev, Config: { ...prev.Config, CouponReminder: newNotifications } };\n })\n }\n\n const deleteNotification = (key) => {\n setValues(prev => {\n var newNotifications = [...prev.Config?.CouponReminder];\n _.remove(newNotifications, n => n.NotificationText === key);\n return { ...prev, Config: { ...prev.Config, CouponReminder: newNotifications } };;\n })\n }\n\n return (\n \n \n {t('labels:expirenotifications')}\n \n \n {\n values.Config[fieldName]?.map((notification, key) =>\n \n \n \n {notification.NotificationText}\n \n \n {`${notification.ScheduleTime} ${t('labels:day')}`}\n \n \n deleteNotification(notification.NotificationText)}\n sx={{ '&:hover': { bgcolor: 'rgba(231,76,59,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#E74C3B' }}>\n \n \n setSelectedResponseParameter(notification)}\n sx={{ '&:hover': { bgcolor: 'rgba(125,206,160,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#7DCEA0' }}>\n \n \n \n )\n }\n \n \n \n );\n}\n\nexport default CouponExpireNotificationField;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Collapse from '@mui/material/Collapse';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport CardContent from '@mui/material/CardContent';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\n// Pages and Components\nimport PassSelect from '../../../pass/pass.select.component';\nimport CouponConfigTypeRadios from './coupon.config.type.radios';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport ColorPicker from '../../../_components/color.picker.component';\nimport LabelSwitch from '../../../_components/label.switch.component';\nimport ProductSelect from '../../../product/product.select.component';\nimport NumberField from '../../../_components/number.textfield.component';\nimport ImageDropZone from '../../../_components/image.dropzone.component';\nimport CouponNotificationField from './coupon.notification.field.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport ProductMultiSelect from '../../../product/product.multiselect.component';\nimport MessageTextField from '../../../_components/message.text.field.component';\nimport CurrencySelect from '../../../settings/currency/currency.select.component';\n\n// Api\nimport useCouponApi from './api/useCouponApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\nimport CouponExpireNotificationField from './coupon.expire.notification.field.component';\n\nconst DisplayCouponCardDesign = ({ coupon, form, useImageFieldInput }) => {\n return (\n \n \n \n {coupon.Title || 'Title Here'}\n \n \n \n \n \n \n \n {coupon.Description || 'Description Here'}\n \n \n \n \n );\n}\n\nconst CouponCreateForm = ({ open, onClose, isFoodics, brand }) => {\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const foodicsInitialValues =\n isFoodics\n && {\n FoodicsRewardType: \"2\",\n FoodicsMaxDiscountAmount: 1000,\n FoodicsDiscountIsPercent: true,\n FoodicsDiscountAmount: 100,\n FoodicsAllowedProducts: { Quantity: 1 }\n }\n\n const initialValues = {\n Type: 1,\n Brand: brand.Hash,\n ConfigType: 'updatesubscriber',\n Title: 'Title Here',\n Description: 'Description Here',\n Image: 'https://assets.brand-wallet.com/images/app/trophy-filled-100.png',\n Design: {\n RedeemButtonText: 'Text',\n BgColor: '#fff',\n TextColor: '#000',\n },\n Config: {\n RewardType: brand.CurrencyId,\n UpdateSubscriber: true,\n CouponReminder: []\n }\n }\n\n const {\n values,\n valid,\n setValues,\n useColorInput,\n useTextFieldInput,\n useCheckFieldInput,\n useArrayFieldInput,\n useImageFieldInput,\n useSelectableFieldInput } = useForm({ ...initialValues, Config: { ...initialValues.Config, ...foodicsInitialValues } });\n\n const form = {\n LogoBase64: {\n Name: 'LogoBase64',\n Label: t('labels:logo'),\n Required: false,\n Type: 'base64image',\n },\n Title: {\n Name: 'Title',\n Label: t('labels:coupontitle'),\n Required: true,\n },\n Pass: {\n Name: 'Pass',\n Label: t('labels:pass'),\n Required: false,\n },\n Description: {\n Name: 'Description',\n Label: t('labels:coupondescription'),\n Required: true,\n },\n Product: {\n Name: 'Product',\n Label: t('labels:couponproduct'),\n Required: false\n },\n BgColor: {\n Name: 'Design.BgColor',\n Label: t('labels:couponbgcolor'),\n Required: true,\n },\n TextColor: {\n Name: 'Design.TextColor',\n Label: t('labels:coupontextcolor'),\n Required: true,\n },\n RedeemButtonText: {\n Name: 'Design.RedeemButtonText',\n Label: t('labels:couponbuttontext'),\n Required: true,\n },\n CanUseAllDay: {\n Name: 'ExpireRule.CanUseAllDay',\n Label: t('labels:canuseallday'),\n Required: false,\n },\n Second: {\n Name: 'ExpireRule.Second',\n Label: t('labels:second'),\n Required: false,\n },\n Minute: {\n Name: 'ExpireRule.Minute',\n Label: t('labels:minute'),\n Required: false,\n },\n Hour: {\n Name: 'ExpireRule.Hour',\n Label: t('labels:hour'),\n Required: false,\n },\n Day: {\n Name: 'ExpireRule.Day',\n Label: t('labels:day'),\n Required: false,\n },\n Month: {\n Name: 'ExpireRule.Month',\n Label: t('labels:month'),\n Required: false,\n },\n Year: {\n Name: 'ExpireRule.Year',\n Label: t('labels:year'),\n Required: false,\n },\n RewardType: {\n Name: 'Config.RewardType',\n Label: t('labels:couponrewardtype'),\n Required: true,\n },\n FoodicsRewardType: {\n Name: 'Config.FoodicsRewardType',\n Label: t('labels:couponfoodicsrewardtype'),\n Required: true,\n },\n FoodicsMaxDiscount: {\n Name: 'Config.FoodicsMaxDiscountAmount',\n Label: t('labels:couponfoodicsmaxdiscountamount'),\n Required: true,\n },\n FoodicsDiscount: {\n Name: 'Config.FoodicsDiscountAmount',\n Label: t('labels:couponfoodicsdiscountamount'),\n Required: true,\n },\n FoodicsDiscountIsPercentage: {\n Name: 'Config.FoodicsDiscountIsPercent',\n Label: t('labels:couponfoodicsdiscountispercentage'),\n Required: false,\n },\n FoodicsAllowedProductsQuantity: {\n Name: 'Config.FoodicsAllowedProducts.Quantity',\n Label: t('labels:couponfoodicsallowedproductsquantity'),\n Required: true,\n },\n FoodicsAllowedProducts: {\n Name: 'Config.FoodicsAllowedProducts.Products',\n Label: t('labels:couponfoodicsallowedproducts'),\n Type: 'autocomplete',\n Required: true,\n },\n RewardValue: {\n Name: 'Config.RewardValue',\n Label: t('labels:couponrewardvalue'),\n Required: true,\n },\n ConfigType: {\n Name: 'ConfigType',\n Label: t('labels:couponconfigtype'),\n Required: true,\n },\n UpdateSubscriber: {\n Name: 'Config.UpdateSubscriber',\n Label: t('labels:couponupdatesubscriber'),\n Required: false,\n },\n SendMessage: {\n Name: 'Config.SendMessage',\n Label: t('labels:couponsendmessage'),\n Required: false,\n },\n Notifications: {\n Name: 'Config.Notifications',\n Label: 'Notifications',\n Required: false,\n },\n CouponReminder: {\n Name: 'Config.CouponReminder',\n Label: 'ExpireNotifications',\n Required: false,\n },\n }\n\n const { useCreateCoupon } = useCouponApi();\n const { isLoading: creating, mutate: createCoupon } = useCreateCoupon;\n const onSubmit = () => createCoupon(values, { onSuccess: onClose });\n\n const [showExpireRule, setShowExpireRule] = useState(false);\n const handleChecked = (event) => {\n setShowExpireRule(event.target.checked);\n setValues({ ...values, ExpireRule: null });\n }\n\n const isPercent = values.Config.FoodicsDiscountIsPercent;\n const isNotificationsEmpty = values.ConfigType === 'sendmessage' && values.Config?.Notifications?.length === 0;\n\n useEffect(() => {\n if (isFoodics) setValues(prev => ({ ...prev, Config: { ...prev.Config, FoodicsDiscountAmount: null } }))\n }, [isPercent, isFoodics, setValues])\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 values.ConfigType === 'sendmessage' &&\n \n }\n \n \n \n Foodics\n \n \n \n \n {[1, 2].map(sector => (\n \n ))}\n \n } />\n } />\n \n \n \n \n \n } />\n } />\n \n } />\n \n \n \n \n )\n // return (\n // \n // {t('actions:newcoupon')}\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 // values.ConfigType === 'sendmessage' &&\n // \n // }\n // \n // \n // Foodics\n // \n // \n // \n // \n // {[1, 2].map(sector => (\n // \n // ))}\n // \n // } />\n // } />\n // \n // \n // \n // \n // \n // } />\n // } />\n // \n // } />\n // \n // \n // \n // \n // \n // \n // {t('labels:create')}\n // \n // \n // )\n}\n\nexport default CouponCreateForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport CouponCreateForm from '../coupon.create.form';\nimport Action from '../../../../_components/navigation/navbar/action.component';\n\nconst CouponCreateAction = ({ brand, type, size = 'small', disabled, isFoodics }) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n onClick={toggleFormOpen}\n permissions={['coupon:create']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default CouponCreateAction;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Button from '@mui/material/Button';\n\n// Components\nimport Confirm from '../../../../_components/dialogs/confirm.dialog';\n\n// Api\nimport useCouponApi from '../api/useCouponApi';\n\nconst CouponPurgeAction = ({ disabled, coupon, onClose }) => {\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n const { usePurgeCoupon } = useCouponApi();\n const { isLoading: purging, mutate: purgeCoupon } = usePurgeCoupon;\n\n return (\n <>\n \n purgeCoupon(coupon, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n })}\n open={confirmOpen}\n onClose={handleConfirmOpen}\n />\n \n )\n}\n\nexport default CouponPurgeAction","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Collapse from '@mui/material/Collapse';\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport CardContent from '@mui/material/CardContent';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\n// Pages and Components\nimport PassSelect from '../../../pass/pass.select.component';\nimport ColorPicker from '../../../_components/color.picker.component';\nimport ProductSelect from '../../../product/product.select.component';\nimport LabelSwitch from '../../../_components/label.switch.component';\nimport CouponConfigTypeRadios from './coupon.config.type.radios';\nimport NumberField from '../../../_components/number.textfield.component';\nimport ImageDropZone from '../../../_components/image.dropzone.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport ProductMultiSelect from '../../../product/product.multiselect.component';\nimport MessageTextField from '../../../_components/message.text.field.component';\nimport CurrencySelect from '../../../settings/currency/currency.select.component';\nimport CouponNotificationField from './coupon.notification.field.component';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport CouponPurgeAction from './actions/purge.action';\nimport CouponExpireNotificationField from './coupon.expire.notification.field.component';\n// Api\nimport useCouponApi from './api/useCouponApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst DisplayCouponCardDesign = ({ coupon, form, useImageFieldInput }) => {\n return (\n \n \n \n {coupon.Title || 'Title Here'}\n \n \n \n \n \n \n \n {coupon.Description || 'Description Here'}\n \n \n \n \n );\n}\n\nconst CouponEditForm = ({ data, open, onClose, isFoodics }) => {\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const configType = data.Config?.SendMessage ? 'sendmessage' : data.Config?.UpdateSubscriber ? 'updatesubscriber' : 'none';\n\n // TODO - There is a bug that i don't know where it belongs to, that causes to update also the given data prop. To temporarily prevent this, we use a new object. It will be reconsidered.\n const formData = { ...data, ConfigType: configType, Design: { ...data.Design }, Config: { ...data.Config, FoodicsAllowedProducts: { ...data.Config.FoodicsAllowedProducts } }, }\n\n const {\n values,\n valid,\n setValues,\n useColorInput,\n useTextFieldInput,\n useCheckFieldInput,\n useArrayFieldInput,\n useImageFieldInput,\n useSelectableFieldInput } = useForm(formData);\n\n const form = {\n LogoBase64: {\n Name: 'LogoBase64',\n Label: t('labels:logo'),\n Required: false,\n Type: 'base64image',\n },\n Title: {\n Name: 'Title',\n Label: t('labels:coupontitle'),\n Required: true,\n },\n Pass: {\n Name: 'Pass',\n Label: t('labels:pass'),\n Required: false,\n },\n Description: {\n Name: 'Description',\n Label: t('labels:coupondescription'),\n Required: true,\n },\n Product: {\n Name: 'Product',\n Label: t('labels:couponproduct'),\n Required: false\n },\n BgColor: {\n Name: 'Design.BgColor',\n Label: t('labels:couponbgcolor'),\n Required: true,\n },\n TextColor: {\n Name: 'Design.TextColor',\n Label: t('labels:coupontextcolor'),\n Required: true,\n },\n RedeemButtonText: {\n Name: 'Design.RedeemButtonText',\n Label: t('labels:couponbuttontext'),\n Required: true,\n },\n CanUseAllDay: {\n Name: 'ExpireRule.CanUseAllDay',\n Label: t('labels:canuseallday'),\n Required: false,\n },\n Second: {\n Name: 'ExpireRule.Second',\n Label: t('labels:second'),\n Required: false,\n },\n Minute: {\n Name: 'ExpireRule.Minute',\n Label: t('labels:minute'),\n Required: false,\n },\n Hour: {\n Name: 'ExpireRule.Hour',\n Label: t('labels:hour'),\n Required: false,\n },\n Day: {\n Name: 'ExpireRule.Day',\n Label: t('labels:day'),\n Required: false,\n },\n Month: {\n Name: 'ExpireRule.Month',\n Label: t('labels:month'),\n Required: false,\n },\n Year: {\n Name: 'ExpireRule.Year',\n Label: t('labels:year'),\n Required: false,\n },\n RewardType: {\n Name: 'Config.RewardType',\n Label: t('labels:couponrewardtype'),\n Required: true,\n },\n FoodicsRewardType: {\n Name: 'Config.FoodicsRewardType',\n Label: t('labels:couponfoodicsrewardtype'),\n Required: true,\n },\n FoodicsMaxDiscount: {\n Name: 'Config.FoodicsMaxDiscountAmount',\n Label: t('labels:couponfoodicsmaxdiscountamount'),\n Required: true,\n },\n FoodicsDiscount: {\n Name: 'Config.FoodicsDiscountAmount',\n Label: t('labels:couponfoodicsdiscountamount'),\n Required: true,\n },\n FoodicsDiscountIsPercentage: {\n Name: 'Config.FoodicsDiscountIsPercent',\n Label: t('labels:couponfoodicsdiscountispercentage'),\n Required: false,\n },\n FoodicsAllowedProductsQuantity: {\n Name: 'Config.FoodicsAllowedProducts.Quantity',\n Label: t('labels:couponfoodicsallowedproductsquantity'),\n Required: true,\n },\n FoodicsAllowedProducts: {\n Name: 'Config.FoodicsAllowedProducts.Products',\n Label: t('labels:couponfoodicsallowedproducts'),\n Type: 'autocomplete',\n Required: true,\n },\n RewardValue: {\n Name: 'Config.RewardValue',\n Label: t('labels:couponrewardvalue'),\n Required: true,\n },\n ConfigType: {\n Name: 'ConfigType',\n Label: t('labels:couponconfigtype'),\n Required: true,\n },\n UpdateSubscriber: {\n Name: 'Config.UpdateSubscriber',\n Label: t('labels:couponupdatesubscriber'),\n Required: false,\n },\n SendMessage: {\n Name: 'Config.SendMessage',\n Label: t('labels:couponsendmessage'),\n Required: false,\n },\n Notifications: {\n Name: 'Config.Notifications',\n Label: 'Notifications',\n Required: false,\n },\n CouponReminder: {\n Name: 'Config.CouponReminder',\n Label: 'ExpireNotifications',\n Required: false,\n },\n }\n\n const { useUpdateCoupon } = useCouponApi();\n const { isLoading: updating, mutate: updateCoupon } = useUpdateCoupon;\n const onSubmit = () => updateCoupon(values, { onSuccess: onClose });\n\n const [showExpireRule, setShowExpireRule] = useState(Boolean(values.ExpireRule));\n const handleChecked = (event) => { setShowExpireRule(event.target.checked); setValues({ ...values, ExpireRule: null }); }\n\n const isPercent = values.Config.FoodicsDiscountIsPercent;\n const isNotificationsEmpty = values.ConfigType === 'sendmessage' && values.Config?.Notifications?.length === 0;\n\n return (\n }\n submitDisabled={!valid || isNotificationsEmpty || updating}>\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 values.ConfigType === 'sendmessage' &&\n \n }\n \n \n \n Foodics\n \n \n \n \n {[1, 2].map(sector => (\n \n ))}\n \n } />\n } />\n \n \n \n \n \n } />\n } />\n \n } />\n \n \n \n \n )\n}\n\nexport default CouponEditForm;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport CouponEditForm from '../coupon.edit.form';\n\nconst CouponEditAction = (props) => {\n const { coupon, isFoodics, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [editCouponForm, setEditCouponForm] = useState(false);\n const handleOpenEditForm = () => setEditCouponForm(!editCouponForm);\n\n return (\n <>\n \n {\n editCouponForm &&\n \n }\n \n )\n}\n\nexport default CouponEditAction","import React from 'react';\n\n// MUI\nimport Card from '@mui/material/Card';\nimport Stack from '@mui/material/Stack';\nimport CardMedia from '@mui/material/CardMedia';\nimport Typography from '@mui/material/Typography';\nimport CardContent from '@mui/material/CardContent';\n\n// Components \nimport CouponEditAction from './actions/edit.action';\n\nconst CouponCardPreview = (props) => {\n const { coupon, isFoodics, disabled } = props;\n\n return (\n \n \n \n \n {coupon.Title}\n \n \n \n \n \n {coupon.Description}\n \n \n \n \n \n );\n}\n\nexport default CouponCardPreview;","import * as React from 'react';\n\n// MUI\nimport { styled } from '@mui/material/styles';\nimport Typography from '@mui/material/Typography';\nimport MuiAccordion from '@mui/material/Accordion';\nimport MuiAccordionSummary from '@mui/material/AccordionSummary';\nimport MuiAccordionDetails from '@mui/material/AccordionDetails';\n\n// MUI Icons\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { Stack } from '@mui/material';\n\nconst Accordion = styled((props) => (\n \n))(({ theme }) => ({\n boxShadow: '0px 0px 0px 1px rgba(0,0,0,0.1)',\n '&:first-of-type': {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n '&:last-child': {\n borderBottomLeftRadius: 16,\n borderBottomRightRadius: 16,\n },\n '&:not(:last-child)': {\n borderBottom: 12,\n },\n '&:before': {\n display: 'none',\n },\n '&.Mui-expanded': {\n borderRadius: 16,\n },\n}));\n\nconst AccordionSummary = styled((props) => (\n }\n {...props}\n />\n))(({ theme }) => ({\n '& .MuiAccordionSummary-expandIconWrapper.Mui-expanded': {\n transform: 'rotate(90deg)',\n },\n '& .MuiAccordionSummary-Mui-expanded': {\n borderRadius: 16\n },\n}));\n\nconst AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({\n padding: theme.spacing(2),\n borderTop: '1px solid rgba(0, 0, 0, .125)',\n}));\n\nconst CustomAccordion = ({ expanded, handleExpand, title, id, children, icon }) =>\n \n \n \n {icon}\n {title}\n \n \n \n {children}\n \n \n\nexport default CustomAccordion;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport ConfirmationNumberIcon from '@mui/icons-material/ConfirmationNumber';\n\n// Components \nimport CouponCreateAction from './actions/create.action';\nimport CouponCardPreview from './coupon.card.preview.component';\nimport CustomAccordion from '../../../_components/accordion.component';\n\n// Api\nimport useCouponApi from './api/useCouponApi';\n\nconst CouponsList = ({ brand, expanded, handleChange, isFoodics }) => {\n const { t } = useTranslation(['actions', 'labels', 'prompts']);\n\n const { useFetchCoupons } = useCouponApi();\n const { data, isFetching } = useFetchCoupons(brand?.Hash);\n\n return (\n }>\n \n \n \n {\n data?.length > 0 ?\n \n {\n data?.map((c, key) =>\n \n )\n }\n
    \n :\n \n {t('prompts:nocouponsfound')}\n \n }\n \n );\n}\n\nexport default CouponsList;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, post, put, patch } from '../../_api/api'\n\nconst useMerchantApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchMerchants = (brandhash, select) => useQuery(brandhash ? [brandhash, 'merchants'] : ['merchants'], async () => await get(brandhash ? `/Merchant?brand=${brandhash}` : '/Merchant'), {\n select: select,\n });\n\n const useFetchActiveMerchants = (brandhash) => useFetchMerchants(brandhash, data => data.filter(merchant => merchant.Status === 1));\n\n const useFetchMerchant = (merchanthash) => useQuery([merchanthash, 'merchant'], () => get(`/Merchant/${merchanthash}`), { enabled: !!merchanthash, });\n\n const useCreateMerchant = useMutation(newMerchant => post('/Merchant', newMerchant),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:merchantcreated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.BrandHash, 'merchants'], { refetchInactive: true });\n queryClient.invalidateQueries(['merchants'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatemerchant')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateMerchant = useMutation(Merchant => put('/Merchant', Merchant),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:merchantupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.BrandHash, 'merchants'], { refetchInactive: true });\n queryClient.invalidateQueries(['merchants'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatemerchant')} - ${error.status}`, { variant: 'error' })\n });\n\n const useArchiveMerchant = useMutation(Merchant => patch(`/Merchant/${Merchant.Hash}/archive`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:merchantstatusupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.BrandHash, 'merchants'], { refetchInactive: true });\n queryClient.invalidateQueries(['merchants'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatemerchant')} - ${error.status}`, { variant: 'error' })\n });\n\n const useActivateMerchant = useMutation(Merchant => patch(`/Merchant/${Merchant.Hash}/activate`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:merchantstatusupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.BrandHash, 'merchants'], { refetchInactive: true });\n queryClient.invalidateQueries(['merchants'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatemerchant')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchMerchants,\n useFetchActiveMerchants,\n useFetchMerchant,\n useCreateMerchant,\n useUpdateMerchant,\n useArchiveMerchant,\n useActivateMerchant\n }\n}\n\nexport default useMerchantApi;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport UnarchiveIcon from '@mui/icons-material/Unarchive';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// Api\nimport useMerchantApi from '../api/useMerchantApi';\n\nconst MerchantChangeStatusAction = ({ merchant, variant, size, disabled }) => {\n const { t } = useTranslation(['actions', 'prompts']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useArchiveMerchant, useActivateMerchant } = useMerchantApi();\n const { isLoading: archiving, mutate: archiveMerchant } = useArchiveMerchant;\n const { isLoading: activating, mutate: activateMerchant } = useActivateMerchant;\n\n // Handle exceptional cases. We need merchant data\n if (!merchant) return null;\n\n const submitting = (merchant.Status === 0) ? activating : archiving;\n const handleSubmit = (merchant.Status === 0)\n ? () => activateMerchant(merchant, { onSuccess: toggleConfirm })\n : () => archiveMerchant(merchant, { onSuccess: toggleConfirm });\n\n const label = (merchant.Status === 0) ? t('actions:activatemerchant') : t('actions:archivemerchant');\n const icon = (merchant.Status === 0) ? : ;\n const prompt = (merchant.Status === 0)\n ? `${t('prompts:activatemerchantconfirm')} ${merchant.Name}`\n : `${t('prompts:archivemerchantconfirm')} ${merchant.Name}`\n\n return (\n <>\n \n \n \n );\n}\n\nexport default MerchantChangeStatusAction;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport AppBar from '@mui/material/AppBar';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport DialogContent from '@mui/material/DialogContent';\nimport Dialog from '@mui/material/Dialog';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport CountrySelect from '../settings/country/country.select.component';\nimport CitySelect from '../settings/city/city.select.component';\nimport DistrictSelect from '../settings/district/district.select.component';\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Api\nimport useMerchantApi from './api/useMerchantApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst MerchantForm = ({ merchant, brandhash, open, onClose }) => {\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const {\n values,\n valid,\n setValues,\n useTextFieldInput,\n useSelectableFieldInput\n } = useForm(merchant || { ...(brandhash && { BrandHash: brandhash }) });\n\n const newmerchant = !merchant;\n\n const actiontitle = (newmerchant ? t('labels:create') : t('labels:update')); // Title of the action button on top right\n const dialogtitle = (newmerchant ? t('labels:newmerchant') : merchant?.Name); // Title of the dialog on top left\n\n const { useCreateMerchant, useUpdateMerchant } = useMerchantApi();\n const { isLoading: creating, mutate: createMerchant } = useCreateMerchant;\n const { isLoading: updating, mutate: updateMerchant } = useUpdateMerchant;\n\n const disabled = creating || updating;\n\n const form = {\n BrandHash: {\n Name: 'BrandHash',\n Label: t('labels:brand'),\n Required: true,\n Type: 'text'\n },\n Name: {\n Name: 'Name',\n Label: t('labels:merchantname'),\n Required: true,\n Type: 'text'\n },\n ContactPerson: {\n Name: 'ContactPerson',\n Label: t('labels:contactperson'),\n Required: false,\n Type: 'text'\n },\n ContactEmail: {\n Name: 'ContactEmail',\n Label: t('labels:email'),\n Required: false,\n Type: 'email'\n },\n ContactPhone: {\n Name: 'ContactPhone',\n Label: t('labels:phone'),\n Required: false,\n Type: 'phone'\n },\n Address: {\n Name: 'Address',\n Label: t('labels:address'),\n Required: false,\n Type: 'text'\n },\n PostalCode: {\n Name: 'PostalCode',\n Label: t('labels:postalcode'),\n Required: false,\n Type: 'text'\n },\n Latitude: {\n Name: 'Latitude',\n Label: t('labels:latitude'),\n Required: false,\n Type: 'text'\n },\n Longitude: {\n Name: 'Longitude',\n Label: t('labels:longitude'),\n Required: false,\n Type: 'text'\n },\n CountryId: {\n Name: 'CountryId',\n Label: t('labels:country'),\n Required: true,\n Type: 'text',\n },\n CityId: {\n Name: 'CityId',\n Label: t('labels:city'),\n Type: 'text',\n },\n DistrictId: {\n Name: 'DistrictId',\n Label: t('labels:district'),\n Type: 'text',\n },\n }\n\n const onSubmit = () => {\n newmerchant\n ? createMerchant(values, { onSuccess: onClose })\n : updateMerchant(values, { onSuccess: onClose });\n };\n\n return (\n \n \n \n \n \n \n {dialogtitle}\n \n \n \n \n \n \n \n \n \n {t('prompts:generalinfo')} \n {t('prompts:merchantgeneralinfo')} \n \n \n \n \n \n \n \n \n {t('prompts:contact')} \n {t('prompts:contactdetailed')} \n \n \n \n \n \n \n \n \n \n \n \n \n } />\n } />\n } />\n \n \n \n \n \n \n {t('prompts:coordinates')} \n {t('prompts:coordinatesdetailed')} \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default MerchantForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport MerchantForm from '../merchant.form';\n\nconst MerchantEditAction = (props) => {\n const { merchant, variant, size, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Handle exceptional cases. We need merchant data\n if (!merchant) return null;\n\n return (\n <>\n }\n permissions={['merchant:create']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default MerchantEditAction;","import React from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport MerchantChangeStatusAction from './actions/merchant.changestatus.action';\nimport MerchantEditAction from './actions/merchant.edit.action';\n\n// Components\nimport Badge from '../_components/badge.component';\n\nconst MerchantRow = ({ row }) => {\n const rowColors = row?.cells?.[0].column.rowColors;\n const color = rowColors?.colors[row.values[rowColors.fieldid]];\n const linethrough = rowColors && row.values[rowColors.fieldid] === 0;\n\n return (\n \n {row?.values.Name}\n \n \n \n \n \n \n );\n}\n\nexport default MerchantRow;","const config = {\n 'small': {\n rowheight: '36px',\n virtualrowheight: 36,\n variant: 'caption',\n },\n 'medium': {\n rowheight: '42px',\n virtualrowheight: 42,\n variant: 'body2',\n },\n 'large': {\n rowheight: '50px',\n virtualrowheight: 50,\n variant: 'body1',\n },\n}\n\nexport default config;","import React from 'react';\nimport config from './config';\nimport moment from 'moment';\n\n// Material Ui\nimport Typography from '@mui/material/Typography';\n\nconst CellRenderer = props => {\n\tconst { size, cell } = props;\n\n\tconst color = cell.column.rowColors?.colors[cell.row.values[cell.column.rowColors.fieldid]];\n\tconst linethrough = cell.column.rowColors && (cell.row.values[cell.column.rowColors.fieldid] === 'Deleted' || cell.row.values[cell.column.rowColors.fieldid] === 0);\n\n\tif (cell.value instanceof Array) return null;\n\n\treturn (\n\t\t\n\t\t\t{cell.value instanceof moment ? (cell.column.format === 'shortdate' ? cell.value.format('DD MMM YYYY') : cell.value.format('DD MMM YYYY HH:mm')) : cell.value}\n\t\t\n\t);\n};\n\nexport default CellRenderer;\n","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\n\nconst ColumnResizer = (props) => {\n const { column } = props;\n const resizerprops = column.canResize ? { ...column.getResizerProps() } : {}\n\n return (\n \n \n \n )\n}\n\nexport default ColumnResizer;","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport TableSortLabel from '@mui/material/TableSortLabel';\n\n// Components\nimport ColumnResizer from './resizer.table'\n\nconst Header = (props) => {\n const { column } = props;\n\n return (\n \n \n {\n typeof column.render('Header') === 'string' ?\n <>\n {column.Header}\n \n \n :\n column.render('Header')\n }\n \n \n \n )\n}\n\nexport default Header;\n","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport Header from './header.table';\n\nconst HeaderGroup = ({ headerGroup, tableWidth }) =>\n \n {headerGroup?.headers?.map(column =>
    )}\n \n\nexport default HeaderGroup;","import React from 'react'\nimport config from './config';\n\n// Material Ui\nimport Stack from '@mui/material/Stack';\n\nconst TableCell = ({ size, cell }) => {\n\n return (\n \n {\n cell.render('Cell')\n }\n \n )\n}\n\nexport default TableCell;","import React from 'react'\n\n// Material Ui\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport TableCell from './cell.table';\n\nconst TableRow = ({ size, virtualRow, row, prepareRow, tableWidth }) => {\n if (!row) return '';\n\n prepareRow(row);\n\n return (\n \n {\n row.cells.map((cell, index) =>\n \n )}\n \n );\n}\n\nexport default TableRow;","import React, { useRef, useCallback } from 'react'\nimport config from './config';\n\n// React Virtual\nimport { useVirtualizer } from '@tanstack/react-virtual'\n\n// Material Ui\nimport Box from '@mui/material/Box';\n\n// Components\nimport TableRow from './row.table';\n\nconst TableBody = ({ size, itemCount, rows, prepareRow, tableWidth, fetchMoreOnBottomReached }) => {\n const parentRef = useRef();\n\n const rowVirtualizer = useVirtualizer({\n count: itemCount,\n getScrollElement: () => parentRef.current,\n overscan: 5,\n estimateSize: useCallback(() => config[size].virtualrowheight, [size]),\n })\n\n return (\n !!fetchMoreOnBottomReached ? fetchMoreOnBottomReached(e.target) : null} sx={{ height: `calc(100% - 36px)`, overflowX: 'hidden', overflowY: 'scroll', width: tableWidth }} >\n
    \n {\n rowVirtualizer.getVirtualItems().map(\n virtualRow =>\n \n )\n }\n
    \n
    \n );\n}\n\nexport default TableBody;","import React, { useMemo, useEffect, useRef, useState, cloneElement } from 'react';\nimport moment from 'moment';\nimport { useRect } from '@reach/rect';\nimport {\n momentSortFn,\n oneOfFilterFn,\n scopeFilterFn,\n dateRangeFilterFn,\n beforeScopeFilterFn,\n minMaxFilterFn,\n ageRangeFilterFn,\n} from '../filter/filter.functions';\nimport generateExcel from 'zipcelx';\n\n// React Table\nimport { useTable, useGlobalFilter, useFilters, useResizeColumns, useFlexLayout, useSortBy, useRowSelect } from 'react-table';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Checkbox from '@mui/material/Checkbox';\n\n// Components\nimport CellRenderer from './cell.renderer.component';\nimport HeaderGroup from './headergroup.table';\nimport TableBody from './body.table';\nimport ToolBar from '../toolbar/toolbar.component';\n\nconst IndeterminateCheckbox = React.forwardRef(({ indeterminate, ...rest }, ref) => {\n const defaultRef = React.useRef();\n const resolvedRef = ref || defaultRef;\n\n useEffect(() => {\n resolvedRef.current.indeterminate = indeterminate;\n }, [resolvedRef, indeterminate]);\n\n return (\n <>\n \n \n );\n});\n\nconst Table = (props) => {\n const {\n columns,\n data,\n size,\n noToolBar,\n isLoading,\n selectAllRows,\n showFilterBar,\n showFilterPanel,\n toolBarSize,\n isSelectable,\n enableSelectIf,\n SelectedRowsActions,\n rowColors,\n preference,\n fetchMoreOnBottomReached,\n ...toolbarProps\n } = props;\n\n const ref = useRef();\n const rect = useRect(ref, { observe: true });\n\n const [csvData, setCsvData] = useState(null);\n\n const [tableColumns, tableData] = useMemo(() => [columns || [], data || []], [columns, data]);\n\n const { state, allColumns, headerGroups, totalColumnsWidth, rows, selectedFlatRows, setHiddenColumns, prepareRow, setGlobalFilter } = useTable(\n {\n columns: tableColumns,\n data: tableData || [],\n defaultCanFilter: false,\n autoResetHiddenColumns: false,\n initialState: JSON.parse(localStorage.getItem(preference)),\n sortTypes: useMemo(\n () => ({\n moment: momentSortFn,\n }),\n []\n ),\n filterTypes: useMemo(\n () => ({\n scope: scopeFilterFn,\n oneof: oneOfFilterFn,\n daterange: dateRangeFilterFn,\n futuredaterange: dateRangeFilterFn,\n beforescope: beforeScopeFilterFn,\n minmax: minMaxFilterFn,\n agerange: ageRangeFilterFn,\n }),\n []\n ),\n defaultColumn: {\n rowColors: rowColors,\n Cell: ({ cell }) => ,\n },\n },\n ({ visibleColumns }) => {\n if (isSelectable) {\n visibleColumns.push((columns) => [\n {\n id: 'selection',\n width: 56,\n maxWidth: 56,\n disableResizing: true,\n Header: ({ getToggleAllRowsSelectedProps }) => ,\n Cell: ({ row }) => enableSelectIf(row) && ,\n },\n ...columns,\n ]);\n }\n },\n useResizeColumns,\n useFlexLayout,\n useFilters,\n useGlobalFilter,\n useSortBy,\n useRowSelect\n );\n\n const calculateExportableColumns = () => {\n let exportableColumns = allColumns.filter((c) => !c.disableExport && c.id !== 'selection');\n return [\n ...exportableColumns.filter((c) => c.exportorder && Boolean(rows.find((row) => Boolean(row.values[c.id])))).sort((a, b) => a.exportorder - b.exportorder),\n ...exportableColumns.filter((c) => !c.exportorder),\n ];\n };\n\n const prepareCsvData = async () => {\n if (rows.length !== 0) {\n let csvData = [];\n\n let exportableColumns = calculateExportableColumns();\n\n rows.forEach((row) => {\n var exportedRow = {};\n exportableColumns.forEach((c) => {\n exportedRow = {\n ...exportedRow,\n [c.Header || c.id]: row.values[c.id] instanceof moment ? row.values[c.id].format('DD MMM YYYY HH:mm') : row.values[c.id],\n };\n });\n csvData.push(exportedRow);\n });\n setCsvData(csvData);\n return false;\n } else return true;\n };\n\n const prepareExcelData = () => {\n if (!rows || rows.length === 0) return;\n\n const config = {\n filename: `${toolbarProps.title}-${new Date().toLocaleDateString()}`,\n sheet: {\n data: [],\n },\n };\n const dataSet = config.sheet.data;\n\n let exportableColumns = calculateExportableColumns();\n\n const headerRow = [];\n exportableColumns.forEach((column) => {\n headerRow.push({\n value: column.Header || column.id,\n accessorValue: column.id,\n width: column.maxWidth || column.width || 100,\n type: 'string',\n });\n });\n\n dataSet.push(headerRow);\n\n rows.forEach((row) => {\n const dataRow = [];\n for (const [key, value] of Object.entries(row.values)) {\n const indexOfColumn = headerRow.findIndex((header) => header.accessorValue === key);\n if (headerRow.find((header) => header.accessorValue === key)) {\n dataRow[indexOfColumn] = {\n value: value instanceof moment ? value.format('L LTS') : value,\n type: typeof value === 'number' || value === '0' ? 'number' : 'string',\n };\n }\n }\n\n dataSet.push(dataRow);\n });\n\n return generateExcel(config);\n };\n\n useEffect(() => setHiddenColumns(columns.filter((c) => c.hidden === true).map((c) => c.id)), [columns, setHiddenColumns]);\n useEffect(() => preference && localStorage.setItem(preference, JSON.stringify(state)), [state, preference]);\n\n const toolbarHeight = noToolBar ? 0 : showFilterBar ? 112 : 64;\n\n return (\n \n {!noToolBar && (\n 0 ? cloneElement(SelectedRowsActions, { selectedRows: selectedFlatRows, data: tableData || [] }) : undefined\n }\n px\n {...toolbarProps}\n />\n )}\n \n \n {!isLoading && (\n <>\n rect?.width ? totalColumnsWidth : rect?.width - 32} />\n rect?.width ? totalColumnsWidth : rect?.width - 32}\n />\n \n )}\n \n \n \n );\n};\n\nTable.defaultProps = {\n size: 'large',\n toolBarSize: 'large',\n noToolBar: false,\n selectRows: false,\n};\n\nexport default Table;\n\n/**\n * const prepareExcelData = () => {\n\t\tif (rows.length !== 0) {\n\t\t\tlet excelData = [];\n\t\t\trows.forEach(row => {\n\t\t\t\tvar exportedRow = {};\n\t\t\t\tallColumns\n\t\t\t\t\t.filter(c => !c.disableExport && (c.id !== 'selection')).forEach(c => {\n\t\t\t\t\t\texportedRow = {\n\t\t\t\t\t\t\t...exportedRow,\n\t\t\t\t\t\t\t[c.Header || c.id]: row.values[c.id] instanceof moment ? row.values[c.id].format('DD MMM YYYY HH:mm') : row.values[c.id] === '0' ? 0 : row.values[c.id],\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\texcelData.push(exportedRow);\n\t\t\t});\n\t\t\treturn excelData;\n\t\t}\n\t\telse return [];\n\t}\n */\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport MerchantForm from '../merchant.form';\n\nconst MerchantNewAction = ({ brandhash, variant, size = 'small', disabled }) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n permissions={['merchant:create']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default MerchantNewAction;","import { useQuery, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get } from '../../_api/api'\n\nconst useFoodicsApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchInfo = (brandhash) => useQuery([brandhash, 'foodics-info'], () => get(`/Foodics/${brandhash}`),\n {\n onError: (error) => enqueueSnackbar(`Marka Foodics bilgileri yüklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useFetchSyncMerchant = (brandhash) => useQuery([brandhash, 'foodics-merchants'], () => get(`/Foodics/sync/${brandhash}/merchant`),\n {\n enabled: false,\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:foodicsmerchantssynced'), { variant: 'success' });\n queryClient.invalidateQueries([brandhash, 'merchants'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotsyncfoodicsmerchants')} - ${error.status}`, { variant: 'error' })\n });\n\n const useFetchSyncMenu = (brandhash) => useQuery([brandhash, 'foodics-products'], () => get(`/Foodics/sync/${brandhash}/menu`),\n {\n enabled: false,\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:foodicsproductssynced'), { variant: 'success' });\n queryClient.invalidateQueries([brandhash, 'products'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotsyncfoodicsproducts')} - ${error.status}`, { variant: 'error' })\n });\n\n const useFetchSyncUser = (brandhash) => useQuery([brandhash, 'foodics-users'], () => get(`/Foodics/sync/${brandhash}/user`),\n {\n enabled: false,\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:foodicsuserssynced'), { variant: 'success' });\n queryClient.invalidateQueries([brandhash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotsyncfoodicsusers')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchInfo,\n useFetchSyncMenu,\n useFetchSyncMerchant,\n useFetchSyncUser\n }\n}\n\nexport default useFoodicsApi;\n","import React from 'react'\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport LoadingButton from '@mui/lab/LoadingButton';\n\n// Api\nimport useFoodicsApi from '../api/useFoodicsApi';\n\nconst FoodicsSyncMerchantsAction = ({ brandhash, variant }) => {\n const { useFetchSyncMerchant } = useFoodicsApi();\n const { refetch: merchantSync, isFetching: syncingMerchants } = useFetchSyncMerchant(brandhash);\n const { t } = useTranslation(['actions']);\n return {t('actions:syncmerchants')};\n}\n\nFoodicsSyncMerchantsAction.defaultProps = {\n variant: 'outlined',\n};\n\nFoodicsSyncMerchantsAction.propTypes = {\n variant: PropTypes.oneOf(['outlined', 'contained', 'text']),\n};\n\nexport default FoodicsSyncMerchantsAction\n","import React, { useMemo } from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\nimport Enums from '../enums';\n\n// Components\nimport MerchantRow from './merchant.info.row';\nimport Table from '../_components/table/table.component';\nimport MerchantNewAction from './actions/merchant.new.action';\nimport FoodicsSyncMerchantsAction from '../foodics/actions/foodics.syncmerchants.action';\n\n// Api\nimport useMerchantApi from './api/useMerchantApi';\n\nconst MerchantTable = ({ brand }) => {\n const { t } = useTranslation(['actions', 'labels']);\n\n const { useFetchMerchants } = useMerchantApi();\n const { data, isFetching, isLoading, refetch } = useFetchMerchants(brand?.Hash);\n\n const columns = useMemo(() => [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableSortBy: true,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n exportorder: 1\n },\n {\n Header: t('labels:merchantname'),\n accessor: 'MerchantRow',\n className: 'actions',\n Cell: ({ row }) => ,\n width: 300,\n minWidth: 300,\n maxWidth: 1000,\n disableFilters: true,\n disableExport: true\n },\n {\n id: 'Name',\n Header: t('labels:merchantname'),\n accessor: 'Name',\n width: 300,\n hidden: true,\n exportorder: 2\n },\n {\n Header: t('labels:city'),\n accessor: 'City',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 1,\n },\n {\n Header: t('labels:district'),\n accessor: 'District',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 2,\n },\n {\n Header: t('labels:address'),\n accessor: 'Address',\n width: 450,\n minWidth: 300,\n maxWidth: 700,\n disableFilters: true,\n disableSortBy: true,\n },\n {\n Header: t('labels:contactperson'),\n accessor: 'ContactPerson',\n width: 200,\n minWidth: 180,\n maxWidth: 400,\n disableFilters: true,\n },\n {\n Header: t('labels:email'),\n accessor: 'ContactEmail',\n width: 300,\n minWidth: 200,\n maxWidth: 400,\n disableFilters: true,\n },\n {\n Header: t('labels:phone'),\n accessor: 'ContactPhone',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:latitude'),\n accessor: 'Latitude',\n width: 140,\n minWidth: 140,\n maxWidth: 140,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:longitude'),\n accessor: 'Longitude',\n width: 140,\n minWidth: 140,\n maxWidth: 140,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n id: 'CreatedAt',\n Header: t('labels:createdat'),\n accessor: (row) => row.CreatedAt && moment(row.CreatedAt),\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n disableExport: true,\n sortType: 'moment',\n hidden: true\n },\n {\n id: t('labels:createdby'),\n Header: t('labels:createdby'),\n accessor: 'CreatedByUser',\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableFilters: true,\n disableExport: true,\n hidden: true\n },\n {\n id: t('labels:updatedat'),\n Header: t('labels:updatedat'),\n accessor: (row) => row.UpdatedAt && moment(row.UpdatedAt),\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n disableExport: true,\n sortType: 'moment',\n hidden: true\n },\n {\n id: t('labels:updatedby'),\n Header: t('labels:updatedby'),\n accessor: 'UpdatedByUser',\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableFilters: true,\n disableExport: true,\n hidden: true\n },\n {\n id: 'Hash',\n accessor: 'Hash',\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true\n },\n {\n id: 'BrandHash',\n accessor: 'BrandHash',\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true\n },\n {\n id: 'CountryId',\n accessor: 'CountryId',\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true\n },\n {\n id: 'CityId',\n accessor: 'CityId',\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true\n },\n {\n id: 'DistrictId',\n accessor: 'DistrictId',\n disableFilters: true,\n disableExport: true,\n disableSortBy: true,\n hidden: true\n },\n {\n id: 'Status',\n Header: t('labels:status'),\n accessor: row => Enums.merchantstatus[row.Status],\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n hidden: true\n }\n ], [t]);\n\n return (\n }\n afterActions={brand?.Config?.IntegrationPartner === 1 && }\n localization={{\n search: t('labels:search'),\n refetch: t('labels:refresh'),\n downloadascsv: t('labels:downloadascsv'),\n addnew: t('actions:newmerchant'),\n }}\n />\n );\n}\n\nexport default MerchantTable;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Box from '@mui/material/Box';\n\n// MUI Icons\nimport ShoppingCartOutlined from '@mui/icons-material/ShoppingCartOutlined';\n\n// Components\nimport MerchantsTable from './merchants.table';\nimport CustomAccordion from '../_components/accordion.component';\n\nconst MerchantList = ({ brand, expanded, handleChange }) => {\n const { t } = useTranslation(['labels']);\n\n return (\n }>\n \n \n \n \n );\n}\n\nexport default MerchantList;\n\n/*\nimport FoodicsSyncMerchantsAction from '../foodics/actions/foodics.syncmerchants.action';\n {\n brand.Config?.IntegrationPartner === 1 &&\n \n }\n\n*/\n\n/*\n\n \n {\n data?.map(merchant => (\n \n \n {merchant.Name}\n {\n merchant.City &&\n {`- ${merchant.City}`}\n }\n \n \n \n \n \n \n \n ))\n }\n \n*/","import React from 'react';\n\n// Material UI\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\n\nconst SizeSelect = (props) => {\n const { size, handleChange } = props;\n\n return (\n \n Size\n \n 100px\n 200px\n 1000px\n 2000px\n \n \n )\n}\n\nexport default SizeSelect;","import React, { useState } from 'react';\nimport QRCode from 'qrcode.react';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\n\n// Components\nimport SizeSelect from './promos.qr.size.select.component';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport { Divider } from '@mui/material';\n\nconst SizedQRCodes = (props) => {\n const { promo } = props;\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n )\n}\n\nconst QrDialog = ({ promo, open, toggleDialog }) => {\n const [size, setSize] = useState('2000x2000');\n const handleChangeSize = (e) => setSize(e.target.value);\n\n const downloadPNG = (id, size) => {\n const canvas = document.getElementById(`${id}_${size}png`);\n const pngUrl = canvas\n .toDataURL('image/png')\n .replace('image/png', 'image/octet-stream');\n let downloadLink = document.createElement('a');\n downloadLink.href = pngUrl;\n downloadLink.download = `${id}.png`;\n document.body.appendChild(downloadLink);\n downloadLink.click();\n document.body.removeChild(downloadLink);\n };\n\n const downloadSVG = (id, size) => {\n var svg = document.getElementById(`${id}_${size}svg`);\n var serializer = new XMLSerializer();\n var source = serializer.serializeToString(svg);\n if (!source.match(/^]+xmlns=\"http:\\/\\/www\\.w3\\.org\\/2000\\/svg\"/)) {\n source = source.replace(/^]+\"http:\\/\\/www\\.w3\\.org\\/1999\\/xlink\"/)) {\n source = source.replace(/^\n \n \n \n \n \n \n \n } border={1} borderRadius={2} p={1} borderColor='divider'>\n \n {`${process.env.REACT_APP_ENROLL_URL}${enrollHash}`}\n \n navigator.clipboard.writeText(`${process.env.REACT_APP_ENROLL_URL}${enrollHash}`)} >\n \n \n \n \n \n {`${process.env.REACT_APP_SHORTENROLL_URL}${enrollHash}`}\n \n navigator.clipboard.writeText(`${process.env.REACT_APP_SHORTENROLL_URL}${enrollHash}`)} >\n \n \n \n \n \n \n \n )\n}\n\nexport default QrDialog;","import { useQuery, useQueryClient, useMutation, } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, put, post, patch } from '../../../../_api/api';\n\nconst usePromoApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchPromos = (passhash) => useQuery([passhash, 'pass-promos'], async () => get(`/Promo?pass=${passhash}`), { staleTime: 1000 * 60 * 60 });\n\n const useUpdatePromo = useMutation(Promo => put('/Promo', Promo),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:promoupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-promos'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('prompts:couldnotupdatepromo')} - Error: ${error.status}`, { variant: 'error' })\n });\n\n const useCreatePromo = useMutation(newPromo => post('/Promo', newPromo),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:promocreated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-promos'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('prompts:couldnotcreatepromo')} - Error: ${error.status}`, { variant: 'error' })\n });\n\n const usePurgePromo = useMutation(Promo => patch(`/Promo/${Promo.Hash}/purge`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:promopurged'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-promos']);\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotpurgepromo')} - ${error.status}`, { variant: 'error' })\n });\n\n const useActivatePromo = useMutation(Promo => patch(`/Promo/${Promo.Hash}/activate`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:promoactivated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-promos']);\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotactivatepromo')} - ${error.status}`, { variant: 'error' })\n });\n\n const useArchivePromo = useMutation(Promo => patch(`/Promo/${Promo.Hash}/archive`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:promoarchived'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-promos']);\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotarchivepromo')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchPromos,\n useUpdatePromo,\n useCreatePromo,\n usePurgePromo,\n useActivatePromo,\n useArchivePromo\n }\n}\n\nexport default usePromoApi;\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport Confirm from '../../../../_components/dialogs/confirm.dialog';\n\n// Api\nimport usePromoApi from '../api/usePromoApi';\n\nconst PromoPurgeAction = (props) => {\n const { t } = useTranslation(['actions', 'prompts']);\n const { promo, onClose } = props;\n\n const { usePurgePromo } = usePromoApi();\n const { isLoading: purging, mutate: purgePromo } = usePurgePromo;\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n return (\n <>\n \n purgePromo(promo, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n })}\n open={confirmOpen}\n onClose={handleConfirmOpen}\n />\n \n\n )\n}\n\nexport default PromoPurgeAction","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport ArchiveOutlinedIcon from '@mui/icons-material/ArchiveOutlined';\nimport UnarchiveOutlinedIcon from '@mui/icons-material/UnarchiveOutlined';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport Confirm from '../../../../_components/dialogs/confirm.dialog';\n\n// Api\nimport usePromoApi from '../api/usePromoApi'\n\nconst PromoChangeStatusAction = (props) => {\n const { promo, onClose } = props;\n\n const { t } = useTranslation(['actions', 'prompts']);\n\n const { useActivatePromo, useArchivePromo } = usePromoApi();\n const { isLoading: activating, mutate: activatePromo } = useActivatePromo;\n const { isLoading: archiving, mutate: archivePromo } = useArchivePromo;\n\n const isActive = Boolean(promo.Status === 1);\n const disabled = activating || archiving;\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n const onSubmit = () => isActive\n ? archivePromo(promo, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n })\n : activatePromo(promo, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n });\n\n return (\n <>\n : }\n permissions={['pass:changestatuspromo']}\n />\n \n \n )\n}\n\nexport default PromoChangeStatusAction","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useMerchantApi from './api/useMerchantApi';\n\nconst MerchantSelect = (props) => {\n const { brandhash, select = 'Hash', size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const { useFetchActiveMerchants } = useMerchantApi();\n const { data, isFetching } = useFetchActiveMerchants(brandhash);\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>
  • {option.Name}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default MerchantSelect;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Pages and Components\nimport PromoPurgeAction from './actions/purge.action';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport PromoChangeStatusAction from './actions/changestatus.action';\nimport MerchantSelect from '../../../merchant/merchant.select.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\n\n// Api\nimport usePromoApi from './api/usePromoApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst PromoForm = ({ promo, brandhash, passhash, open, onClose }) => {\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const {\n values,\n valid,\n useTextFieldInput,\n useSelectableFieldInput\n } = useForm(promo || { Brand: brandhash, Pass: passhash });\n\n const newpromo = !promo;\n\n const actiontitle = (newpromo ? t('labels:create') : t('labels:update')); // Title of the action button on top right\n const dialogtitle = (newpromo ? t('labels:newpromo') : promo?.Name); // Title of the dialog on top left\n\n const { useCreatePromo, useUpdatePromo } = usePromoApi();\n const { isLoading: creating, mutate: createPromo } = useCreatePromo;\n const { isLoading: updating, mutate: updatePromo } = useUpdatePromo;\n\n const disabled = creating || updating;\n\n const form = {\n Merchant: {\n Name: 'Merchant',\n Label: t('labels:merchant'),\n Required: false\n },\n Name: {\n Name: 'Name',\n Label: t('labels:name'),\n Required: true\n }\n }\n\n const onSubmit = () => {\n newpromo\n ? createPromo(values, { onSuccess: onClose })\n : updatePromo(values, { onSuccess: onClose });\n };\n\n return (\n \n \n \n \n }>\n \n \n \n } />\n \n \n )\n}\n\nexport default PromoForm;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport PromoForm from '../promos.form';\n\nconst PromoEditAction = (props) => {\n const { promo, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [openEditForm, setOpenEditForm] = useState(false);\n const handleEditForm = () => setOpenEditForm(!openEditForm);\n\n return (\n <>\n }\n permissions={['pass:editpromo']}\n />\n {\n openEditForm &&\n \n }\n \n );\n}\nexport default PromoEditAction","import React, { useState } from 'react';\n\n// MUI\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\n\n// Icons\nimport QrCodeIcon from '@mui/icons-material/QrCode';\n\n// Components\nimport QrDialog from './promos.qr.dialog.component';\nimport PromoEditAction from './actions/edit.action';\n\nconst PromosListItem = ({ promo }) => {\n const [open, setOpen] = useState(false);\n const toggleDialog = () => setOpen(!open);\n\n return (\n <>\n }>\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default PromosListItem;\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport PromoForm from '../promos.form';\n\nconst PromoCreateAction = (props) => {\n const { t } = useTranslation(['actions']);\n const { passhash, brandhash, disabled } = props;\n\n const [openCreateForm, setOpenCreateForm] = useState(false);\n const handleCreateForm = () => setOpenCreateForm(!openCreateForm);\n\n return (\n <>\n }\n permissions={['pass:createpromo']}\n />\n {\n openCreateForm &&\n \n }\n \n )\n}\n\nexport default PromoCreateAction","import React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Contexts\nimport { UserContext } from '../../../_usercontext/user.context';\n\n// Components\nimport PromosListItem from './promos.list.item';\nimport PromoCreateAction from './actions/create.action';\nimport RefetchButton from '../../../_components/buttons/refetch.button';\n\n// Api\nimport usePromoApi from './api/usePromoApi';\n\nconst PromoList = (props) => {\n const { passhash, brandhash } = props;\n const { t } = useTranslation(['labels']);\n const { hasPermissions } = useContext(UserContext);\n\n const { useFetchPromos } = usePromoApi();\n const { data, isLoading, isFetching, refetch } = useFetchPromos(passhash);\n\n if (!hasPermissions(['pass:viewpromos']))\n return null\n\n return (\n <>\n \n \n {`${t('labels:promos')} - (${data?.length})`}\n \n \n \n \n \n \n {\n data?.map(promo =>\n \n )\n }\n \n \n \n );\n}\n\nexport default PromoList;","import React, { useContext } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport List from '@mui/material/List';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport RefetchButton from '../../../_components/buttons/refetch.button';\n\n// Contexts\nimport { UserContext } from '../../../_usercontext/user.context';\n\n// Api\nimport usePassApi from '../../../pass/api/usePassApi';\n\nconst CampaignListItem = ({ campaign }) => {\n const { t } = useTranslation(['enums']);\n\n return (\n <>\n \n \n \n \n );\n}\n\nconst CampaignList = ({ passhash }) => {\n const { t } = useTranslation(['labels']);\n const { useFetchCampaigns } = usePassApi();\n const { hasPermissions } = useContext(UserContext);\n const { data, isLoading, isFetching, refetch } = useFetchCampaigns(passhash);\n\n if (!hasPermissions(['pass:viewcampaigns'])) return;\n return (\n <>\n \n \n {`${t('labels:campaigns')} - (${data?.length})`}\n \n \n \n \n \n {\n data?.map(campaign => )\n }\n \n \n \n );\n}\n\nexport default CampaignList\n","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, post, put, patch } from '../../../../_api/api'\n\nconst useRelevancetextApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchRelevanceTexts = (passhash) => useQuery([passhash, 'pass-relevance-text'], async () => get(`/Pass/relevance-text?pass=${passhash}`), { staleTime: 1000 * 60 * 60 });\n\n const useCreateRelevancetext = useMutation(newRelevancetext => post('/Pass/relevance-text', newRelevancetext),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:locationmessagecreated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-relevance-text'], { refetchInactive: true });\n },\n onError: (error, variables) => {\n if (parseInt(error.message.split('_')[0]))\n enqueueSnackbar(`${t(`prompts:${error.message.split('_')[1]}`, { count: error.message.split('_')[0] })}`, { variant: 'warning' })\n else\n enqueueSnackbar(`${t(`prompts:${error.message}`)} - ${error.status}`, { variant: 'error' })\n\n queryClient.invalidateQueries([variables.Pass, 'pass-relevance-text'], { refetchInactive: true });\n\n }\n });\n\n const useUpdateRelevancetext = useMutation(Relevancetext => put('/Pass/relevance-text', Relevancetext),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:locationmessageupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-relevance-text'], { refetchInactive: true });\n }\n\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatelocationmessage')} - ${error.status}`, { variant: 'error' })\n });\n\n const usePurgeRelevancetext = useMutation((relevancetext) => patch(`/Pass/${relevancetext.Hash}/relevance-text/purge`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:locationmessagepurged'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-relevance-text'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotpurgelocationmessage')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchRelevanceTexts,\n useCreateRelevancetext,\n useUpdateRelevancetext,\n usePurgeRelevancetext\n }\n}\n\nexport default useRelevancetextApi;\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport Confirm from '../../../../_components/dialogs/confirm.dialog';\n\n// Api\nimport useRelevancetextApi from '../api/useRelevancetextApi';\n\nconst RelevancetextPurgeAction = (props) => {\n const { relevancetext, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n const { usePurgeRelevancetext } = useRelevancetextApi();\n const { isLoading: purging, mutate: purgeRelevancetext } = usePurgeRelevancetext;\n\n return (\n <>\n \n purgeRelevancetext(relevancetext, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n })}\n open={confirmOpen}\n onClose={handleConfirmOpen}\n />\n \n )\n}\n\nexport default RelevancetextPurgeAction","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Pages and Components\nimport RelevancetextPurgeAction from './actions/purge.action';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\n\n// Api\nimport useRelevancetextApi from './api/useRelevancetextApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst RelevancetextEditForm = (props) => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const { values, valid, useTextFieldInput } = useForm(data)\n\n const { useUpdateRelevancetext } = useRelevancetextApi();\n const { isLoading: updating, mutate: updateRelevancetext } = useUpdateRelevancetext;\n\n const disabled = updating;\n\n const form = {\n Message: {\n Name: 'RelevantText',\n Label: t('labels:relevancetextmessage'),\n Required: true\n },\n }\n\n const onSubmit = () => updateRelevancetext(values, { onSuccess: onClose });\n\n return (\n }\n disabled={disabled}\n submitDisabled={!valid || disabled}\n >\n \n \n \n \n )\n}\n\nexport default RelevancetextEditForm;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport RelevancetextEditForm from '../relevancetext.edit.form'\n\nconst RelevancetextEditAction = (props) => {\n const { rt, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [openEditForm, setOpenEditForm] = useState(false);\n const handleEditForm = () => setOpenEditForm(!openEditForm);\n\n return (\n <>\n }\n permissions={['pass:editrelevancetext']}\n />\n {\n openEditForm &&\n \n }\n \n )\n}\n\nexport default RelevancetextEditAction","import React from 'react'\n\n// MUI\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Components\nimport RelevancetextEditAction from './actions/edit.action';\n\nconst RelevancetextListItem = ({ rt, disabled }) => {\n return (\n <>\n }>\n \n \n \n );\n}\n\nexport default RelevancetextListItem","import React from 'react';\nimport Enums from '../../../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - Ui\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\n\nconst RelevancetextTypeRadios = (props) => {\n const { label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n return (\n \n {label}\n \n {\n Enums.relevancetexttypes.map((option, key) =>\n }\n label={t('enums:relevancetexttype.' + option)} />\n )\n }\n \n {helperText}\n \n )\n}\n\nexport default RelevancetextTypeRadios;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { find } from 'lodash';\n\n// Material UI\nimport Checkbox from '@mui/material/Checkbox';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport Autocomplete from '@mui/material/Autocomplete';\n\n// Material UI Icons\nimport CheckBoxIcon from '@mui/icons-material/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';\n\n// Api\nimport useMerchantApi from './api/useMerchantApi';\n\nconst icon = ;\nconst checkedIcon = ;\n\nconst MerchantWithLocationsSelect = (props) => {\n const { brandhash, select = 'Hash', size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['labels', 'errors']);\n\n const [values, setValues] = useState([]);\n\n const { useFetchActiveMerchants } = useMerchantApi();\n const { data, isFetching, isLoading } = useFetchActiveMerchants(brandhash);\n\n const customData = data?.length > 1\n ? [{ Hash: 'ALL', Name: t('labels:allshops') }, ...(data || [])]\n : [...(data || [])];\n\n useEffect(() => {\n const getValue = (value) => find(data, [select, value]) || null;\n\n if (value) {\n let _values = [];\n value.forEach(merchantid => {\n let _value = getValue(merchantid);\n if (_value) _values.push(_value)\n });\n setValues(_values);\n }\n }, [value, select, data])\n\n if (!isFetching && !isLoading && data.length === 0) return \n {t('errors:nomerchantswithlocations')}\n \n\n return (\n 1}\n groupBy={(option) => data.length > 1 ? option.Hash === 'ALL' ? 'All' : 'Shops' : null}\n onBlur={onBlur}\n onFocus={onFocus}\n getOptionLabel={(option) => option.Name}\n onChange={(_, value) => {\n const allSelected = value?.find(o => o.Hash === 'ALL');\n if (allSelected) onChange(data, null, select)\n else onChange(value, null, select)\n }}\n renderOption={(props, option, { selected }) => {\n return (\n
    \n {\n option.Hash === 'ALL'\n ?\n
  • value.length === data.length ? onChange([], null, select) : onChange(data, null, select)} >\n value.length === data.length ? onChange([], null, select) : onChange(data, null, select)}\n checked={value.length === data.length}\n />\n {option.Name || ''}\n
  • \n :\n
  • \n \n {option.Name || ''}\n
  • \n }\n
    \n )\n }}\n renderInput={(params) => (\n \n )}\n />\n );\n}\n\nexport default MerchantWithLocationsSelect","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Pages and Components\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport RelevancetextTypeRadios from './relevancetext.type.radios';\nimport NumberField from '../../../_components/number.textfield.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport MessageTextField from '../../../_components/message.text.field.component';\nimport MerchantWithLocationsSelect from '../../../merchant/merchant.with.location.select.component';\n\n// Api\nimport useRelevancetextApi from './api/useRelevancetextApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\n\nconst RelevancetextCreateForm = (props) => {\n const { passhash, brandhash, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions']);\n\n const { values, valid, setValues, useTextFieldInput, useArrayFieldInput } = useForm({ Pass: passhash, Type: 'merchant' })\n\n const { useCreateRelevancetext } = useRelevancetextApi();\n const { isLoading: creating, mutate: createRelevancetext } = useCreateRelevancetext;\n\n const disabled = creating;\n const submitDisabled = !valid || creating || values.RelevantText.length > 100;\n\n const form = {\n Type: {\n Name: 'Type',\n Label: t('labels:locationmessagetype'),\n Required: true\n },\n Merchant: {\n Name: 'Merchant',\n Label: t('labels:merchant'),\n Type: 'autocomplete',\n Required: true,\n },\n Latitude: {\n Name: 'Latitude',\n Label: t('labels:latitude'),\n Type: 'coordinate',\n Required: true,\n },\n Longitude: {\n Name: 'Longitude',\n Label: t('labels:longitude'),\n Type: 'coordinate',\n Required: true,\n },\n Message: {\n Name: 'RelevantText',\n Label: t('labels:relevancetextmessage'),\n Required: true,\n Type: 'text',\n },\n }\n\n const onSubmit = () => createRelevancetext(values, { onSuccess: onClose });\n\n const typeOfLocationMessage = values.Type;\n\n // UseEffect to clear Merchant and Latitude/Longitude when IsMerchant is changed\n useEffect(() => {\n setValues(prev => ({ ...prev, Merchant: [], Latitude: null, Longitude: null }));\n }, [typeOfLocationMessage, setValues])\n\n return (\n \n \n \n \n } />\n \n }\n />\n } />\n \n \n } />\n \n \n )\n}\n\nexport default RelevancetextCreateForm;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport RelevancetextCreateForm from '../relevancetext.create.form';\n\nconst RelevancetextCreateAction = (props) => {\n const { passhash, brandhash, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [openCreateForm, setOpenCreateForm] = useState(false);\n const handleCreateForm = () => setOpenCreateForm(!openCreateForm);\n\n return (\n <>\n }\n permissions={['pass:createrelevancetext']}\n />\n {\n openCreateForm &&\n \n }\n \n )\n}\n\nexport default RelevancetextCreateAction","import React, { useContext } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Contexts\nimport { UserContext } from '../../../_usercontext/user.context';\n\n// Components\nimport RelevancetextListItem from './relevancetext.list.item';\nimport RelevancetextCreateAction from './actions/create.action';\nimport RefetchButton from '../../../_components/buttons/refetch.button';\n\n// Api\nimport useRelevancetextApi from './api/useRelevancetextApi';\n\nconst RelevancetextList = ({ passhash, brandhash }) => {\n const { t } = useTranslation(['labels']);\n const { hasPermissions } = useContext(UserContext);\n const { useFetchRelevanceTexts } = useRelevancetextApi();\n const { data, isLoading, isFetching, refetch } = useFetchRelevanceTexts(passhash);\n\n if (!hasPermissions(['pass:viewrelevancetexts']))\n return null\n\n return (\n <>\n \n \n {`${t('labels:locationmessages')} - (${data?.length})`}\n \n \n \n \n \n \n {\n data?.map(rt =>\n )\n }\n \n \n \n );\n}\n\nexport default RelevancetextList\n","import React, { forwardRef } from 'react';\nimport Enums from '../../../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - UI\nimport Radio from '@mui/material/Radio';\nimport FormLabel from '@mui/material/FormLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nconst BirthdayTypeRadios = forwardRef((props, ref) => {\n const { disableSpecificRadio, label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n return (\n \n {label}\n \n {\n Enums.birthdaytypes.map(option =>\n (}\n label={t('enums:birthdaytype.' + option)} />))\n }\n \n {helperText}\n \n )\n})\n\nexport default BirthdayTypeRadios;","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, patch, post, put } from '../../../../_api/api';\n\nconst useBirthdayApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n const useFetchBirthdayActions = (passhash) => useQuery([passhash, 'pass-birthday-actions'], async () => get(`/Pass/birthday-actions?pass=${passhash}`), { staleTime: 1000 * 60 * 60 });\n\n const useCreateBirthdayAction = useMutation(newBirthdayAction => post('/Pass/birthday-actions', newBirthdayAction),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:birthdaymessagecreated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-birthday-actions'], { refetchInactive: true });\n },\n onError: (error) => {\n enqueueSnackbar(`${t('errors:couldnotcreatebirthdaymessage')} - ${error.status}`, { variant: 'error' })\n }\n });\n\n const useUpdateBirthdayAction = useMutation(BirthdayAction => put('/Pass/birthday-actions', BirthdayAction),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:birthdaymessageupdated'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-birthday-actions'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatebirthdaymessage')} - ${error.status}`, { variant: 'error' })\n });\n\n const usePurgeBirthdayAction = useMutation((birthday) => patch(`/Pass/${birthday.Hash}/birthday-actions/purge`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar(t('prompts:birthdaymessagepurged'), { variant: 'success' });\n queryClient.invalidateQueries([variables.Pass, 'pass-birthday-actions'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotpurgebirthdaymessage')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchBirthdayActions,\n useCreateBirthdayAction,\n useUpdateBirthdayAction,\n usePurgeBirthdayAction,\n }\n}\n\nexport default useBirthdayApi;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, Controller } from 'react-hook-form';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Pages and Components\nimport BirthdayTypeRadios from './birthday.type.radios';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport NumberField from '../../../_components/number.textfield.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport MessageTextField from '../../../_components/message.text.field.component';\nimport CouponMultiSelect from '../coupon/coupon.multiselect.component';\n\n// Api\nimport useBirthdayApi from './api/useBirthdayApi';\nimport useCouponApi from '../coupon/api/useCouponApi';\n\nconst BirthdayCreateForm = (props) => {\n const { passhash, brandhash, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions']);\n\n const {\n control,\n handleSubmit,\n watch,\n setValue,\n formState: { isValid, isSubmitting },\n } = useForm({\n mode: 'onChange',\n defaultValues: {\n Pass: passhash,\n Brand: brandhash,\n Config: {\n Type: 1,\n MessageTime: '10:00',\n },\n },\n });\n\n const { useCreateBirthdayAction } = useBirthdayApi();\n const { useFetchCoupons } = useCouponApi();\n const { mutateAsync: createBirthdayAction } = useCreateBirthdayAction;\n const { isFetching: fetchingCoupons, data: coupons } = useFetchCoupons(brandhash);\n\n const submitDisabled = !isValid || isSubmitting;\n const onSubmit = async (values) => await createBirthdayAction(values, { onSuccess: onClose });\n const typeOfBirthdayAction = watch('Config.Type');\n\n return (\n \n \n (\n {\n onChange(parseInt(e.target.value));\n setValue('Config.Coupon', null);\n setValue('Config.Points', '');\n }}\n disabled={isSubmitting}\n disableSpecificRadio={coupons?.length === 0}\n />\n )}\n />\n {typeOfBirthdayAction === 2 && (\n (\n {\n onChange(newvalue.map((val) => ({ coupon: val.Hash, count: 1 })));\n }}\n onIncrease={(coupon) => {\n if (!value) {\n onChange([{ coupon: coupon.Hash, count: 1 }]);\n return;\n }\n let _value = [...value];\n let index = _value.findIndex((c) => c.coupon === coupon.Hash);\n if (index > -1) _value[index].count++;\n else _value.push({ coupon: coupon.Hash, count: 1 });\n onChange(_value);\n }}\n onDecrease={(coupon) => {\n let _value = [...value];\n let index = _value.findIndex((c) => c.coupon === coupon.Hash);\n if (index > -1) {\n _value[index].count--;\n if (_value[index].count < 1) _value.splice(index, 1);\n }\n onChange(_value);\n }}\n {...fieldProps}\n component={}\n />\n )}\n />\n )}\n {coupons?.length === 0 && {t('errors:nocoupons')}}\n {typeOfBirthdayAction === 3 && (\n (\n }\n />\n )}\n />\n )}\n (\n }\n />\n )}\n />\n \n \n );\n};\n\nexport default BirthdayCreateForm;\n","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport BirthdayCreateForm from '../birthday.create.form';\n\nconst BirthdayCreateAction = (props) => {\n const { passhash, brandhash, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [openCreateForm, setOpenCreateForm] = useState(false);\n const handleCreateForm = () => setOpenCreateForm(!openCreateForm);\n\n return (\n <>\n }\n permissions={['pass:createbirthdayaction']}\n />\n {\n openCreateForm &&\n \n }\n \n )\n}\n\nexport default BirthdayCreateAction","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Confirm from '../../../../_components/dialogs/confirm.dialog';\nimport Action from '../../../../_components/navigation/navbar/action.component';\n\n// Api\nimport useBirthdayApi from '../api/useBirthdayApi';\n\nconst BirthdayPurgeAction = (props) => {\n const { t } = useTranslation(['actions', 'prompts']);\n const { birthday, onClose } = props;\n\n const { usePurgeBirthdayAction } = useBirthdayApi();\n const { isLoading: purging, mutate: purgeBirthdayAction } = usePurgeBirthdayAction;\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const handleConfirmOpen = () => setConfirmOpen(!confirmOpen);\n\n return (\n <>\n \n purgeBirthdayAction(birthday, {\n onSuccess: () => { handleConfirmOpen(); onClose(); },\n onError: handleConfirmOpen\n })}\n open={confirmOpen}\n onClose={handleConfirmOpen}\n />\n \n\n )\n}\n\nexport default BirthdayPurgeAction","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Avatar from '@mui/material/Avatar';\nimport Typography from '@mui/material/Typography';\n\n// Pages and Components\nimport BirthdayPurgeAction from './actions/purge.action';\nimport FormDialog from '../../../_components/dialogs/form.dialog';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport MessageTextField from '../../../_components/message.text.field.component';\n\n// Api\nimport useBirthdayApi from './api/useBirthdayApi';\n\n// Utilities and Helpers\nimport useForm from '../../../_forms/useForm';\nconst BirthdayEditForm = (props) => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n // create a new object to hold the form data\n // TODO - There is a bug that i don't know where it belongs to, that causes to update also the given data prop. To temporarily prevent this, we use a new object. It will be reconsidered.\n const formData = { ...data, Config: { ...data.Config } }\n\n const { values, valid, useTextFieldInput } = useForm({ ...formData });\n\n const { useUpdateBirthdayAction } = useBirthdayApi();\n const { isLoading: updating, mutate: updateBirthdayAction } = useUpdateBirthdayAction;\n\n const disabled = updating;\n\n const form = {\n MessageText: {\n Name: 'Config.MessageText',\n Label: t('labels:birthdaymessagetext'),\n Required: true,\n },\n MessageTime: {\n Name: 'Config.MessageTime',\n Label: t('labels:birthdaymessagetime'),\n Format: 'HH:mm',\n Type: 'moment'\n },\n }\n\n const onSubmit = () => updateBirthdayAction({\n ...values,\n Config: {\n MessageText: values.Config.MessageText,\n }\n }, { onSuccess: onClose });\n\n return (\n }\n submitDisabled={!valid || disabled}\n title={t('actions:editbirthdaymessage')}\n submitText={t('labels:update')}>\n \n {\n values?.Coupons?.map(coupon =>\n \n \n \n \n {coupon.Title}\n \n \n {coupon.Description}\n \n \n \n )\n }\n \n } />\n \n \n )\n}\n\nexport default BirthdayEditForm;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../../../_components/navigation/navbar/action.component';\nimport BirthdayEditForm from '../birthday.edit.form';\n\nconst BirthdayEditAction = (props) => {\n const { ba, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [openEditForm, setOpenEditForm] = useState(false);\n const handleEditForm = () => setOpenEditForm(!openEditForm);\n\n return (\n <>\n }\n permissions={['pass:editbirthdayaction']}\n />\n {\n openEditForm &&\n \n }\n \n )\n}\n\nexport default BirthdayEditAction","import React from 'react';\n\n// MUI\nimport ListItem from '@mui/material/ListItem';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Components\nimport BirthdayEditAction from './actions/edit.action';\n\nconst BirthdayActionListItem = ({ ba, disabled }) => {\n\n return (\n }\n >\n \n \n );\n}\n\nexport default BirthdayActionListItem","import React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Contexts\nimport { UserContext } from '../../../_usercontext/user.context';\n\n// Components\nimport BirthdayCreateAction from './actions/create.action';\nimport BirthdayActionListItem from './birthday.actions.list.item';\nimport RefetchButton from '../../../_components/buttons/refetch.button';\n\n// Api\nimport useBirthdayApi from './api/useBirthdayApi';\n\nconst BirthdayActionsList = ({ passhash, brandhash }) => {\n const { t } = useTranslation(['labels']);\n const { hasPermissions } = useContext(UserContext);\n const { useFetchBirthdayActions } = useBirthdayApi();\n const { data, isLoading, isFetching, refetch } = useFetchBirthdayActions(passhash);\n\n if (!hasPermissions(['pass:viewbirthdayactions']))\n return null\n\n return (\n <>\n \n \n {`${t('labels:birthdayactions')} - (${data?.length})`}\n \n {\n !data?.length >= 1 &&\n \n }\n \n \n \n \n {\n data?.map(ba => )\n }\n \n \n \n );\n\n}\n\nexport default BirthdayActionsList;","import React from 'react';\nimport { useHistory } from 'react-router';\n\n// Material Ui\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Helpers\nimport { getLuma } from '../_helpers/function.helper';\n\nconst Field = (props) => {\n const { Field, TextColor, LabelColor } = props;\n\n return (\n \n {Field?.Label?.toUpperCase()}\n {Field.GetValueFrom === 3 ? Field.StaticValue : '###'}\n \n );\n}\n\nconst PassPreview = (props) => {\n const { design, designs, withQR, passhash, button, passName } = props;\n const history = useHistory();\n\n const Design = design || designs?.[0]?.Designs?.[0];\n\n if (!(Design)) return null;\n\n return (\n button && history.push(`/pass/${passhash}`)}\n sx={{\n bgcolor: Design.BgColor,\n width: 260,\n maxWidth: 260,\n borderRadius: '8px',\n height: passName ? 266 : withQR ? 336 : 196,\n ...((getLuma(Design.BgColor) > 240) && { border: 'thin solid #ABB2B9' }),\n ...(button && {\n cursor: 'pointer',\n })\n }}\n >\n \n {\n Design.HasPassLogo\n ? Pass Logo\n : {Design.LogoText}\n }\n \n {\n Design.Fields.filter(f => f.Type === 1).map(f => (\n \n ))\n }\n \n \n 240) ? 258 : 260, height: (getLuma(Design.BgColor) > 240) ? 102 : 104 }}>\n {\n Design.StripImageUrl &&\n 240) ? '258px' : '260px',\n height: 'auto',\n maxHeight: 104\n }} alt='Pass Strip' src={Design.StripImageUrl} />\n }\n \n \n {\n Design.Fields.filter(f => f.Type === 3).map(f => (\n \n ))\n }\n \n {\n passName &&\n {passName}\n }\n {\n (withQR && !passName) &&\n \n \n QR Template\n {\n Design.ShowBarcodeValue &&\n #######\n }\n \n \n }\n \n );\n}\nexport default PassPreview;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\n\n// Api\nimport usePassApi from '../api/usePassApi';\n\nconst PassUpdateButton = ({ passhash }) => {\n const { t } = useTranslation(['actions']);\n\n const { useUpdateAllSubscribers } = usePassApi();\n const { isLoading: updating, mutate: updateAllSubscribers } = useUpdateAllSubscribers;\n\n const onSubmit = () => updateAllSubscribers(passhash);\n\n return (\n \n )\n}\n\nexport default PassUpdateButton","import React from 'react'\nimport QRCode from 'qrcode.react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Tooltip from '@mui/material/Tooltip';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Material UI Icons\nimport QrCodeIcon from '@mui/icons-material/QrCode';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\n\n// Components\nimport FormDialog from '../../_components/dialogs/form.dialog';\n\n// Api\nimport usePassApi from '../api/usePassApi';\n\nconst PassCreateQRButton = ({ passid }) => {\n const { t } = useTranslation(['labels', 'actions']);\n const { useCreateQRCode } = usePassApi();\n\n const { mutate, isLoading, data, isSuccess, reset } = useCreateQRCode;\n\n const onClick = () => mutate(passid);\n\n const enrollHash = data?.split('/')?.pop();\n\n return (\n <>\n \n {\n data &&\n reset()}>\n \n \n } border={1} borderRadius={2} p={1} borderColor='divider'>\n \n {`${process.env.REACT_APP_ENROLL_URL}${enrollHash}`}\n \n navigator.clipboard.writeText(`${process.env.REACT_APP_ENROLL_URL}${enrollHash}`)} >\n \n \n \n \n \n {`${process.env.REACT_APP_SHORTENROLL_URL}${enrollHash}`}\n \n navigator.clipboard.writeText(`${process.env.REACT_APP_SHORTENROLL_URL}${enrollHash}`)} >\n \n \n \n \n \n \n \n }\n \n )\n}\n\nexport default PassCreateQRButton","import React from 'react';\nimport moment from 'moment';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport PromoList from './promo/promos.list';\nimport CampaignList from './campaign/campaign.list';\nimport RelevancetextList from './relevancetext/relevancetext.list';\nimport BirthdayActionsList from './birthday/birthday.actions.list';\n\n// Pass Components\nimport PassPreview from '../../pass/pass.info.preview';\nimport PassUpdateButton from '../../pass/actions/pass.updatesubs.action';\nimport PassCreateQRButton from '../../pass/actions/pass.createqr.action';\n\nconst PassCardExtended = ({ pass }) => {\n return (\n }\n sx={{\n width: '100%',\n minWidth: '100%',\n maxWidth: '100%',\n height: 'auto',\n gap: 1,\n pb: 2,\n overflow: 'auto'\n }}\n >\n {\n pass?.Designs\n ? \n {pass.Name}\n {`${moment(pass.CreatedAt).format('DD MMM YYYY')}`}\n \n \n \n \n \n \n : \n {pass.Name}\n {`${moment(pass.CreatedAt).format('DD MMM YYYY')}`}\n {pass.Name}\n \n }\n \n \n \n \n \n );\n}\nexport default PassCardExtended;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\n\n// MUI Icons\nimport CreditCard from '@mui/icons-material/CreditCard';\n\n// Components\nimport PassCardExtended from './pass.card.extended.component';\nimport CustomAccordion from '../../_components/accordion.component';\n\n// Api\nimport usePassApi from '../../pass/api/usePassApi';\n\nconst PassList = ({ brandhash, expanded, handleChange }) => {\n const { t } = useTranslation(['actions', 'labels']);\n\n const { useFetchPasses } = usePassApi();\n const { data } = useFetchPasses(brandhash);\n\n return (\n }>\n }>\n {\n data?.map(pass => )\n }\n \n \n );\n}\n\nexport default PassList;","import React from 'react'\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material UI\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\n\nconst Gender = (props) => {\n const { size, disabled, value, label, required, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['labels']);\n\n return (\n \n \n }\n label={t('labels:male')}\n labelPlacement='end'\n />\n }\n label={t('labels:female')}\n labelPlacement='end'\n />\n \n \n )\n}\n\nexport default Gender;\n","import React from 'react'\nimport generator from 'generate-password';\n\n// Material - UI\nimport TextField from '@mui/material/TextField';\nimport VpnKey from '@mui/icons-material/VpnKey';\nimport IconButton from '@mui/material/IconButton';\n\nconst Password = (props) => {\n const { options, size, disabled, name, fullWidth, label, error, required, value, setValue, onFocus, placeholder, onBlur, onChange } = props;\n\n const _options = options || {\n length: 6,\n numbers: true,\n uppercase: false,\n excludeSimilarCharacters: true\n }\n\n const generatePassword = () => generator.generate(_options);\n\n return (\n \n setValue(name, generatePassword())} >\n \n \n \n ),\n }} />\n )\n}\n\nexport default Password\n","import React from 'react';\nimport Enums from '../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - Ui\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormLabel from '@mui/material/FormLabel';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\n\nconst UserTypeRadios = (props) => {\n const { usertypelisttype, label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n const options = (usertypelisttype) ? Enums[usertypelisttype] : [];\n\n return (\n \n {label}\n \n {\n options.map(option => (} label={t('enums:usertype.' + option)} />))\n }\n \n {helperText}\n \n )\n}\n\nexport default UserTypeRadios;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { get, del, patch, post, put } from '../../../_api/api';\nimport { useSnackbar } from 'notistack';\n\nconst usePermissionApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n const useFetchPermissions = () => useQuery('permissions', () => get(`/Permission`),\n {\n onError: (error) => enqueueSnackbar(`Yetkiler yüklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useAddPermission = useMutation(newPermission => post('/Permission/', newPermission),\n {\n onSuccess: () => {\n enqueueSnackbar('Yetki başarıyla eklendi', { variant: 'success' });\n queryClient.invalidateQueries(['permissions'])\n },\n onError: (error) => enqueueSnackbar(`Yetki eklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useUpdatePermission = useMutation(permission => put('/Permission/', permission),\n {\n onSuccess: () => {\n enqueueSnackbar('Yetki başarıyla güncellendi', { variant: 'success' });\n queryClient.invalidateQueries(['permissions'])\n },\n onError: (error) => enqueueSnackbar(`Yetki güncellenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useDeletePermission = useMutation(id => del(`/Permission/${id}`),\n {\n onSuccess: () => {\n enqueueSnackbar('Yetki başarıyla silindi', { variant: 'success' });\n queryClient.invalidateQueries(['permissions'])\n },\n onError: (error) => enqueueSnackbar(`Yetki silinirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useFetchRolePermissions = (roleid) => useQuery(['role-permissions', roleid], () => get(`/Role/${roleid}/permissions`),\n {\n enabled: !!roleid,\n onError: (error) => enqueueSnackbar(`Rolün yetkileri yüklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useAddPermissionToRole = useMutation(variables => patch(`/Role/${variables.selectedRole}/permission/${variables.permissionid}`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Yetki başarıyla eklendi', { variant: 'success' });\n queryClient.invalidateQueries(['role-permissions', variables.selectedRole])\n },\n onError: (error) => enqueueSnackbar(`Yetki eklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useRemovePermissionFromRole = useMutation(variables => del(`/Role/${variables.selectedRole}/permission/${variables.permissionid}`),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Yetki başarıyla kaldırıldı.', { variant: 'success' });\n queryClient.invalidateQueries(['role-permissions', variables.selectedRole])\n },\n onError: (error) => enqueueSnackbar(`Yetki kaldırılırken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchPermissions,\n useAddPermission,\n useUpdatePermission,\n useDeletePermission,\n useFetchRolePermissions,\n useAddPermissionToRole,\n useRemovePermissionFromRole\n }\n}\n\nexport default usePermissionApi;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport FormDialog from '../../_components/dialogs/form.dialog';\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\n// Api\nimport usePermissionApi from './api/usePermissionApi';\n\nconst PermissionForm = props => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n const { values, valid, useTextFieldInput } = useForm(data || {});\n\n const newpermission = !data;\n\n const { useAddPermission, useUpdatePermission } = usePermissionApi();\n const { isLoading: creating, mutate: createRole } = useAddPermission;\n const { isLoading: updating, mutate: updateRole } = useUpdatePermission;\n\n const disabled = creating || updating;\n\n const dialogtitle = newpermission ? t('labels:newpermission') : `${t('labels:editingpermission')}: ${data?.PermissionName}`;\n\n const form = {\n Name: {\n Name: 'PermissionName',\n Label: t('labels:name'),\n Required: true,\n },\n GroupName: {\n Name: 'GroupName',\n Label: t('labels:groupname'),\n Required: true,\n },\n Value: {\n Name: 'PermissionValue',\n Label: t('labels:value'),\n Required: true,\n },\n Description: {\n Name: 'Description',\n Label: t('labels:description'),\n Required: false,\n },\n }\n\n const onSubmit = () => {\n newpermission\n ? createRole(values, { onSuccess: onClose })\n : updateRole(values, { onSuccess: onClose });\n };\n\n return (\n \n \n \n \n \n \n \n \n )\n}\n\nexport default PermissionForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library,\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Checkbox from '@mui/material/Checkbox';\nimport IconButton from '@mui/material/IconButton';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport Typography from '@mui/material/Typography';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\n\n// Material Ui Icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Confirm from '../../_components/dialogs/confirm.dialog';\nimport PermissionForm from './permission.form';\n\n// Api\nimport usePermissionApi from './api/usePermissionApi';\n\nconst PermissionItemActionMenu = (props) => {\n const { permission } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n\n const [anchorEl, setAnchorEl] = useState(null);\n const menuOpen = Boolean(anchorEl);\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [formOpen, setFormOpen] = useState(false);\n\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n const toggleForm = () => setFormOpen(!formOpen);\n\n const { useDeletePermission } = usePermissionApi();\n const { isLoading: deleting, mutate: deletePermission } = useDeletePermission;\n\n return (\n <>\n \n \n \n \n { closeMenu(); toggleForm(); }} >\n \n \n \n {t('actions:editpermission')}\n \n { closeMenu(); toggleConfirm(); }} >\n \n \n \n {t('actions:deletepermission')}\n \n \n {\n confirmOpen &&\n deletePermission(permission.Id, { onSuccess: toggleConfirm })}\n open={confirmOpen}\n onClose={toggleConfirm} />\n }\n {\n formOpen &&\n \n }\n \n );\n}\n\nconst PermissionListItem = (props) => {\n const { permission, actions, checkboxes, checked, disabled, selected, working, onItemCheck, onItemClick } = props; // Get all the props, most of them will be used for ListItem component\n\n return (\n \n : null\n }\n >\n onItemClick ? onItemClick(permission.Id) : onItemCheck ? onItemCheck(permission.Id, !checked) : null}>\n {\n checkboxes && !(working) &&\n < ListItemIcon >\n \n \n }\n {\n working &&\n < ListItemIcon >\n \n \n }\n \n \n {permission.Description}\n \n {\n permission.Description\n ? ` - ${permission.PermissionValue}`\n : permission.PermissionValue\n }\n \n }\n />\n \n \n );\n}\n\nexport default PermissionListItem;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { map, includes, filter, uniq } from 'lodash';\n\n// Material UI\nimport List from '@mui/material/List';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport ToolBar from '../../_components/toolbar/toolbar.component';\nimport PermissionForm from './permission.form';\nimport PermissionListItem from './permission.list.item';\n\n// API\nimport usePermissionApi from './api/usePermissionApi';\n\nconst PermissionsList = (props) => {\n const { addNew, border, checkboxes, actions, disabled, checkedItems, selectedItems, disabledItems, workingItems, onItemCheck, onItemClick } = props;\n const { t } = useTranslation(['labels']);\n\n const { useFetchPermissions } = usePermissionApi();\n const { data, isFetching, isLoading, refetch } = useFetchPermissions();\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleForm = () => setFormOpen(!formOpen);\n\n const groupnames = data && uniq(map(data, 'GroupName'));\n\n return (\n \n \n \n \n {\n data && groupnames &&\n groupnames.map((groupname) => {\n const permissions = filter(data, ['GroupName', groupname]);\n return (\n
    \n {groupname}\n {\n permissions.map((permission) => )\n }\n
    \n );\n })\n }\n
    \n
    \n {\n formOpen &&\n \n }\n
    \n );\n}\n\nexport default PermissionsList;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { get, del, post, put } from '../../../_api/api';\nimport { filter, includes, map, flatten, uniq } from 'lodash';\n\nimport { useSnackbar } from 'notistack';\n\nconst useRoleApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n const useFetchRoles = () => useQuery('roles', () => get(`/Role`));\n const useFetchPermissionsOfRoleList = (roleids) => {\n const { data: roles } = useFetchRoles();\n\n if (!roles) return [];\n if (!roleids) return [];\n if (roleids.length <= 0) return [];\n\n return uniq(map(flatten(map(filter(roles, (r) => includes(roleids, r.Id)), (ro) => ro.Permissions)), (f) => f.Id));\n }\n\n const useAddRole = useMutation(newRole => post('/Role/', newRole),\n {\n onSuccess: () => {\n enqueueSnackbar('Rol başarıyla eklendi', { variant: 'success' });\n queryClient.invalidateQueries(['roles'])\n },\n onError: (error) => enqueueSnackbar(`Rol eklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useUpdateRole = useMutation(role => put('/Role/', role),\n {\n onSuccess: () => {\n enqueueSnackbar('Rol başarıyla güncellendi', { variant: 'success' });\n queryClient.invalidateQueries(['roles'])\n },\n onError: (error) => enqueueSnackbar(`Rol güncellenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n const useDeleteRole = useMutation(id => del(`/Role/${id}`),\n {\n onSuccess: () => {\n enqueueSnackbar('Rol başarıyla silindi', { variant: 'success' });\n queryClient.invalidateQueries(['roles'])\n },\n onError: (error) => enqueueSnackbar(`Rol silinirken hata oluştu - Hata: ${error.status}`, { variant: 'error' }),\n });\n\n return {\n useFetchRoles,\n useFetchPermissionsOfRoleList,\n useAddRole,\n useUpdateRole,\n useDeleteRole,\n }\n}\n\nexport default useRoleApi;","import React from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library,\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport FormDialog from '../../_components/dialogs/form.dialog';\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\n// Api\nimport useRoleApi from './api/useRoleApi';\n\nconst RoleForm = props => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n const { values, valid, useTextFieldInput } = useForm(data || {});\n\n const newrole = !data;\n\n const { useAddRole, useUpdateRole } = useRoleApi();\n const { isLoading: creating, mutate: createRole } = useAddRole;\n const { isLoading: updating, mutate: updateRole } = useUpdateRole;\n\n const disabled = creating || updating;\n\n const dialogtitle = newrole\n ? t('labels:newrole')\n : `${t('labels:editingrole')}: ${data?.RoleName}`;\n\n const form = {\n Name: {\n Name: 'RoleName',\n Label: t('labels:name'),\n Required: true,\n },\n Value: {\n Name: 'RoleValue',\n Label: t('labels:value'),\n Required: true,\n },\n }\n\n const onSubmit = () => {\n newrole\n ? createRole(values, { onSuccess: onClose })\n : updateRole(values, { onSuccess: onClose });\n };\n\n return (\n \n \n \n \n \n \n )\n}\n\nexport default RoleForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library,\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Checkbox from '@mui/material/Checkbox';\nimport IconButton from '@mui/material/IconButton';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\nimport Typography from '@mui/material/Typography';\n\n// Material Ui Icons\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\n// Components\nimport Confirm from '../../_components/dialogs/confirm.dialog';\nimport RoleForm from './role.form';\n\n// Api\nimport useRoleApi from './api/useRoleApi';\n\nconst RoleItemActionMenu = (props) => {\n const { role } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n\n const [anchorEl, setAnchorEl] = useState(null);\n const menuOpen = Boolean(anchorEl);\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const [formOpen, setFormOpen] = useState(false);\n\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n const toggleForm = () => setFormOpen(!formOpen);\n\n const { useDeleteRole } = useRoleApi();\n const { isLoading: deleting, mutate: deleteRole } = useDeleteRole;\n\n return (\n <>\n \n \n { closeMenu(); toggleForm(); }} >\n \n \n \n {t('actions:editrole')}\n \n { closeMenu(); toggleConfirm(); }} >\n \n \n \n {t('actions:deleterole')}\n \n \n {\n confirmOpen &&\n deleteRole(role.Id, { onSuccess: toggleConfirm })}\n open={confirmOpen}\n onClose={toggleConfirm} />\n }\n {\n formOpen &&\n \n }\n \n );\n}\n\nconst RolesListItem = (props) => {\n const { role, actions, checkboxes, checked, disabled, selected, working, onItemCheck, onItemClick } = props; // Get all the props, most of them will be used for ListItem component\n\n return (\n : null}\n >\n onItemClick ? onItemClick(role.Id) : onItemCheck ? onItemCheck(role.Id, !checked, role) : null}>\n {\n checkboxes && !(working) &&\n < ListItemIcon >\n \n \n }\n {\n working &&\n < ListItemIcon >\n \n \n }\n \n {role.RoleValue}\n \n }\n />\n \n \n );\n}\n\nexport default RolesListItem;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { includes } from 'lodash';\n\n// Material UI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport RoleForm from './role.form';\nimport RoleListItem from './role.list.item';\nimport ToolBar from '../../_components/toolbar/toolbar.component';\n\n// API\nimport useRoleApi from './api/useRoleApi';\n\nconst RolesList = (props) => {\n const { addNew, border, checkboxes, actions, checkedItems, selectedItems, disabledItems, workingItems, onItemCheck, onItemClick } = props;\n const { t } = useTranslation(['labels']);\n\n const { useFetchRoles } = useRoleApi();\n const { data, isFetching, isLoading, refetch } = useFetchRoles();\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n \n \n \n \n {\n data &&\n data.map((role) =>\n \n )\n }\n \n \n {\n addNew &&\n \n }\n \n );\n}\n\nexport default RolesList;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, post, put, patch } from '../../_api/api'\n\nconst useUserApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchUsers = (brandhash) => useQuery(brandhash ? [brandhash, 'users'] : ['users'], () => get(brandhash ? `/User?brand=${brandhash}` : '/User'));\n\n const useFetchSystemUsers = (select) => useQuery(['users-system'], () => get('/User'), { select });\n const useFetchResellers = () => useFetchSystemUsers((users) => users.filter((user) => user.UserTypeId === 8));\n\n const useFetchUser = hash => useQuery([hash, 'user'], () => get(`/User/${hash}`));\n\n const useCreateUser = useMutation(newUser => post('/User', newUser),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:usercreated'), { variant: 'success' });\n queryClient.invalidateQueries(['users'], { refetchInactive: true });\n queryClient.invalidateQueries(['users-system']);\n queryClient.invalidateQueries([variables.BrandHash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatemerchant')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateUser = useMutation(User => put('/User', User),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:userupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['users'], { refetchInactive: true });\n queryClient.invalidateQueries(['users-system']);\n queryClient.invalidateQueries([variables.BrandHash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateuser')} - ${error.status}`, { variant: 'error' })\n });\n\n const useArchiveUser = useMutation(User => patch(`/User/${User.Hash}/archive`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:userstatusupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['users-system']);\n queryClient.invalidateQueries([variables.BrandHash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateuser')} - ${error.status}`, { variant: 'error' })\n });\n\n const useActivateUser = useMutation(User => patch(`/User/${User.Hash}/activate`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:userstatusupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['users-system']);\n queryClient.invalidateQueries([variables.BrandHash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateuser')} - ${error.status}`, { variant: 'error' })\n });\n\n const useChangeUserPassword = useMutation((User) => patch(`/User/${User.Hash}/change-password?password=${User.Newpassword}`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar(t('prompts:userpasswordupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['users-system']);\n queryClient.invalidateQueries([variables.BrandHash, 'users'], { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateuserpassword')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchUsers,\n useFetchResellers,\n useFetchUser,\n useCreateUser,\n useUpdateUser,\n useArchiveUser,\n useActivateUser,\n useChangeUserPassword,\n useFetchSystemUsers\n }\n}\n\nexport default useUserApi;\n","import React, { useEffect, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport AppBar from '@mui/material/AppBar';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport Gender from './gender.select.component';\nimport Password from '../_components/password.generator.component';\nimport LabeledInputField from '../_components/labeled.input.component';\nimport UserTypeRadios from './usertype.radio.component';\nimport MerchantSelect from '../merchant/merchant.select.component';\nimport PermissionsList from '../settings/permission/permissions.list';\nimport RolesList from '../settings/role/roles.list';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// Api\nimport useUserApi from './api/useUserApi';\nimport useRoleApi from '../settings/role/api/useRoleApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst UserCreateForm = ({ brandhash, open, onClose }) => {\n const { user } = useContext(UserContext);\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n // Prepare APIs\n const { useCreateUser } = useUserApi();\n const { isLoading: creating, mutate: createUser } = useCreateUser;\n const { useFetchPermissionsOfRoleList } = useRoleApi();\n\n // The form that we need to fill while creating or updating a user\n let form = {\n UserTypeId: {\n Name: 'UserTypeId',\n Label: t('labels:usertype'),\n Required: true,\n },\n BrandHash: {\n Name: 'BrandHash',\n Label: t('labels:brand'),\n Required: false,\n },\n MerchantHash: {\n Name: 'MerchantHash',\n Label: t('labels:merchant'),\n Required: false,\n },\n FullName: {\n Name: 'FullName',\n Label: t('labels:namesurname'),\n Required: true,\n },\n Gender: {\n Name: 'Gender',\n Label: t('labels:gender'),\n Required: false,\n },\n OpaqueId: {\n Name: 'OpaqueId',\n Label: t('labels:opaqueid'),\n Required: false,\n },\n Birthday: {\n Name: 'Birthday',\n Label: t('labels:birthday'),\n Required: false,\n },\n Phone: {\n Name: 'Phone',\n Label: t('labels:phone'),\n Required: false,\n Type: 'phone'\n },\n Email: {\n Name: 'Email',\n Label: t('labels:email'),\n Required: true,\n },\n Password: {\n Name: 'Password',\n Label: t('labels:password'),\n Required: true,\n },\n Roles: {\n Name: 'Roles',\n },\n Permissions: {\n Name: 'Permissions',\n }\n }\n\n const {\n values,\n setValue,\n setValues,\n valid,\n useTextFieldInput,\n useSelectableFieldInput,\n useArrayFieldInput\n } = useForm({ BrandHash: brandhash, UserTypeId: '4' }); // useForm hook takes care of all validation and state management for forms\n\n const { value: roles, onChange: handleRoleSelect } = useArrayFieldInput(form.Roles)\n const { value: permissions, onChange: handlePermissionSelect } = useArrayFieldInput(form.Permissions)\n const permsofroles = useFetchPermissionsOfRoleList(roles);\n const checkRole = async (roleid, checked) => handleRoleSelect(roleid, checked);\n const checkPermission = async (permissionid, checked) => handlePermissionSelect(permissionid, checked);\n\n const onSubmit = () => createUser(values, { onSuccess: onClose })\n\n useEffect(() => {\n if ((values.UserTypeId === '4' || values.UserTypeId === 4)) // Brand Manager is selected, clear the MerchantHash data\n setValues(prev => ({ ...prev, MerchantHash: '' }));\n if ((values.UserTypeId === '4' || values.UserTypeId === 4) && user.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [2], MerchantHash: '' }));\n if ((values.UserTypeId === '5' || values.UserTypeId === 5) && user.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [5] }));\n if ((values.UserTypeId === '6' || values.UserTypeId === 6) && user.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [6] }));\n }, [values.UserTypeId, setValues, user.UserType])\n\n return (\n \n \n \n \n \n \n {t('labels:newuser')}\n \n \n \n \n \n \n \n \n \n {t('prompts:usertype')} \n {t('prompts:usertypedetailed')} \n \n \n \n \n \n } />\n \n \n \n \n \n \n {t('prompts:generalinfo')} \n {t('prompts:usergeneralinfo')} \n \n \n \n \n \n \n \n \n \n } />\n \n \n \n \n } />\n \n \n {\n user.UserType === 1 &&\n <>\n \n \n \n {t('prompts:rolesandpermission')} \n {t('prompts:rolesandpermissioninfo')} \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n );\n}\n\nexport default UserCreateForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport UserCreateForm from '../user.create.form';\n\nconst UserNewAction = (props) => {\n const { brandhash, ...otherProps } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n permissions={['user:create']}\n {...otherProps} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default UserNewAction;","import React, { useEffect, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport AppBar from '@mui/material/AppBar';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport Gender from './gender.select.component';\nimport LabeledInputField from '../_components/labeled.input.component';\nimport MerchantSelect from '../merchant/merchant.select.component';\nimport Password from '../_components/password.generator.component';\nimport PermissionsList from '../settings/permission/permissions.list';\nimport RolesList from '../settings/role/roles.list';\nimport UserTypeRadios from './usertype.radio.component';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// Api\nimport useRoleApi from '../settings/role/api/useRoleApi';\nimport useUserApi from './api/useUserApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst UserEditForm = ({ user, open, onClose }) => {\n const { user: systemuser } = useContext(UserContext);\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n // Prepare APIs\n const { useUpdateUser } = useUserApi();\n const { isLoading: updating, mutate: updateUser } = useUpdateUser;\n const { useFetchPermissionsOfRoleList } = useRoleApi();\n\n // The form that we need to fill while creating or updating a user\n let form = {\n UserTypeId: {\n Name: 'UserTypeId',\n Label: t('labels:usertype'),\n Required: true,\n },\n BrandHash: {\n Name: 'BrandHash',\n Label: t('labels:brand'),\n Required: false,\n },\n MerchantHash: {\n Name: 'MerchantHash',\n Label: t('labels:merchant'),\n Required: false,\n },\n FullName: {\n Name: 'FullName',\n Label: t('labels:namesurname'),\n Required: true,\n },\n Gender: {\n Name: 'Gender',\n Label: t('labels:gender'),\n Required: false,\n },\n OpaqueId: {\n Name: 'OpaqueId',\n Label: t('labels:opaqueid'),\n Required: false,\n },\n Birthday: {\n Name: 'Birthday',\n Label: t('labels:birthday'),\n Required: false,\n },\n Phone: {\n Name: 'Phone',\n Label: t('labels:phone'),\n Required: false,\n Type: 'phone'\n },\n Email: {\n Name: 'Email',\n Label: t('labels:email'),\n Required: true,\n },\n Password: {\n Name: 'Password',\n Label: t('labels:password'),\n Required: true,\n },\n Roles: {\n Name: 'Roles',\n },\n Permissions: {\n Name: 'Permissions',\n }\n }\n\n const {\n values,\n setValue,\n setValues,\n validateForm,\n valid,\n useTextFieldInput,\n useSelectableFieldInput,\n useArrayFieldInput\n } = useForm(user); // useForm hook takes care of all validation and state management for forms\n\n const { value: roles, onChange: handleRoleSelect } = useArrayFieldInput(form.Roles)\n const { value: permissions, onChange: handlePermissionSelect } = useArrayFieldInput(form.Permissions)\n const permsofroles = useFetchPermissionsOfRoleList(roles);\n const checkRole = async (roleid, checked) => handleRoleSelect(roleid, checked);\n const checkPermission = async (permissionid, checked) => handlePermissionSelect(permissionid, checked);\n\n // Create a Submit function. If we have a user, we use createUser, updateUser if not \n const onSubmit = () => {\n validateForm(true);\n if (valid) updateUser(values, { onSuccess: onClose });\n }\n\n useEffect(() => {\n if ((values.UserTypeId === '4' || values.UserTypeId === 4)) // Brand Manager is selected, clear the MerchantHash data\n setValues(prev => ({ ...prev, MerchantHash: '' }));\n if ((values.UserTypeId === '4' || values.UserTypeId === 4) && systemuser.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [2], MerchantHash: '' }));\n if ((values.UserTypeId === '5' || values.UserTypeId === 5) && systemuser.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [5] }));\n if ((values.UserTypeId === '6' || values.UserTypeId === 6) && systemuser.UserType !== 1)\n setValues(prev => ({ ...prev, Roles: [6] }));\n }, [values.UserTypeId, setValues, systemuser.UserType])\n\n return (\n \n \n \n \n \n \n {user?.FullName}\n \n \n \n \n \n \n \n \n \n {t('prompts:usertype')} \n {t('prompts:usertypedetailed')} \n \n \n \n \n \n } />\n \n \n \n \n \n \n {t('prompts:generalinfo')} \n {t('prompts:usergeneralinfo')} \n \n \n \n \n \n \n \n \n \n } />\n \n } />\n \n \n {\n systemuser.UserType === 1 &&\n <>\n \n \n \n {t('prompts:rolesandpermission')} \n {t('prompts:rolesandpermissioninfo')} \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n );\n}\n\nexport default UserEditForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport UserEditForm from '../user.edit.form';\n\nconst UserEditAction = ({ user, variant, size, disabled }) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Handle exceptional cases. We need merchant data\n if (!user) return null;\n\n return (\n <>\n }\n permissions={['user:edit']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default UserEditAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\n// Api\nimport useUserApi from './api/useUserApi';\nimport FormDialog from '../_components/dialogs/form.dialog';\n\nconst UserChangePasswordForm = ({ user, open, onClose }) => {\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n\n const [password, setPassword] = useState(user?.Password)\n\n // Prepare APIs\n const { useChangeUserPassword } = useUserApi();\n const { isLoading: changing, mutate: changePassword } = useChangeUserPassword;\n\n const handleChangePassword = () => {\n changePassword({ ...user, Newpassword: password }, {\n onSuccess: onClose,\n })\n }\n\n return (\n \n setPassword(event.target.value)}\n autoFocus\n id='name'\n label={t('labels:password')}\n fullWidth\n variant='outlined'\n />\n \n )\n}\n\nexport default UserChangePasswordForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUi Icons\nimport VpnKey from '@mui/icons-material/VpnKey';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport UserChangePasswordForm from '../user.changepassword.form';\n\nconst UserChangePasswordAction = ({ user, variant, size, disabled }) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Handle exceptional cases. We need merchant data\n if (!user) return null;\n\n return (\n <>\n }\n permissions={['user:changepassword']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default UserChangePasswordAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport UnarchiveIcon from '@mui/icons-material/Unarchive';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// Api\nimport useUserApi from '../api/useUserApi';\n\nconst UserChangeStatusAction = ({ user, variant, size, disabled }) => {\n const { t } = useTranslation(['actions']);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useArchiveUser, useActivateUser } = useUserApi();\n const { isLoading: archiving, mutate: archiveUser } = useArchiveUser;\n const { isLoading: activating, mutate: activateUser } = useActivateUser;\n\n // Handle exceptional cases. We need merchant data\n if (!user) return null;\n\n const submitting = (user.Status === 0) ? activating : archiving;\n const handleSubmit = (user.Status === 0)\n ? () => activateUser(user, { onSuccess: toggleConfirm })\n : () => archiveUser(user, { onSuccess: toggleConfirm });\n\n const label = (user.Status === 0) ? t('actions:activateuser') : t('actions:archiveuser');\n const icon = (user.Status === 0) ? : ;\n const prompt = (user.Status === 0)\n ? `${t('prompts:activateuserconfirm')} ${user.FullName}`\n : `${t('prompts:archiveuserconfirm')} ${user.FullName}`\n\n return (\n <>\n \n \n \n );\n}\n\nexport default UserChangeStatusAction;","import React from 'react';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Badge from '../_components/badge.component';\nimport UserEditAction from './actions/user.edit.action';\nimport UserChangePasswordAction from './actions/user.changepassword.action';\nimport UserChangeStatusAction from './actions/user.changestatus.action';\n\nconst UserRow = ({ row }) => {\n const rowColors = row?.cells?.[0].column.rowColors;\n const color = rowColors?.colors[row.values[rowColors.fieldid]];\n const linethrough = rowColors && row.values[rowColors.fieldid] === 0;\n\n return (\n \n {row?.values.FullName}\n \n \n \n \n \n \n \n );\n}\n\nexport default UserRow;","import React from 'react'\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport LoadingButton from '@mui/lab/LoadingButton';\n\n// Api\nimport useFoodicsApi from '../api/useFoodicsApi';\n\nconst FoodicsSyncUsersAction = ({ brandhash, variant }) => {\n const { useFetchSyncUser } = useFoodicsApi();\n const { refetch: userSync, isFetching: syncingUsers } = useFetchSyncUser(brandhash);\n const { t } = useTranslation(['actions']);\n\n return {t('actions:syncusers')};\n}\n\nFoodicsSyncUsersAction.defaultProps = {\n variant: 'outlined',\n};\n\nFoodicsSyncUsersAction.propTypes = {\n variant: PropTypes.oneOf(['outlined', 'contained', 'text']),\n};\n\nexport default FoodicsSyncUsersAction","import React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport Enums from '../enums';\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport LaunchIcon from '@mui/icons-material/Launch'\n\n// Components\nimport Table from '../_components/table/table.component';\nimport UserNewAction from './actions/user.new.action';\nimport UserRow from './user.info.row';\nimport FoodicsSyncUsersAction from '../foodics/actions/foodics.syncusers.action';\n\n// Api\nimport useUserApi from './api/useUserApi';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\nimport TooltipIconButton from '../_components/buttons/tooltip.icon.button';\n\nconst UsersTable = ({ brand }) => {\n const { brandhash } = useParams();\n const history = useHistory();\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n const { hasPermissions } = useContext(UserContext);\n\n const { useFetchUsers } = useUserApi();\n const { data, isFetching, isLoading, refetch } = useFetchUsers(brand?.Hash || brandhash);\n\n const columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableResizing: true,\n exportorder: 1,\n },\n {\n Header: t('labels:user'),\n accessor: 'UserRow',\n className: 'actions',\n Cell: ({ row }) => ,\n width: 400,\n minWidth: 400,\n maxWidth: 600,\n disableExport: true\n },\n {\n id: 'FullName',\n Header: t('labels:namesurname'),\n accessor: 'FullName',\n width: 300,\n minWidth: 300,\n maxWidth: 400,\n hidden: true,\n exportorder: 2\n },\n {\n id: 'UserType',\n Header: t('labels:type'),\n accessor: row => t(`enums:usertype.${row.UserTypeId}`),\n width: 260,\n minWidth: 200,\n maxWidth: 400,\n filter: 'oneof',\n filterorder: 1,\n exportorder: 3\n },\n {\n id: 'Email',\n Header: t('labels:email'),\n accessor: 'Email',\n width: 300,\n minWidth: 300,\n maxWidth: 400,\n hidden: !Boolean(hasPermissions(['user:view'])),\n disableExport: !Boolean(hasPermissions(['user:view'])),\n exportorder: 4\n },\n {\n id: 'Password',\n Header: t('labels:password'),\n accessor: 'Password',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n hidden: !hasPermissions(['user:view']),\n disableExport: !hasPermissions(['user:view']),\n exportorder: 5\n },\n {\n id: 'Merchant',\n Header: t('labels:merchant'),\n accessor: 'Merchant',\n width: 200,\n minWidth: 160,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 2\n },\n {\n id: 'Phone',\n Header: t('labels:phone'),\n accessor: 'Phone',\n width: 200,\n minWidth: 200,\n maxWidth: 300\n },\n {\n id: 'Gender',\n Header: t('labels:gender'),\n accessor: 'Gender',\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableResizing: true,\n filter: 'oneof',\n filterorder: 3\n },\n { id: 'Hash', accessor: 'Hash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'BrandHash', accessor: 'BrandHash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'MerchantId', accessor: 'MerchantId', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'MerchantHash', accessor: 'MerchantHash', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'UserTypeId', accessor: 'UserTypeId', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'Roles', accessor: 'Roles', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true, },\n { id: 'Permissions', accessor: 'Permissions', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true, },\n { id: 'Status', Header: t('labels:status'), accessor: row => Enums.subscriberstatus[row.Status], disableGlobalFilter: true, disableSortBy: true, filter: 'oneof', filterorder: 4, hidden: true },\n ];\n\n return (\n 4 ? 660 : 340}>\n history.goBack() : null}\n beforeActions={brand && } onClick={() => history.push(`/${brand?.Hash}/users`)} />}\n addAction={}\n afterActions={brand?.Config?.IntegrationPartner === 1 && }\n localization={{\n search: t('labels:search'),\n refetch: t('labels:refresh'),\n addnew: t('actions:newuser'),\n }}\n />\n \n );\n}\nexport default UsersTable;","\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport People from '@mui/icons-material/People';\n\n// Components\nimport UsersTable from './users.table';\nimport CustomAccordion from '../_components/accordion.component';\n\nconst UserList = ({ brand, expanded, handleChange }) => {\n const { t } = useTranslation(['actions', 'labels'])\n\n return (\n }>\n \n \n );\n}\n\nexport default UserList;\n\n/*\nimport FoodicsSyncUsersAction from '../foodics/actions/foodics.syncusers.action';\n\n{\n brand.Config?.IntegrationPartner === 1 &&\n \n}\n*/\n\n/**\n * \n \n {\n data?.map(user => (\n \n \n {user.FullName}\n {\n user.UserType &&\n {`- ${user.UserType}`}\n }\n {\n user.Merchant &&\n {`- ${user.Merchant}`}\n }\n {\n hasPermissions(['user:view']) &&\n <>\n {`- ${user.Email}`}\n {`- ${user.Password}`}\n \n }\n \n \n \n \n \n \n \n \n ))\n }\n \n */\n\n// import React, { useContext } from 'react';\n// import { useTranslation } from 'react-i18next';\n\n// // MUI\n// import Stack from '@mui/material/Stack';\n// import Typography from '@mui/material/Typography';\n\n// // Contexts\n// import { UserContext } from '../_usercontext/user.context';\n\n// // Components\n// import Badge from '../_components/badge.component';\n// import UserEditAction from './actions/user.edit.action';\n// import UserNewAction from './actions/user.new.action';\n// import UserChangePasswordAction from './actions/user.changepassword.action';\n// import UserChangeStatusAction from './actions/user.changestatus.action';\n\n// // MUI Icons\n// import People from '@mui/icons-material/People';\n\n// // Api\n// import useUserApi from './api/useUserApi';\n// import CustomAccordion from '../_components/accordion.component';\n\n// const UserList = ({ brandhash, expanded, handleChange }) => {\n// const { t } = useTranslation(['actions', 'labels']);\n// const { hasPermissions } = useContext(UserContext);\n\n// const { useFetchUsers } = useUserApi()\n// const { data } = useFetchUsers(brandhash);\n\n// return (\n// }>\n// \n// \n// {\n// data?.map(user => (\n// \n// \n// {user.FullName}\n// {\n// user.UserType &&\n// {`- ${user.UserType}`}\n// }\n// {\n// user.Merchant &&\n// {`- ${user.Merchant}`}\n// }\n// {\n// hasPermissions(['user:view']) &&\n// <>\n// {`- ${user.Email}`}\n// {`- ${user.Password}`}\n// \n// }\n// \n// \n// \n// \n// \n// \n// \n// \n// ))\n// }\n// \n// \n// );\n// }\n\n// export default UserList;\n\n// /*\n// import FoodicsSyncUsersAction from '../foodics/actions/foodics.syncusers.action';\n\n// {\n// brand.Config?.IntegrationPartner === 1 &&\n// \n// }\n// */","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport BrandForm from '../brand.form';\n\nconst BrandEditAction = ({ brand, ...otherProps }) => {\n const { t } = useTranslation(['actions, labels, prompts']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n if (!brand)\n return null;\n\n return (\n <>\n } permissions={['client:edit']} {...otherProps} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default BrandEditAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport ArchiveOutlinedIcon from '@mui/icons-material/ArchiveOutlined';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\nimport List from '@mui/material/List';\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\n\n// Api\nimport useBrandApi from '.././api/useBrandApi';\n\nconst BrandChangeStatus = ({ brand, ...otherProps }) => {\n const { t } = useTranslation(['actions, labels, prompts']);\n\n const options = [\n { action: t('actions:updateactive'), title: t('labels:active'), value: 1 },\n { action: t('actions:updatearchived'), title: t('labels:archived'), value: 0 },\n { action: t('actions:updatedemo'), title: t('labels:demo'), value: 2 },\n { action: t('actions:updatechurned'), title: t('labels:churned'), value: 3 },\n ];\n\n const [confirmStatus, setConfirmStatus] = useState(null);\n const confirmOpen = !!(confirmStatus);\n const openConfirm = (status) => setConfirmStatus(status);\n const closeConfirm = () => setConfirmStatus(null);\n\n const [anchorEl, setAnchorEl] = useState(null);\n const menuOpen = Boolean(anchorEl);\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const { useChangeBrandStatus } = useBrandApi();\n const { isLoading: changing, mutate: changeStatus } = useChangeBrandStatus;\n\n const onSubmit = () => changeStatus({ Hash: brand.Hash, Status: confirmStatus?.value }, { onSuccess: closeConfirm });\n\n return (\n <>\n } permissions={['client:changestatus']} {...otherProps} />\n \n \n {options.map(option => (\n (option.value === brand?.Status)\n ? null\n : openConfirm(option)} >\n {option.action}\n \n ))}\n \n \n {\n \n }\n \n );\n}\n\nexport default BrandChangeStatus;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport Link from '@mui/material/Link';\nimport Grid from '@mui/material/Grid';\n\n// MUI Icons\nimport InfoIcon from '@mui/icons-material/Info';\nimport ContactPageIcon from '@mui/icons-material/ContactPage';\nimport HelpOutlineOutlinedIcon from '@mui/icons-material/HelpOutlineOutlined';\nimport LocationOnIcon from '@mui/icons-material/LocationOn';\nimport LanguageIcon from '@mui/icons-material/Language';\n\n// Components\nimport CustomAccordion from '../../_components/accordion.component';\nimport BrandEditAction from '../actions/brand.edit.action';\nimport BrandChangeStatus from '../actions/brand.changestatus.action';\nimport RefetchButton from '../../_components/buttons/refetch.button';\n\nconst InformationRow = ({ title, value, link }) => {\n\n return (\n {title}\n {\n value ?\n link ?\n {value}\n :\n {value}\n :\n \n }\n )\n}\n\nconst BrandInformationBox = ({ data, expanded, handleChange, refetch, isFetching }) => {\n const { t } = useTranslation(['labels', 'enums']);\n\n return (\n }>\n \n \n \n \n \n \n \n \n \n \n \n {t('labels:general')}\n \n \n \n \n \n \n \n \n \n \n \n {t('labels:contact')}\n \n \n \n \n \n \n \n \n \n \n \n {t('labels:location')}\n \n \n \n \n \n \n \n \n \n \n \n {t('labels:localization')}\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default BrandInformationBox;","import React, { useContext, useState } from 'react'\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\nimport { useParams } from \"react-router-dom\";\n\n// MUI\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport SettingsIcon from '@mui/icons-material/Settings';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\n// Components\nimport BrandInfoAvatar from '../brand.info.avatar';\nimport CouponsList from './coupon/coupons.list.component';\nimport MerchantList from '../../merchant/merchants.list';\nimport PassList from './brand.settings.pass.list';\nimport Toolbar from '../../_components/toolbar/toolbar.component';\nimport UserList from '../../user/users.list';\nimport Spinner from '../../_components/spinner.component';\nimport BrandInformationBox from './brand.information.box.component';\n\n// Api\nimport useBrandApi from '../api/useBrandApi';\n\nconst BrandSettings = () => {\n const { t } = useTranslation(['labels']);\n const { brandhash } = useParams();\n const { hasPermissions, user } = useContext(UserContext);\n const history = useHistory();\n\n const { useFetchBrand } = useBrandApi();\n const { data, isLoading, isFetching, refetch } = useFetchBrand(brandhash ? brandhash : user.BrandHash);\n\n const [expanded, setExpanded] = useState('brandinfo');\n const handleChange = (panel) => (_, newExpanded) => setExpanded(newExpanded ? panel : false);\n\n const isFoodics = data?.Config?.IntegrationPartner === 1;\n\n if (isLoading) return ;\n\n return (\n \n }\n icon={}\n onClose={() => history.goBack()}\n />\n \n \n {\n hasPermissions(['passes:view']) &&\n \n }\n {\n hasPermissions(['coupons:view']) &&\n \n }\n {\n hasPermissions(['merchants:view']) &&\n \n }\n {\n hasPermissions(['users:view']) &&\n \n }\n \n \n )\n}\n\nexport default BrandSettings;","import React, { useState, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link as RouterLink, } from 'react-router-dom';\n\n// Components\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\n\n// MUI\nimport Avatar from '@mui/material/Avatar';\nimport Error from '../../_components/error.component';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Api\nimport useBrandApi from '../api/useBrandApi';\nimport WidgetToolbar from '../../_components/widgets/widget.toolbar.component';\nimport { Skeleton } from '@mui/material';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\nconst TopBrandsWidget = () => {\n const { hasPermissions } = useContext(UserContext);\n const { t } = useTranslation(['labels', 'errors']);\n\n const filters =\n [\n {\n label: t('labels:bysubcribers'),\n title: t('labels:bysubcribers'),\n value: 'subscriber',\n },\n {\n label: t('labels:bytransactions'),\n title: t('labels:bytransactions'),\n value: 'transaction',\n default: true,\n },\n ];\n\n const [filter, setFilter] = useState(filters.find(filter => filter.default));\n const { useFetchTopBrands } = useBrandApi();\n const { data, isFetching, isLoading, error, refetch } = useFetchTopBrands(filter.value);\n\n if (isLoading) return \n\n return (\n \n \n \n {\n error && !data &&\n \n }\n {\n data?.map((brand, key) =>\n \n \n \n {\n hasPermissions('client:view') ?\n {brand?.BrandName}\n :\n {brand?.BrandName}\n }\n {`${brand?.City || ''} ${brand?.Country}`}\n \n {brand?.Count}\n \n )\n }\n \n \n );\n}\n\nexport default TopBrandsWidget;","import React from 'react';\nimport { useHistory } from 'react-router';\n\n// Apex Chart\nimport ReactApexChart from 'react-apexcharts';\n\nconst options = (history) => ({\n chart: {\n type: 'treemap',\n width: '100%',\n height: '100%',\n toolbar: {\n show: false\n },\n zoom: {\n enabled: false,\n },\n events: {\n dataPointSelection: function (_, a, config) {\n const region = config.w.globals.initialSeries[config.seriesIndex].name;\n const country = config.w.globals.initialSeries[config.seriesIndex].data[config.dataPointIndex].x;\n\n const filters = [\n { id: 'Region', value: [region] },\n { id: 'Country', value: [country] }\n ];\n\n var cachedState = JSON.parse(localStorage.getItem('bw-live-preferences-clients-table'));\n\n filters.forEach(filter => {\n if (cachedState) {\n if (cachedState.filters.find(x => x.id === filter.id)) {\n var index = cachedState.filters.findIndex(x => x.id === filter.id);\n cachedState.filters[index].value = [...filter.value]\n }\n else cachedState.filters.push(filter);\n }\n else {\n cachedState = {\n filters: filters\n }\n }\n });\n\n localStorage.setItem('bw-live-preferences-clients-table', JSON.stringify(cachedState));\n\n return history.push('/clients')\n }\n },\n redrawOnParentResize: true,\n redrawOnWindowResize: true,\n animations: {\n enabled: false,\n },\n },\n series: [],\n legend: {\n show: false\n },\n});\n\nconst BrandsRegionsTreeMapChart = (props) => {\n const { series } = props;\n const history = useHistory();\n\n if (!series) return null;\n\n return (\n
    \n \n
    \n );\n}\n\nexport default BrandsRegionsTreeMapChart;","import React, { useContext } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\n// Components\nimport WidgetRow from '../../_components/widgets/widget.row.component'\nimport WidgetLabel from '../../_components/widgets/widget.label.component';\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\nimport BrandsRegionsTreeMapChart from \"../charts/brands.regions.treemap.chart\";\nimport WidgetToolbar from \"../../_components/widgets/widget.toolbar.component\";\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport Skeleton from '@mui/material/Skeleton';\n\n// Api\nimport useBrandApi from \"../api/useBrandApi\";\n\n// Contexts\nimport { UserContext } from \"../../_usercontext/user.context\";\n\nconst BrandsRegionsChartsWidget = () => {\n const { hasPermissions } = useContext(UserContext);\n const { t } = useTranslation(['labels']);\n const history = useHistory();\n\n const { useFetchBrandsRegionStats } = useBrandApi();\n const { data, isFetching, isLoading, refetch } = useFetchBrandsRegionStats();\n\n const gotoclients = hasPermissions('clients:view') ? () => history.push(`/clients`) : null;\n\n if (isLoading) return \n\n return (\n \n \n \n {\n data &&\n \n \n \n \n \n }\n \n {\n data &&\n \n }\n \n \n \n );\n}\n\nexport default BrandsRegionsChartsWidget;","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst WidgetLine = props => {\n const { label, value, color, secondvalue, secondcolor, hidefalsy } = props;\n\n if (hidefalsy && !(value)) return null;\n\n return (\n \n \n {label}\n \n \n {value?.toLocaleString()}\n \n {\n secondvalue &&\n \n {secondvalue?.toLocaleString()}\n \n }\n \n )\n}\n\nexport default WidgetLine\n","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\nconst WidgetColumn = props => {\n const { children } = props;\n\n return (\n \n {children}\n \n )\n}\n\nexport default WidgetColumn","import React from \"react\";\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Error from '../../_components/error.component';\nimport WidgetRow from '../../_components/widgets/widget.row.component'\nimport WidgetLine from '../../_components/widgets/widget.line.component';\nimport WidgetPaper from '../../_components/widgets/widget.paper.component';\nimport WidgetLabel from '../../_components/widgets/widget.label.component';\nimport WidgetColumn from '../../_components/widgets/widget.column.component';\nimport WidgetToolbar from \"../../_components/widgets/widget.toolbar.component\";\n\n// Query\nimport useMessageApi from '../api/useMessageApi';\nimport { Skeleton } from \"@mui/material\";\n\nconst MessagesStatsMediumWidget = (props) => {\n const { t } = useTranslation(['labels', 'errors']);\n const { brandhash } = props;\n\n const { useFetchMessageStats } = useMessageApi();\n const { data, isFetching, isLoading, error, refetch } = useFetchMessageStats(brandhash);\n\n if (isLoading) return \n\n return (\n \n \n {\n error && !data &&\n \n }\n\n {\n data &&\n <>\n \n \n \n \n \n \n \n \n }\n \n );\n}\n\nexport default MessagesStatsMediumWidget;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport Dashboard from '@mui/icons-material/Dashboard';\n\n// Components\nimport ToolBar from '../_components/toolbar/toolbar.component';\nimport TopBrandsWidget from '../brand/widgets/top.brands.widget';\nimport BrandsRegionsChartsWidget from '../brand/widgets/brands.regions.chart.widget';\nimport MessagesStatsMediumWidget from '../message/widgets/messages.stats.medium.widget';\nimport SubscribersStatsLargeWidget from '../subscriber/widgets/subscribers.stats.large.widget';\nimport TransactionsStatsLargeWidget from '../transaction/widgets/transactions.stats.large.widget';\n\nconst AdminDashboard = () => {\n const { t } = useTranslation(['labels']);\n\n return (\n \n }\n px\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 AdminDashboard;","import React, { useContext, useState } from 'react';\nimport { Redirect } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// MUI\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport Tabs from '@mui/material/Tabs';\nimport Stack from '@mui/material/Stack';\nimport { useMediaQuery } from '@mui/material';\n\n// Components\nimport BrandNavBar from '../brand/brand.navbar.component';\nimport Spinner from \"../_components/spinner.component\";\nimport MessagesStatsLargeWidget from '../message/widgets/messages.stats.large.widget';\nimport SubscribersStatsLargeWidget from '../subscriber/widgets/subscribers.stats.large.widget';\nimport TransactionsStatsLargeWidget from '../transaction/widgets/transactions.stats.large.widget';\n\n// Api\nimport useBrandApi from '../brand/api/useBrandApi';\n\nconst TabPanel = ({ value, hasPermissions }) => {\n if (!hasPermissions(['transactions:viewchart'])) return ;\n\n else {\n const component = {\n 0: ,\n 1: ,\n }[value];\n\n return component;\n }\n};\n\nconst BrandDashboard = () => {\n const { t } = useTranslation(['labels']);\n const { user, hasPermissions } = useContext(UserContext);\n const matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\n const { useFetchBrand } = useBrandApi();\n const { data, isLoading, isError } = useFetchBrand(user.BrandHash);\n\n const [tabValue, setTabValue] = useState(0);\n const handleChange = (event, newValue) => setTabValue(newValue);\n\n // TODO: Check the error type. We must send to 404 page only if the user is not authorized for the given brand\n if (isError)\n return \n\n if (isLoading)\n return \n\n // If we do not have brand data return nothing\n // TODO: we will show loading skeleton while waiting for brand data to be fetched\n if (!data)\n return ;\n\n return (\n \n \n \n \n \n {\n hasPermissions(['transactions:viewchart']) &&\n \n }\n \n \n \n \n \n \n {!matches &&\n \n \n \n \n \n }\n \n \n );\n}\n\nexport default BrandDashboard;","import React, { useContext } from 'react';\n\n// Components\nimport AdminDashboard from '../admin.dashboard';\nimport BrandDashboard from '../brand.dashboard';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\nconst Dashboard = () => {\n const { user } = useContext(UserContext);\n\n if (user.UserType === 1 || user.UserType === 8)\n return \n\n return \n}\n\nexport default Dashboard;","import React from 'react';\n\nconst Insights = () => {\n return ('Insights');\n}\n\nexport default React.memo(Insights);","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n//Api\nimport { get, post, put } from '../../_api/api';\n\nconst useFinanceApi = () => {\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n const useFetchSubscriptions = () => useQuery('subscriptions', () => get('/Finance/subscription'));\n const useFetchInstallments = () => useQuery('installments', () => get('/Finance/installment'));\n const useFetchInvoiceItems = () => useQuery('invoiceitems', () => get('/Finance/invoiceitems'));\n const useFetchInvoices = () => useQuery('invoices', () => get('/Finance/invoice'));\n const useFetchPayments = () => useQuery('payments', () => get('/Finance/payment'));\n const useFetchSales = () => useQuery('sales', () => get('/Finance/sale'));\n const useConvertCurrency = () => useQuery('currency-list', () => get('https://api.currencyfreaks.com/latest?apikey=3847b0ff2a434f59896d31ae61f63b87'));\n\n const useCreatePayment = useMutation(newPayment => post('/Finance/payment', newPayment),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:paymentcreated'), { variant: 'success' });\n queryClient.invalidateQueries('payments', { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatepayment')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdatePayment = useMutation(Payment => put('/Finance/payment', Payment),\n {\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:paymentupdated'), { variant: 'success' });\n queryClient.invalidateQueries('payments', { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatepayment')} - ${error.status}`, { variant: 'error' })\n });\n\n const useCreateSale = useMutation(newSale => post('/Finance/sale', newSale),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:salecreated'), { variant: 'success' });\n queryClient.invalidateQueries('sales', { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatesale')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateSale = useMutation(Sale => put('/Finance/sale', Sale),\n {\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:saleupdated'), { variant: 'success' });\n queryClient.invalidateQueries('sales', { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatesale')} - ${error.status}`, { variant: 'error' })\n });\n\n const useCreateInvoice = useMutation(newInvoice => post('/Finance/invoice', newInvoice),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:invoicecreated'), { variant: 'success' });\n queryClient.invalidateQueries('invoices', { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreateinvoice')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateInvoice = useMutation(Invoice => put('/Finance/invoice', Invoice),\n {\n onSuccess: (data) => {\n if (data) {\n enqueueSnackbar(t('prompts:invoiceupdated'), { variant: 'success' });\n queryClient.invalidateQueries('invoices', { refetchInactive: true });\n }\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdateinvoice')} - ${error.status}`, { variant: 'error' })\n });\n return {\n useFetchSubscriptions,\n useFetchInstallments,\n useFetchInvoiceItems,\n useFetchInvoices,\n useFetchPayments,\n useFetchSales,\n useConvertCurrency,\n useCreatePayment,\n useUpdatePayment,\n useCreateSale,\n useUpdateSale,\n useCreateInvoice,\n useUpdateInvoice\n }\n}\n\nexport default useFinanceApi;\n","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst SubscriptionsTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchSales } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchSales();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:type'),\n accessor: (row) => row.SubscriptionId && t(`enums:subscriptions:${row.SubscriptionId}`),\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:scope'),\n accessor: (row) => row.SubscriptionScopeId && t(`enums:subscriptionscope:${row.SubscriptionScopeId}`),\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableFilters: true,\n },\n {\n Header: t('labels:subscriptiontype'),\n accessor: (row) => row.SubscriptionTypeId && t(`enums:subscriptiontype:${row.SubscriptionTypeId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableFilters: true,\n },\n {\n Header: t('labels:listprice'),\n id: 'ListPrice',\n accessor: 'ListPrice',\n width: 120,\n minWidth: 120,\n maxWidth: 120,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:listpricecurrency'),\n id: 'ListPriceCurrencyId',\n accessor: (row) => row.ListPriceCurrencyId && t(`enums:currency:${row.ListPriceCurrencyId\n }`),\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:price'),\n id: 'Price',\n accessor: 'Price',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:usdprice'),\n id: 'UsdPrice',\n accessor: 'UsdPrice',\n width: 120,\n minWidth: 120,\n maxWidth: 120,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:billedat'),\n id: 'BilledAt',\n accessor: (row) => row.BilledAt && moment(row.BilledAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:finishedat'),\n id: 'FinishedAt',\n accessor: (row) => row.FinishedAt && moment(row.FinishedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:leadcreatedat'),\n id: 'LeadCreatedAt',\n accessor: (row) => row.LeadCreatedAt && moment(row.LeadCreatedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:notifymeat'),\n id: 'NotifyMeAt',\n accessor: (row) => row.NotifyMeAt && moment(row.NotifyMeAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:payedat'),\n id: 'PayedAt',\n accessor: (row) => row.PayedAt && moment(row.PayedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:renewsat'),\n id: 'RenewsAt',\n accessor: (row) => row.RenewsAt && moment(row.RenewsAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:startedat'),\n id: 'StartedAt',\n accessor: (row) => row.StartedAt && moment(row.StartedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default SubscriptionsTable;","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst InvoicesTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchInvoices } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchInvoices();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:invoicenumber'),\n accessor: 'InvoiceNumber',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:brand'),\n accessor: 'BrandId',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:billto'),\n accessor: 'BillTo',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:address'),\n accessor: 'Address',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:cashierpartner'),\n accessor: (row) => row.CashierPartnerId ? t(`enums:cashierpartners:${row.CashierPartnerId}`) : 'None',\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:invoicecustomertype'),\n accessor: (row) => row.CustomerTypeId && t(`enums:invoicecustomertype:${row.CustomerTypeId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:balance'),\n id: 'Balance',\n accessor: 'Balance',\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:usdprice'),\n id: 'UsdPrice',\n accessor: 'UsdPrice',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:vatpercent'),\n id: 'VatPercent',\n accessor: 'VatPercent',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:paymentmethod'),\n id: 'PaymentMethod',\n accessor: (row) => row.PaymentMethod && t(`enums:paymentmethod:${row.PaymentMethod}`),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:issuedat'),\n id: 'IssuedAt',\n accessor: (row) => row.IssuedAt && moment(row.IssuedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:dueat'),\n id: 'DueAt',\n accessor: (row) => row.DueAt && moment(row.DueAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default InvoicesTable;","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst PaymentsTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchPayments } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchPayments();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:accounttype'),\n accessor: (row) => row.AccountId && t(`enums:financeaccounttype:${row.AccountId}`),\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:invoice'),\n accessor: 'InvoiceId',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:installment'),\n accessor: 'InstallmentId',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:brand'),\n accessor: 'BrandId',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:exchangerate'),\n accessor: 'ExchangeRate',\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableFilters: true,\n },\n {\n Header: t('labels:expense'),\n accessor: 'Expense',\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableFilters: true,\n },\n {\n Header: t('labels:expensecurrency'),\n accessor: (row) => row.ExpenseCurrencyId && t(`enums:currency:${row.ExpenseCurrencyId}`),\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:usdamount'),\n id: 'UsdAmount',\n accessor: 'UsdAmount',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:usdexpense'),\n id: 'UsdExpense',\n accessor: 'UsdExpense',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default PaymentsTable;","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst InvoiceItemsTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchInvoiceItems } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchInvoiceItems();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:invoice'),\n accessor: 'InvoiceId',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableFilters: true,\n },\n {\n Header: t('labels:subscriptiontype'),\n accessor: (row) => row.SubscriptionId && t(`enums:subscriptiontype:${row.SubscriptionId}`),\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:quantity'),\n accessor: 'Quantity',\n width: 100,\n minWidth: 100,\n maxWidth: 100,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:listprice'),\n id: 'ListPrice',\n accessor: 'ListPrice',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:price'),\n id: 'Price',\n accessor: 'Price',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:usdprice'),\n id: 'UsdPrice',\n accessor: 'UsdPrice',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:vatpercent'),\n id: 'VatPercent',\n accessor: 'VatPercent',\n width: 160,\n minWidth: 160,\n maxWidth: 160,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default InvoiceItemsTable;","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst InstallmentsTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchInstallments } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchInstallments();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:brand'),\n accessor: 'BrandId',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:sale'),\n accessor: 'SaleId',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:balance'),\n id: 'Balance',\n accessor: 'Balance',\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:paymentmethod'),\n id: 'PaymentMethod',\n accessor: (row) => row.PaymentMethod && t(`enums:paymentmethod:${row.PaymentMethod}`),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:dueat'),\n id: 'DueAt',\n accessor: (row) => row.DueAt && moment(row.DueAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default InstallmentsTable;","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst SubscriptionsTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchSubscriptions } = useFinanceApi();\n const { data, isFetching, isLoading, refetch } = useFetchSubscriptions();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: t('labels:subscriptionname'),\n accessor: 'Name',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:currency'),\n accessor: (row) => row.CurrencyId && t(`enums:currency:${row.CurrencyId}`),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:price'),\n id: 'Price',\n accessor: 'Price',\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.DeCreatedAtletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n}\n\nexport default SubscriptionsTable;","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useBrandApi from './api/useBrandApi';\n\nconst BrandSelect = (props) => {\n const { size, select = 'Hash', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const { useFetchBrands } = useBrandApi();\n const { data, isFetching } = useFetchBrands();\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option?.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>
  • {option.Name}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default BrandSelect;","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport DateTimePicker from '@mui/lab/DateTimePicker';\nimport DateAdapter from '@mui/lab/AdapterMoment';\n\n// Material UI Icons\nimport CancelIcon from '@mui/icons-material/Cancel';\n\n// Pages and Components\nimport BrandSelect from '../../brand/brand.select.component';\nimport NumberField from '../../_components/number.textfield.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\nimport CurrencySelect from '../../settings/currency/currency.select.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\nconst InvoiceForm = (props) => {\n const { invoice, open, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { values, valid, setValues, setValue, useTextFieldInput, useSelectableFieldInput, useDatePickerFieldInput } = useForm(invoice || { InvoicedFrom: 2 });\n\n const newinvoice = !invoice;\n\n const actiontitle = (newinvoice ? t('labels:create') : t('labels:update'));\n const dialogtitle = (newinvoice ? t('labels:newinvoice') : invoice?.Name);\n\n const { useConvertCurrency, useCreateInvoice, useUpdateInvoice } = useFinanceApi();\n const { data: convertedUSD, isError } = useConvertCurrency();\n const { isLoading: creating, mutate: createInvoice } = useCreateInvoice;\n const { isLoading: updating, mutate: updateInvoice } = useUpdateInvoice;\n\n const disabled = creating || updating;\n\n const onSubmit = () => {\n newinvoice\n ? createInvoice(values, { onSuccess: onClose })\n : updateInvoice(values, { onSuccess: onClose });\n };\n\n useEffect(() => {\n if (values.Balance && values.CurrencyId) {\n setValues(prev => ({ ...prev, UsdPrice: (values.Balance / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2) }));\n }\n }, [convertedUSD, setValues, t, values.Balance, values.CurrencyId]);\n\n const form = {\n Brand: {\n Name: 'Brand',\n Label: t('labels:brand'),\n Required: true,\n },\n BillTo: {\n Name: 'BillTo',\n Label: t('labels:billto'),\n Required: true,\n },\n InvoiceNumber: {\n Name: 'InvoiceNumber',\n Label: t('labels:invoicenumber'),\n Required: true,\n },\n TaxNo: {\n Name: 'TaxNo',\n Label: t('labels:taxno'),\n Required: true,\n },\n Address: {\n Name: 'Address',\n Label: t('labels:address'),\n Required: true,\n },\n Notes: {\n Name: 'Notes',\n Label: t('labels:notes'),\n Required: true,\n },\n Balance: {\n Name: 'Balance',\n Label: t('labels:balance'),\n Required: true\n },\n CurrencyId: {\n Name: 'CurrencyId',\n Label: t('labels:currency'),\n Required: true\n },\n VatPercent: {\n Name: 'VatPercent',\n Label: t('labels:vatpercent'),\n Required: true\n },\n Vat: {\n Name: 'Vat',\n Label: t('labels:vat'),\n Required: true\n },\n PaymentMethod: {\n Name: 'PaymentMethod',\n Label: t('labels:paymentmethod'),\n Required: true\n },\n InvoiceMethod: {\n Name: 'InvoiceMethod',\n Label: t('labels:invoicemethod'),\n Required: true\n },\n IssuedAt: {\n Name: 'IssuedAt',\n Label: t('labels:issuedat'),\n Required: true\n },\n DueAt: {\n Name: 'DueAt',\n Label: t('labels:dueat'),\n Required: true\n },\n CashierPartnerId: {\n Name: 'CashierPartnerId',\n Label: t('labels:cashierpartner'),\n Required: true\n },\n CustomerTypeId: {\n Name: 'CustomerTypeId',\n Label: t('labels:invoicecustomertype'),\n Required: true\n },\n }\n\n return (\n \n {dialogtitle}\n \n \n \n } />\n \n \n \n } />\n } />\n \n \n \n \n } />\n } />\n {\n (values.Balance && convertedUSD && !isError) &&\n \n {`${(values.Balance / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2)} USD`}\n \n }\n \n \n \n \n \n \n \n \n {[1, 2, 3, 4, 5].map(paymentmethod => (\n \n ))}\n \n } />\n \n \n {[1, 2, 3, 4, 5].map(cashierpartner => (\n \n ))}\n \n } />\n \n \n {[1, 2].map(customertype => (\n \n ))}\n \n } />\n \n \n \n setValue('IssuedAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.IssuedAt)}\n />\n setValue('DueAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.DueAt)}\n />\n \n \n \n \n \n \n {actiontitle}\n \n \n )\n}\n\nexport default InvoiceForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MaterialUI\nimport MenuItem from '@mui/material/MenuItem';\nimport Button from '@mui/material/Button';\n\n// Material UI Icons\nimport ReceiptIcon from '@mui/icons-material/Receipt';\n\n// Components\nimport InvoiceForm from '../invoice/invoice.form';\nimport TooltipIconButton from '../../_components/buttons/tooltip.icon.button';\n\nconst FinanceNewInvoiceAction = props => {\n const { type, size, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Select a component, MenuItem, Button or TooltipIconButton, according to type\n const component = {\n 'menu': {t('actions:newinvoice')},\n 'button': ,\n 'iconbutton': } />\n }[type];\n\n\n return (\n <>\n {component}\n \n \n );\n}\n\nexport default FinanceNewInvoiceAction;","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst InvoiceSelect = (props) => {\n const { size, select = 'Hash', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const { useFetchInvoices } = useFinanceApi();\n const { data, isFetching } = useFetchInvoices();\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => `${option?.InvoiceNumber} - ${option?.BillTo}` || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>
  • {`${option.InvoiceNumber} - ${option.BillTo}`}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default InvoiceSelect;","import React from 'react';\nimport { find } from 'lodash';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst InstallmentSelect = (props) => {\n const { size, select = 'Hash', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['labels', 'enums']);\n\n const { useFetchInstallments } = useFinanceApi();\n const { data, isFetching } = useFetchInstallments();\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => `${option.BrandId} - ${option.Balance} ${t(`enums:currency:${option.CurrencyId}`)}` || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>
  • {`${option.BrandId} - ${option.Balance} ${t(`enums:currency:${option.CurrencyId}`)}`}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default InstallmentSelect;","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\n\n// Pages and Components\nimport LabeledInputField from '../../_components/labeled.input.component';\nimport BrandSelect from '../../brand/brand.select.component';\nimport NumberField from '../../_components/number.textfield.component';\nimport CurrencySelect from '../../settings/currency/currency.select.component';\nimport InvoiceSelect from '../invoice/invoice.select.component';\nimport InstallmentSelect from '../installment/installment.select.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\nconst PaymentForm = (props) => {\n const { payment, open, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { values, valid, setValues, useTextFieldInput, useSelectableFieldInput } = useForm(payment || {}); // useForm hook takes care of all validation and state management for forms\n\n const newpayment = !payment;\n\n const actiontitle = (newpayment ? t('labels:create') : t('labels:update')); // Title of the action button on top right\n const dialogtitle = (newpayment ? t('labels:newpayment') : payment?.Name); // Title of the dialog on top left\n\n const { useConvertCurrency, useCreatePayment, useUpdatePayment } = useFinanceApi();\n const { data: convertedUSD, isError } = useConvertCurrency();\n const { isLoading: creating, mutate: createPayment } = useCreatePayment;\n const { isLoading: updating, mutate: updatePayment } = useUpdatePayment;\n\n const disabled = creating || updating;\n\n const onSubmit = () => {\n newpayment\n ? createPayment(values, { onSuccess: onClose })\n : updatePayment(values, { onSuccess: onClose });\n };\n\n // UseEffect to set USDAmount and ExpenseUSDAmount when amount and expense is changed\n useEffect(() => {\n if (values.Amount && values.CurrencyId) {\n setValues(prev => ({ ...prev, UsdAmount: (values.Amount / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2) }));\n }\n if (values.Expense && values.ExpenseCurrencyId) {\n setValues(prev => ({ ...prev, UsdExpense: (values.Amount / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2) }));\n }\n }, [convertedUSD, setValues, t, values.Amount, values.Expense, values.CurrencyId, values.ExpenseCurrencyId]);\n\n const form = {\n Brand: {\n Name: 'Brand',\n Label: t('labels:brand'),\n Required: true,\n },\n Invoice: {\n Name: 'Invoice',\n Label: t('labels:invoice'),\n Required: true,\n },\n Installment: {\n Name: 'Installment',\n Label: t('labels:installment'),\n Required: true,\n },\n Amount: {\n Name: 'Amount',\n Label: t('labels:amount'),\n Required: true\n },\n CurrencyId: {\n Name: 'CurrencyId',\n Label: t('labels:currency'),\n Required: true\n },\n USDAmount: {\n Name: 'UsdAmount',\n Label: t('labels:usdamount'),\n Required: true\n },\n ExchangeRate: {\n Name: 'ExchangeRate',\n Label: t('labels:exchangerate'),\n Required: true\n },\n FromAccount: {\n Name: 'FromAccount',\n Label: t('labels:fromaccount'),\n Required: true\n },\n AccountId: {\n Name: 'AccountId',\n Label: t('labels:accounttype'),\n Required: true\n },\n Expense: {\n Name: 'Expense',\n Label: t('labels:expense'),\n Required: true\n },\n ExpenseCurrencyId: {\n Name: 'ExpenseCurrencyId',\n Label: t('labels:expensecurrency'),\n Required: true\n },\n USDExpense: {\n Name: 'UsdExpense',\n Label: t('labels:usdexpense'),\n Required: true\n }\n }\n\n return (\n \n {dialogtitle}\n \n \n } />\n } />\n } />\n \n \n {[1, 2, 3, 4, 5, 6, 7].map(accounttype => (\n \n ))}\n \n } />\n } />\n \n } />\n } />\n {\n (values.Amount && convertedUSD && !isError) &&\n \n {`${(values.Amount / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2)} USD`}\n \n }\n \n \n \n } />\n {\n (values.Expense && convertedUSD && !isError) &&\n \n {`${(values.Expense / convertedUSD?.rates[t(`enums:currencycodes:${values.ExpenseCurrencyId}`)]).toFixed(2)} USD`}\n \n }\n \n \n \n \n \n {actiontitle}\n \n \n )\n}\n\nexport default PaymentForm;\n\n/*\n */","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MaterialUI\nimport MenuItem from '@mui/material/MenuItem';\nimport Button from '@mui/material/Button';\n\n// Material UI Icons\nimport AccountBalanceIcon from '@mui/icons-material/AccountBalance';\n\n// Components\nimport PaymentForm from '../payment/payment.form';\nimport TooltipIconButton from '../../_components/buttons/tooltip.icon.button';\n\nconst FinanceNewPaymentAction = props => {\n const { type, size, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Select a component, MenuItem, Button or TooltipIconButton, according to type\n const component = {\n 'menu': {t('actions:newpayment')},\n 'button': ,\n 'iconbutton': } />\n }[type];\n\n\n return (\n <>\n {component}\n \n \n );\n}\n\nexport default FinanceNewPaymentAction;","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\nconst SubscriptionSelect = (props) => {\n const { size, select = 'Hash', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const { useFetchSubscriptions } = useFinanceApi();\n const { data, isFetching } = useFetchSubscriptions();\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.Id === value?.Id}\n getOptionLabel={(option) => option.Name || ''}\n options={data || []}\n loading={isFetching}\n value={getValue(value)}\n onChange={(_, value) => onChange(value?.[select])}\n renderOption={(props, option) =>
  • {option.Name}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n )\n}\n\nexport default SubscriptionSelect;","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport DateTimePicker from '@mui/lab/DateTimePicker';\nimport DateAdapter from '@mui/lab/AdapterMoment';\n\n// Material UI Icons\nimport CancelIcon from '@mui/icons-material/Cancel';\n\n// Pages and Components\nimport BrandSelect from '../../brand/brand.select.component';\nimport SubscriptionSelect from '../subscription/subscription.select.component';\nimport NumberField from '../../_components/number.textfield.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\nimport CurrencySelect from '../../settings/currency/currency.select.component';\n\n// Api\nimport useFinanceApi from '../api/useFinanceApi';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\nconst SaleForm = (props) => {\n const { sale, open, onClose } = props;\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { values, valid, setValues, setValue, useTextFieldInput, useSelectableFieldInput, useDatePickerFieldInput } = useForm(sale || {});\n\n const newsale = !sale;\n\n const actiontitle = (newsale ? t('labels:create') : t('labels:update'));\n const dialogtitle = (newsale ? t('labels:newsale') : sale?.Name);\n\n const { useConvertCurrency, useCreateSale, useUpdateSale } = useFinanceApi();\n const { data: convertedUSD, isError } = useConvertCurrency();\n const { isLoading: creating, mutate: createSale } = useCreateSale;\n const { isLoading: updating, mutate: updateSale } = useUpdateSale;\n\n const disabled = creating || updating;\n\n const onSubmit = () => {\n newsale\n ? createSale(values, { onSuccess: onClose })\n : updateSale(values, { onSuccess: onClose });\n };\n\n useEffect(() => {\n if (values.Price && values.CurrencyId) {\n setValues(prev => ({ ...prev, UsdPrice: (values.Price / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2) }));\n }\n }, [convertedUSD, setValues, t, values.Price, values.CurrencyId]);\n\n const form = {\n Brand: {\n Name: 'Brand',\n Label: t('labels:brand'),\n Required: true,\n },\n Subscription: {\n Name: 'Subscription',\n Label: t('labels:subscriptionname'),\n Required: true,\n },\n Price: {\n Name: 'Price',\n Label: t('labels:price'),\n Required: true\n },\n CurrencyId: {\n Name: 'CurrencyId',\n Label: t('labels:currency'),\n Required: true\n },\n ListPrice: {\n Name: 'ListPrice',\n Label: t('labels:listprice'),\n Required: false\n },\n ListPriceCurrencyId: {\n Name: 'ListPriceCurrencyId',\n Label: t('labels:listpricecurrency'),\n Required: false\n },\n SubscriptionScopeId: {\n Name: 'SubscriptionScopeId',\n Label: t('labels:scope'),\n Required: true\n },\n SubscriptionTypeId: {\n Name: 'SubscriptionTypeId',\n Label: t('labels:subscriptiontype'),\n Required: true\n },\n LeadCreatedAt: {\n Name: 'LeadCreatedAt',\n Label: t('labels:leadcreatedat'),\n Required: true\n },\n StartedAt: {\n Name: 'StartedAt',\n Label: t('labels:startedat'),\n Required: true\n },\n RenewsAt: {\n Name: 'RenewsAt',\n Label: t('labels:renewsat'),\n Required: true\n },\n NotifyMeAt: {\n Name: 'NotifyMeAt',\n Label: t('labels:notifymeat'),\n Required: true\n },\n FinishedAt: {\n Name: 'FinishedAt',\n Label: t('labels:finishedat'),\n Required: true\n },\n BilledAt: {\n Name: 'BilledAt',\n Label: t('labels:billedat'),\n Required: true\n },\n PayedAt: {\n Name: 'PayedAt',\n Label: t('labels:payedat'),\n Required: true\n },\n }\n\n return (\n \n {dialogtitle}\n \n \n } />\n } />\n \n } />\n } />\n \n \n } />\n } />\n {\n (values.Price && convertedUSD && !isError) &&\n \n {`${(values.Price / convertedUSD?.rates[t(`enums:currencycodes:${values.CurrencyId}`)]).toFixed(2)} USD`}\n \n }\n \n \n \n \n {[1, 2, 3, 4].map(subscriptionscope => (\n \n ))}\n \n } />\n \n \n {[1, 2, 3].map(subscriptiontype => (\n \n ))}\n \n } />\n \n \n setValue('LeadCreatedAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.LeadCreatedAt)}\n />\n setValue('StartedAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.StartedAt)}\n />\n setValue('RenewsAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.RenewsAt)}\n />\n setValue('NotifyMeAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.NotifyMeAt)}\n />\n setValue('FinishedAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.FinishedAt)}\n />\n setValue('BilledAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.BilledAt)}\n />\n setValue('PayedAt', null)} > ) }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={(params) => }\n {...useDatePickerFieldInput(form.PayedAt)}\n />\n \n \n \n \n \n {actiontitle}\n \n \n )\n}\n\nexport default SaleForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MaterialUI\nimport MenuItem from '@mui/material/MenuItem';\nimport Button from '@mui/material/Button';\n\n// Material UI Icons\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\n\n// Components\nimport SalesForm from '../sale/sale.form';\nimport TooltipIconButton from '../../_components/buttons/tooltip.icon.button';\n\nconst FinanceNewSalesAction = props => {\n const { type, size, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n // Select a component, MenuItem, Button or TooltipIconButton, according to type\n const component = {\n 'menu': {t('actions:newsales')},\n 'button': ,\n 'iconbutton': } />\n }[type];\n\n\n return (\n <>\n {component}\n \n \n );\n}\n\nexport default FinanceNewSalesAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport AttachMoneyIcon from '@mui/icons-material/AttachMoney';\n\n// Components\nimport SalesTable from '../sale/finance.sales.table';\nimport InvoicesTable from '../invoice/finance.invoices.table';\nimport PaymentsTable from '../payment/finance.payments.table';\nimport InvoiceItemsTable from '../invoiceitem/finance.invoiceitems.table';\nimport InstallmentsTable from '../installment/finance.installments.table';\nimport SubscriptionsTable from '../subscription/finance.subscriptions.table';\nimport FinanceNewInvoiceAction from '../actions/finance.newinvoice.action';\nimport FinanceNewPaymentAction from '../actions/finance.payment.action';\nimport FinanceNewSalesAction from '../actions/finance.newsales.action';\nimport ToolBar from '../../_components/toolbar/toolbar.component';\n\nconst TabPanel = ({ selectedTab }) => {\n return (\n \n {(() => {\n switch (selectedTab) {\n case 0: return \n case 1: return \n case 2: return \n case 3: return \n case 4: return \n case 5: return \n default: return null;\n }\n })()}\n \n );\n}\n\nconst Finances = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const [selectedTab, setSelectedTab] = useState(0);\n const selectTab = (_, newValue) => setSelectedTab(newValue);\n\n return (\n \n }\n addAction={\n \n \n \n \n \n }\n px\n localization={{\n search: t('labels:search'),\n refetch: t('labels:refresh'),\n addnew: t('actions:newclient'),\n }}\n />\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default Finances;","import React, { useContext } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material UI\nimport Alert from '@mui/material/Alert';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport Paper from '@mui/material/Paper';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\n\n// Hooks\nimport useForm from '../../_forms/useForm';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\nconst Login = () => {\n const { t } = useTranslation(['login', 'error', 'actions', 'enums', 'labels', 'prompts', 'returncodes']);\n const { user, signIn, signingIn, signinError, fetchingUserInfo, fetchUserError } = useContext(UserContext);\n const { values, valid, validateForm, useTextFieldInput } = useForm();\n\n const error = signinError || fetchUserError;\n\n const loginform = {\n Username: {\n Name: 'Username',\n Label: t('login:username'),\n Required: true,\n Type: 'text',\n ValidationText: 'Lütfen kullanıcı adınızı girin',\n HelperText: '',\n },\n Password: {\n Name: 'Password',\n Label: t('login:password'),\n Required: true,\n Type: 'text',\n ValidationText: 'Lütfen şifrenizi girin',\n HelperText: '',\n }\n }\n\n const usernameformfield = useTextFieldInput(loginform['Username']);\n const passwordformfield = useTextFieldInput(loginform['Password']);\n\n const handleSignIn = () => {\n validateForm(true);\n if (valid) signIn(values);\n }\n\n const handleKeyDown = (event) => (event.keyCode === 13) && handleSignIn();\n\n if (user) return \n\n return (\n \n \n BrandWallet Logo\n \n \n \n {t('login:signin')}\n \n \n {\n (error) &&\n {t(`error:${error.message}`)} \n }\n \n \n \n );\n}\n\nexport default Login;","import React, { useState } from 'react';\n\n// MUI\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport AppBar from '@mui/material/AppBar';\nimport Box from '@mui/material/Box';\nimport Drawer from '@mui/material/Drawer';\nimport IconButton from '@mui/material/IconButton';\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport MenuIcon from '@mui/icons-material/Menu';\n\n// Components\nimport PageNavigator from './page.navigator.action.component';\nimport UserAvatar from '../useravatar.component';\n\nconst HamburgerMenu = ({ children }) => {\n const [drawerOpen, setDrawerOpen] = useState(false);\n const toggleDrawer = () => setDrawerOpen(!drawerOpen);\n\n return (\n <>\n \n \n \n \n \n \n {children}\n \n \n \n \n \n );\n}\n\nconst ListMenu = ({ children }) =>\n \n {children}\n \n\n// TODO: Add in future\n//\n\nconst Pages = ({ variant }) =>\n <>\n \n \n \n \n \n\nconst NavBar = () => {\n const largemedia = useMediaQuery((theme) => theme.breakpoints.up('lg'));\n\n return (\n \n \n {\n largemedia && BW\n }\n {\n largemedia\n ? \n : \n }\n {\n largemedia &&\n \n }\n {\n !largemedia && BW\n }\n \n \n );\n}\n\nexport default NavBar;","import React, { useContext } from \"react\";\nimport { useParams, Redirect } from \"react-router-dom\";\n\n// MUI\nimport Stack from '@mui/material/Stack';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// Components\nimport NavBar from \"../_components/navigation/navbar/navbar.component\";\n\nconst Page = ({ children }) => {\n const { user } = useContext(UserContext);\n const { brandhash } = useParams();\n\n // We have a System Manager, return with a side Nav Bar\n // If we have a brandhash in the path, this means we need a brand navigator at top, so we wrap everything in BrandPage\n if (user.UserType === 1 || user.UserType === 8)\n return (\n \n \n \n {children}\n \n \n );\n\n // The user must have a BrandHash value, if she is not a System Manager\n // If not redirect to 404 page\n if (!(user.BrandHash))\n return \n\n // If the user is not a System Manager, we do not need a hash in the url\n if (brandhash)\n return \n\n // We do not have a System Manager and the hash values of the user and the path are equal return children\n return (\n \n {children}\n \n )\n}\n\nexport default Page;","import React, { useState } from 'react';\nimport { useParams, Redirect } from \"react-router-dom\";\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\n\n// Components\nimport BrandNavBar from '../../brand/brand.navbar.component';\nimport MessagesStatsLargeWidget from '../../message/widgets/messages.stats.large.widget';\nimport SubscribersStatsLargeWidget from '../../subscriber/widgets/subscribers.stats.large.widget';\nimport TransactionsStatsLargeWidget from '../../transaction/widgets/transactions.stats.large.widget';\nimport Spinner from \"../../_components/spinner.component\";\n\n// Api\nimport usePassApi from '../api/usePassApi';\n\nconst TabPanel = ({ value, passhash }) => {\n const component = {\n 0: ,\n 1: \n }[value];\n\n return component;\n}\n\nconst Pass = () => {\n const { brandhash, passhash } = useParams();\n const { t } = useTranslation(['labels']);\n\n const matches = useMediaQuery(theme => theme.breakpoints.down('lg'));\n\n const { useFetchPass } = usePassApi();\n const { isLoading, isError } = useFetchPass(passhash);\n\n const [tabValue, setTabValue] = useState(0);\n const handleChange = (event, newValue) => setTabValue(newValue);\n\n // TODO: Check the error type. We must send to 404 page only if the user is not authorized for the given brand\n if (isError)\n return \n\n if (isLoading)\n return \n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {\n !matches &&\n \n \n \n \n \n }\n \n \n );\n}\nexport default Pass;","import React from 'react';\nimport { useHistory } from 'react-router';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport PassPreview from './pass.info.preview';\n\nconst PassCard = (props) => {\n const { pass, button } = props;\n const history = useHistory();\n\n const design = pass?.Designs[0]?.Designs[0];\n return (\n button && history.push(`${pass?.BrandHash}/pass/${pass?.Hash}`)}\n >\n {\n pass?.Designs\n ? \n : {pass.Name}\n }\n \n );\n}\n\nexport default PassCard;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Box from '@mui/material/Box';\nimport { LoadingButton } from '@mui/lab';\n\n// Pages and Components\nimport BrandSelect from '../brand/brand.select.component';\nimport LabeledInputField from '../_components/labeled.input.component';\nimport LabelSwitch from '../_components/label.switch.component';\n\n// Api\nimport usePassApi from './api/usePassApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst PassCreateForm = (props) => {\n const { handleNext, setError } = props;\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { values, valid, validating, useTextFieldInput, useCheckFieldInput, useSelectableFieldInput } = useForm({ CreateBarcode: true });\n\n const { useCreatePass } = usePassApi();\n const { isLoading: creating, mutate: createPass } = useCreatePass;\n\n const form = {\n Brand: {\n Name: 'Brand',\n Label: t('labels:brand'),\n Required: true,\n Type: 'text',\n },\n PassName: {\n Name: 'Name',\n Label: t('labels:passname'),\n Required: true,\n Type: 'text',\n },\n Description: {\n Name: 'Description',\n Label: t('labels:description'),\n Required: false,\n Type: 'text',\n },\n PassTypeIdentifier: {\n Name: 'PassTypeIdentifier',\n Label: t('labels:certificate'),\n HelperText: \"Becarefull, certificate of the pass must be correct.\",\n Required: true,\n Type: 'text',\n },\n CreateBarcode: {\n Name: 'CreateBarcode',\n Label: 'Create Barcode',\n Required: false,\n }\n }\n\n const onSubmit = () => createPass(\n values,\n {\n onSuccess: (data) => handleNext(data.Pass, data.Brand),\n onError: (error) => setError({ step: 0, error: error })\n }\n )\n\n return (\n <>\n \n \n \n } />\n \n \n \n \n \n \n \n \n \n \n
    \n \n Continue\n \n
    \n
    \n \n );\n}\n\nexport default PassCreateForm;","import React from 'react';\nimport { find } from 'lodash';\n\n// Mui\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Avatar from '@mui/material/Avatar';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\n\n// Api\nimport useCouponApi from './api/useCouponApi';\n\nconst CouponSelect = props => {\n\tconst { select = 'Hash', brandhash, size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n\tconst { useFetchCoupons } = useCouponApi();\n\tconst { isFetching, data } = useFetchCoupons(brandhash);\n\n\tconst getValue = value => find(data, [select, value]) || null;\n\n\treturn (\n\t\t option?.Id === value?.Id}\n\t\t\tgetOptionLabel={option => option?.Title || ''}\n\t\t\toptions={data || []}\n\t\t\tloading={isFetching}\n\t\t\tvalue={getValue(value)}\n\t\t\tonChange={(_, value) => onChange(value?.[select])}\n\t\t\trenderOption={(props, option) => (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{option.Title}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{option.Description}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\trenderInput={params => (\n\t\t\t\t\n\t\t\t\t\t\t\t\t{isFetching ? : null}\n\t\t\t\t\t\t\t\t{params.InputProps.endAdornment}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t/>\n\t);\n};\n\nexport default CouponSelect;\n","import React, { useEffect } from 'react'\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\n\n// Components\nimport CouponSelect from '../../../brand/settings/coupon/coupon.select.component';\nimport NumberField from '../../../_components/number.textfield.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport LabelSwitch from '../../../_components/label.switch.component';\n\n// Api\nimport usePassApi from '../../api/usePassApi';\nimport useCouponApi from '../../../brand/settings/coupon/api/useCouponApi';\n\n// Helper\nimport useForm from '../../../_forms/useForm';\n\nconst StampForm = (props) => {\n const { disabled, passhash, brandhash, handleNext, setError } = props;\n\n const { values, valid, validating, setValues, useTextFieldInput, useSelectableFieldInput, useCheckFieldInput } = useForm({ Pass: passhash, Brand: brandhash, CardTypeId: '1' });\n\n const form = {\n CampaignName: {\n Name: 'CampaignName',\n Label: 'Campaign Name',\n Required: true\n },\n RewardNotificationText: {\n Name: 'Config.RewardNotificationText',\n Label: 'Reward Notification Text',\n Required: true\n },\n StampNotificationText: {\n Name: 'Config.StampNotificationText',\n Label: 'Stamp Notification Text',\n Required: true\n },\n MaxNumberOfStamps: {\n Name: 'Config.Stamps[0].MaxNumberOfStamps',\n Label: 'Max Number of Stamps',\n Required: true\n },\n GetStampCountFromParameter: {\n Name: 'Config.Stamps[0].StampWithStepperConfig.GetStampCountFromParameter',\n Label: 'Get Stamp Count From Parameter',\n Required: true\n },\n AverageMonetaryValue: {\n Name: 'Config.Stamps[0].StampWithStepperConfig.AverageMonetaryValue',\n Label: 'Average Monetary Value',\n Required: true\n },\n CalculateMonetaryValue: {\n Name: 'Config.Stamps[0].StampWithStepperConfig.CalculateMonetaryValue',\n Label: 'Calculate Monetary Value',\n Required: false\n },\n RewardCouponId: {\n Name: 'Config.Stamps[0].RewardCouponId',\n Label: 'Reward Coupon',\n Required: true\n }\n }\n\n const { useCreateCampaign } = usePassApi();\n const { isLoading: creating, mutate: createCampaign } = useCreateCampaign;\n const { useFetchCoupons } = useCouponApi();\n const { isFetching: fetchingCoupons, data: coupons } = useFetchCoupons(values.Brand);\n\n const onSubmit = () => createCampaign(\n values,\n {\n onSuccess: () => handleNext(),\n onError: (error) => setError({ step: 1, error: error })\n }\n )\n\n useEffect(() => {\n setValues(prev => ({\n ...prev,\n Config: {\n Stamps: [\n {\n MaxNumberOfStamps: 6,\n StampWithStepperConfig: {\n GetStampCountFromParameter: \"Stamps\",\n AverageMonetaryValue: 10,\n CalculateMonetaryValue: true\n },\n }\n ],\n RewardNotificationText: \"Congratulations!! @InsertedCouponCount your gift coffee is ready ☕\",\n StampNotificationText: \"Congratulations! You're one step closer to your gift coffee 😀\",\n }\n }))\n }, [setValues])\n\n return (\n <>\n \n \n \n \n \n \n \n } />\n } />\n \n \n } />\n \n \n \n \n \n \n \n Continue\n \n \n \n )\n}\n\nexport default StampForm","import React from 'react';\nimport Enums from '../../../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - UI\nimport Radio from '@mui/material/Radio';\nimport FormLabel from '@mui/material/FormLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nconst RoundingTypeRadios = (props) => {\n const { label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n return (\n \n {label}\n \n {\n Enums.roundingtypes.map(option => (} label={t('enums:roundingtype.' + option)} />))\n }\n \n {helperText}\n \n )\n}\n\nexport default RoundingTypeRadios;","import React, { useEffect } from 'react'\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\n\n// Components\nimport NumberField from '../../../_components/number.textfield.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\nimport LabelSwitch from '../../../_components/label.switch.component';\nimport RoundingTypeRadios from './rounding.type.radio.component';\n\n// Helpers\nimport useForm from '../../../_forms/useForm';\n\n// Api\nimport usePassApi from '../../api/usePassApi';\n\nconst PointsForm = ({ passhash, brandhash, handleNext, setError }) => {\n const initialValues = {\n CardTypeId: '3',\n Pass: passhash,\n Brand: brandhash,\n Config: {\n GetAmountFromParameter: \"Amount\",\n GetSpendingPointsFromParameter: \"SpentPoints\",\n CollectPointsWhileSpending: false,\n CollectPointsFromDiscountedAmount: false,\n SetDiscountAmountToMaxWhenLargerThanAmount: false,\n RoundingValue: 'Round',\n SetCampaignResponse: true,\n WhenCollectPointsText: \"You earned @CollectedPoints points from @Amount transaction.\",\n WhenSpendPointsText: \"You paid QR @PointsToSpend of @Amount transaction with your points.\",\n WhenCollectAndSpendPointsText: \"You paid QR @PointsToSpend of @Amount transaction with your points and you earned @CollectedPoints points from this transaction.\"\n }\n }\n\n const { values, setValues, valid, validating, useTextFieldInput, useCheckFieldInput } = useForm(initialValues);\n\n const { useCreateCampaign } = usePassApi();\n const { isLoading: creating, mutate: createCampaign } = useCreateCampaign;\n\n const onSubmit = () => createCampaign(\n values,\n {\n onSuccess: () => handleNext(),\n onError: (error) => setError({ step: 1, error: error })\n }\n )\n\n const disabled = false;\n\n const form = {\n CampaignName: {\n Name: 'CampaignName',\n Label: 'Campaign Name',\n Required: true\n },\n GetAmountFromParameter: {\n Name: 'Config.GetAmountFromParameter',\n Label: 'Get Amount From Parameter',\n Required: true\n },\n GetSpendingPointsFromParameter: {\n Name: 'Config.GetSpendingPointsFromParameter',\n Label: 'Get Spending Points From Parameter',\n Required: true\n },\n PointsCollectRatio: {\n Name: 'Config.PointsCollectRatio',\n Label: 'Points Collect Ratio',\n Required: true\n },\n PointsSpendRatio: {\n Name: 'Config.PointsSpendRatio',\n Label: 'Points Spend Ratio',\n Required: true\n },\n CollectPointsWhileSpending: {\n Name: 'Config.CollectPointsWhileSpending',\n Label: 'Collect Points While Spending',\n Required: false\n },\n CollectPointsFromDiscountedAmount: {\n Name: 'Config.CollectPointsFromDiscountedAmount',\n Label: 'Collect Points From Discounted Amount',\n Required: false\n },\n MaxCollectPointsPerTransaction: {\n Name: 'Config.MaxCollectPointsPerTransaction',\n Label: 'Max Collect Points',\n Required: false\n },\n MaxPointsSpendPerTransaction: {\n Name: 'Config.MaxPointsSpendPerTransaction',\n Label: 'Max Points Spend',\n Required: false\n },\n MaxAmountToSpendingRatio: {\n Name: 'Config.MaxAmountToSpendingRatio',\n Label: 'Max Amount To Spending Ratio',\n Required: false\n },\n SetDiscountAmountToMaxWhenLargerThanAmount: {\n Name: 'Config.SetDiscountAmountToMaxWhenLargerThanAmount',\n Label: 'Set Discount Amount To Max When Larger Than Amount',\n Required: false\n },\n RoundingValue: {\n Name: 'Config.RoundingValue',\n Label: 'Rounding Value',\n Required: true\n },\n WhenCollectPointsText: {\n Name: 'Config.WhenCollectPointsText',\n Label: 'When Collect Points Text',\n Required: true\n },\n WhenSpendPointsText: {\n Name: 'Config.WhenSpendPointsText',\n Label: 'When Spend Points Text',\n Required: true\n },\n WhenCollectAndSpendPointsText: {\n Name: 'Config.WhenCollectAndSpendPointsText',\n Label: 'When Collect and Spend Points Text',\n Required: true\n },\n }\n\n const collectPointsWhileSpending = values.Config?.CollectPointsWhileSpending;\n useEffect(() => {\n if (!collectPointsWhileSpending) setValues(prev => ({ ...prev, Config: { ...prev.Config, CollectPointsFromDiscountedAmount: null } }));\n else setValues(prev => ({ ...prev, Config: { ...prev.Config, CollectPointsFromDiscountedAmount: true } }));\n }, [collectPointsWhileSpending, setValues])\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 Continue\n \n \n \n )\n}\n\nexport default PointsForm","import React from 'react';\nimport Enums from '../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - UI\nimport Radio from '@mui/material/Radio';\nimport FormLabel from '@mui/material/FormLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nconst CardTypeRadios = (props) => {\n const { label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n return (\n \n {label}\n \n {\n Enums.cardtypes.map(option => (} label={t('enums:cardtype.' + option)} />))\n }\n \n {helperText}\n \n )\n}\n\nexport default CardTypeRadios;","import React, { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\n\n// Components\nimport CouponSelect from '../../../brand/settings/coupon/coupon.select.component';\nimport LabelSwitch from '../../../_components/label.switch.component';\nimport NumberField from '../../../_components/number.textfield.component';\nimport LabeledInputField from '../../../_components/labeled.input.component';\n\n// Helpers\nimport useForm from '../../../_forms/useForm';\n\n// Api\nimport useCouponApi from '../../../brand/settings/coupon/api/useCouponApi';\n\nconst MultiStampForm = (props) => {\n const { addStamp, updateStamp, setSelectedStamp, selectedStamp, disabled, brand } = props;\n const { t } = useTranslation(['labels', 'prompts', 'actions']);\n\n const form = {\n MaxNumberOfStamps: {\n Name: 'MaxNumberOfStamps',\n Label: 'Max Number of Stamps',\n Required: true\n },\n GetStampCountFromParameter: {\n Name: 'StampWithStepperConfig.GetStampCountFromParameter',\n Label: 'Get Stamp Count From Parameter',\n Required: true\n },\n AverageMonetaryValue: {\n Name: 'StampWithStepperConfig.AverageMonetaryValue',\n Label: 'Average Monetary Value',\n Required: true\n },\n CalculateMonetaryValue: {\n Name: 'StampWithStepperConfig.CalculateMonetaryValue',\n Label: 'Calculate Monetary Value',\n Required: false\n },\n RewardCouponId: {\n Name: 'RewardCouponId',\n Label: 'Reward Coupon',\n Required: true\n }\n }\n\n const initialValues = {\n MaxNumberOfStamps: 8,\n StampWithStepperConfig: {\n AverageMonetaryValue: 10,\n CalculateMonetaryValue: true\n }\n }\n\n const { values, setValues, useSelectableFieldInput, useTextFieldInput, useCheckFieldInput, valid } = useForm(selectedStamp || initialValues);\n\n const { useFetchCoupons } = useCouponApi();\n const { isFetching: fetchingCoupons, data: coupons } = useFetchCoupons(brand);\n\n useEffect(() => {\n if (selectedStamp) setValues(selectedStamp);\n }, [selectedStamp, setValues]);\n\n const clearValues = () => {\n setValues(initialValues);\n setSelectedStamp(null);\n }\n\n const onSubmit = () => {\n if (selectedStamp) updateStamp(values)\n else addStamp(values)\n clearValues();\n }\n\n return (\n \n \n \n } />\n \n \n \n \n } />\n \n \n \n \n \n \n \n );\n}\n\nexport default MultiStampForm;","import React, { useEffect, useState } from 'react';\nimport _ from 'lodash';\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport MultiStampForm from './multistamp.form';\nimport LabeledInputField from '../../../_components/labeled.input.component';\n\n// Helpers\nimport useForm from '../../../_forms/useForm';\n\n// Api\nimport usePassApi from '../../api/usePassApi';\n\nconst MultiStampField = ({ passhash, brandhash, handleNext, setError }) => {\n const { values, valid, validating, useTextFieldInput, setValues } = useForm({ Pass: passhash, Brand: brandhash, CardTypeId: '2' });\n const [selectedStamp, setSelectedStamp] = useState(null);\n\n const form = {\n CampaignName: {\n Name: 'CampaignName',\n Label: 'Campaign Name',\n Required: true\n },\n RewardNotificationText: {\n Name: 'Config.RewardNotificationText',\n Label: 'Reward Notification Text',\n Required: true\n },\n StampNotificationText: {\n Name: 'Config.StampNotificationText',\n Label: 'Stamp Notification Text',\n Required: true\n },\n }\n const { useCreateCampaign } = usePassApi();\n const { isLoading: creating, mutate: createCampaign } = useCreateCampaign;\n\n const onSubmit = () => createCampaign(\n values,\n {\n onSuccess: () => {\n handleNext();\n setError(null);\n },\n onError: (error) => setError({ step: 1, error: error })\n }\n )\n\n useEffect(() => {\n setValues(\n prev => ({\n ...prev,\n Config: {\n RewardNotificationText: \"Congratulations!! @InsertedCouponCount your gift coffee is ready ☕\",\n StampNotificationText: \"Congratulations! You're one step closer to your gift coffee 😀\",\n Stamps: []\n }\n })\n )\n }, [setValues])\n\n const addStamp = (params) => {\n setValues(prev => {\n return { ...prev, Config: { ...prev.Config, Stamps: [...prev.Config.Stamps, params] } }\n })\n }\n\n const deleteStamp = (key) => {\n setValues(prev => {\n var newStamps = [...prev.Config?.Stamps];\n _.remove(newStamps, n => n.StampWithStepperConfig.GetStampCountFromParameter === key);\n return { ...prev, Config: { ...prev.Config, Stamps: newStamps } };;\n })\n }\n\n return (\n <>\n \n \n \n \n {\n values.Config?.Stamps?.map((stamp, key) =>\n \n \n \n {stamp.StampWithStepperConfig.GetStampCountFromParameter}\n \n \n {stamp.MaxNumberOfStamps}\n \n \n deleteStamp(stamp.Name)}\n sx={{ '&:hover': { bgcolor: 'rgba(231,76,59,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#E74C3B' }}>\n \n \n setSelectedStamp(stamp)}\n sx={{ '&:hover': { bgcolor: 'rgba(125,206,160,0.6)' }, visibility: 'hidden', color: 'white', bgcolor: '#7DCEA0' }}>\n \n \n \n )\n }\n \n \n \n \n Continue\n \n \n \n );\n}\n\nexport default MultiStampField;","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Pages and Components\nimport StampForm from './cardtypes/stamp/stamp.form';\nimport PointsForm from './cardtypes/points/points.form';\nimport CardTypeRadios from './cardtype.radio.component';\nimport MultiStampField from './cardtypes/stamp/multistamp.field';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst PassCampaignForm = (props) => {\n const { passHash, brandHash, handleNext, setError } = props;\n\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { values, useTextFieldInput } = useForm({ CardTypeId: '1' });\n\n const form = {\n CardType: {\n Name: 'CardTypeId',\n Label: t('labels:cardtype'),\n Required: false,\n Type: 'text',\n }\n }\n\n return (\n <>\n \n \n \n {(() => {\n switch (values.CardTypeId) {\n case '1': return \n case '2': return \n case '3': return \n default: return null;\n }\n })()}\n \n \n \n );\n}\n\nexport default PassCampaignForm;","import React from 'react';\nimport Enums from '../../enums';\nimport { useTranslation } from 'react-i18next';\n\n// Material - UI\nimport Radio from '@mui/material/Radio';\nimport FormLabel from '@mui/material/FormLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControl from '@mui/material/FormControl';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nconst FieldTypeRadios = (props) => {\n const { label, disabled, value, error, required, helperText, onChange, onFocus, onBlur } = props;\n const { t } = useTranslation(['enums']);\n\n return (\n \n {label}\n \n {\n Enums.fieldtypes.map(option => (} label={t('enums:fieldtype.' + option)} />))\n }\n \n {helperText}\n \n )\n}\n\nexport default FieldTypeRadios;","import React, { useState, useEffect } from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useCountryApi from './api/useCountryApi';\nimport { Typography } from '@mui/material';\n\nconst CountryMultiSelect = (props) => {\n const { size, select = 'Id', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const [values, setValues] = useState([]);\n\n const { useFetchCountries } = useCountryApi();\n const { data, isFetching } = useFetchCountries();\n\n useEffect(() => {\n const getValue = (value) => find(data, [select, value]) || null;\n\n if (value) {\n let _values = [];\n value.forEach(opaqueid => {\n let _value = getValue(opaqueid);\n if (_value) _values.push(_value)\n });\n setValues(_values);\n }\n }, [value, select, data])\n\n return (\n option === value}\n getOptionLabel={(option) => `${option?.Name} - (${option?.Code})` || ''}\n onChange={(_, value) => onChange(value, null, select)}\n renderOption={(props, option) => {\n return (\n
  • \n \n \n {option.Name}\n \n \n {option.Code}\n \n \n
  • \n )\n }}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default CountryMultiSelect;","import React from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\n\n// Components\nimport FieldTypeRadios from './field.type.radio.component';\nimport LabelSwitch from '../../_components/label.switch.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\nimport CountryMultiSelect from '../../settings/country/country.multiselect.component';\n\n// Helpers\nimport useForm from '../../_forms/useForm';\n\nconst RegexPhoneFieldForm = (props) => {\n const { open, onClose, field, setValues, selectedForm } = props;\n const { t } = useTranslation(['labels']);\n\n const initialValues = {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Cep Telefonu\",\n PlaceHolder: null,\n InputType: \"regex-phone\",\n Countries: [],\n isRequired: true,\n ValidationText: \"Lütfen telefon numaranızı girin\",\n ValueTexts: null,\n Values: null,\n HelperText: \"Lütfen telefon numaranızı girin!\"\n };\n\n const { values, valid, useTextFieldInput, useArrayFieldInput, useCheckFieldInput } = useForm(field || initialValues);\n\n const onSubmit = () => {\n setValues(prevState => {\n const newState = { ...prevState };\n if (field) selectedForm.Form.Fields[selectedForm.Form.Fields.indexOf(field)] = values;\n else {\n const newField = { ...values, Order: selectedForm.Form.Fields[selectedForm.Form.Fields.length - 1]?.Order + 1 };\n selectedForm.Form.Fields.push(newField);\n }\n const indexOfSelectedForm = prevState.Forms.findIndex(form => form.Language.Id === selectedForm.Language.Id);\n newState.Forms[indexOfSelectedForm] = selectedForm;\n return newState;\n })\n onClose();\n }\n\n const form = {\n Variant: {\n Name: 'Variant',\n Label: 'Variant',\n Required: true,\n },\n Title: {\n Name: 'Title',\n Label: 'Title',\n Required: true,\n },\n HelperText: {\n Name: 'HelperText',\n Label: 'Helper Text',\n Required: false,\n },\n ValidationText: {\n Name: 'ValidationText',\n Label: 'Validation Text',\n Required: false,\n },\n isRequired: {\n Name: 'isRequired',\n Label: 'Required',\n Required: false,\n },\n Countries: {\n Name: 'Countries',\n Label: 'Countries',\n Type: 'autocomplete',\n Required: true,\n }\n }\n\n return (\n \n Regex Phone\n \n \n \n \n \n \n \n \n } />\n \n \n \n \n \n \n \n )\n}\n\nexport default RegexPhoneFieldForm","import React, { useState } from 'react'\n\n// Material UI\nimport Popover from '@mui/material/Popover';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport IconButton from '@mui/material/IconButton';\nimport ListItemText from '@mui/material/ListItemText';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport RegexPhoneFieldForm from './regexphone.field.form';\n\nconst DefaultFields = [\n {\n label: 'Name Surname',\n values: {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Full Name\",\n InputType: \"text\",\n ValidationText: \"Please enter your name and surname\",\n HelperText: \"Please enter your name and surname\",\n isRequired: true\n },\n },\n {\n label: 'E-mail',\n values: {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"Email\",\n InputType: \"email\",\n ValidationText: \"Please enter a valid email address\",\n HelperText: \"Please enter a valid email address\",\n isRequired: true\n }\n },\n {\n label: 'Date of Birth',\n values: {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Date of Birth\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n ValidationText: \"Please enter your date of birth\",\n isRequired: true\n }\n },\n {\n label: 'Gender',\n values: {\n Variant: \"standard\",\n Name: \"Gender\",\n Title: \"Gender\",\n InputType: \"radio\",\n ValidationText: \"Please select your gender\",\n ValueTexts: [\"Female\", \"Male\"],\n Values: [1, 2],\n isRequired: true\n }\n },\n {\n label: 'International Phone',\n values: {\n Variant: \"standard\",\n Order: 2,\n Name: \"Phone\",\n Title: \"Phone\",\n InputType: \"int-phone\",\n ValidationText: \"Please enter your phone number\",\n HelperText: \"Please enter your phone number\",\n isRequired: true\n },\n }\n]\n\nconst AddField = (props) => {\n const { setValues, selectedForm } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popper' : undefined;\n\n const handleClick = (event) => setAnchorEl(anchorEl ? null : event.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n const [openRegex, setOpenRegex] = useState(false);\n const handleOpenRegex = () => setOpenRegex(prev => !prev);\n\n const onAddField = (field) => {\n setValues(prevState => {\n const newState = { ...prevState };\n const newField = { ...field, Order: selectedForm.Form.Fields[selectedForm.Form.Fields.length - 1]?.Order + 1 };\n selectedForm.Form.Fields.push(newField);\n const indexOfSelectedForm = prevState.Forms.findIndex(form => form.Language.Id === selectedForm.Language.Id);\n newState.Forms[indexOfSelectedForm] = selectedForm;\n return newState;\n })\n }\n return (\n
    \n \n \n \n \n \n {\n DefaultFields.map((field, index) => (\n f.InputType === field.values.InputType))} onClick={() => onAddField(field.values)}>\n \n {field.label}\n \n \n ))\n }\n f.InputType === 'regex-phone'))}>\n \n Regex Phone\n \n \n \n \n {\n openRegex &&\n \n }\n
    \n )\n}\n\nexport default AddField","import React, { useState } from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Popover from '@mui/material/Popover';\nimport Button from '@mui/material/Button';\nimport MenuItem from '@mui/material/MenuItem';\nimport MenuList from '@mui/material/MenuList';\nimport ListItemText from '@mui/material/ListItemText';\n\nconst Languages = [\n {\n Language: {\n Id: 1,\n Code: \"tr\",\n Name: \"Turkish\",\n Directive: \"Lütfen bir dil seçiniz\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Ad Soyad\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Lütfen adınızı ve soyadınızı girin\",\n HelperText: \"Lütfen adınızı ve soyadınızı girin\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Cep Telefonu\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Lütfen telefonun numaranızı girin\",\n HelperText: \"Lütfen telefonun numaranızı girin\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"Eposta\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"Lütfen geçerli bir e-posta adresi girin\",\n HelperText: \"Lütfen geçerli bir e-posta adresi girin\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Doğum Tarihi\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Lütfen doğum tarihinizi giriniz\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"KAYDET\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 2,\n Code: \"en\",\n Name: \"English\",\n Directive: \"Please select a language\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Full Name\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Please enter your name and surname\",\n HelperText: \"Please enter your name and surname\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Phone\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Please enter a valid phone number\",\n HelperText: \"Please enter your phone number\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"Email\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"Please enter a valid email address\",\n HelperText: \"Please enter a valid email address\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Date of Birth\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Please enter your date of birth\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"ENROLL\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 3,\n Code: \"ru\",\n Name: \"Russian\",\n Directive: \"Please select a language\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Полное имя\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Пожалуйста, введите ваше имя и фамилию\",\n HelperText: \"Пожалуйста, введите ваше имя и фамилию\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Телефон\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Пожалуйста, введите действующий телефонный номер\",\n HelperText: \"Пожалуйста, введите действующий телефонный номер\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"Почта\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"Пожалуйста, введите действительный адрес электронной почты\",\n HelperText: \"Пожалуйста, введите действительный адрес электронной почты\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"День рождения\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Пожалуйста, введите вашу дату рождения\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"Сохранить\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 4,\n Code: \"ar\",\n Name: \"Arabic\",\n Directive: \"Please select a language\",\n Dir: \"rtl\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"الاسم\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"يرجى إدخال اسمك\",\n HelperText: \"يرجى إدخال اسمك\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"رقم الهاتف\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"يرجى إدخال رقم هاتف صالح\",\n HelperText: \"يرجى إدخال رقم هاتف صالح\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"البريد الإلكتروني\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"من فضلك أدخل بريد إلكترونى صحيح\",\n HelperText: \"من فضلك أدخل بريد إلكترونى صحيح\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"تاريخ الميلاد\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"برجاء إدخال تاريخ ميلادك\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"حفظ\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 5,\n Code: \"de\",\n Name: \"German\",\n Directive: \"Please select a language\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Vollständiger Name\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Bitte geben Sie Ihren Vor- und Nachnamen ein\",\n HelperText: \"Bitte geben Sie Ihren Vor- und Nachnamen ein\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Telefon\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Bitte geben Sie eine gültige Telefonnummer ein\",\n HelperText: \"Bitte geben Sie eine gültige Telefonnummer ein\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"E Mail\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\n HelperText: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Geburtsdatum\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Bitte geben Sie Ihr Geburtsdatum ein\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"Сохранить\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 6,\n Code: \"fr\",\n Name: \"French\",\n Directive: \"Please select a language\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Nom et prénom\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Veuillez saisir votre prénom et nom\",\n HelperText: \"Veuillez saisir votre prénom et nom\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Téléphone\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Veuillez saisir un numéro de téléphone valide\",\n HelperText: \"Veuillez saisir un numéro de téléphone valide\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"E-Mail\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"Veuillez, saisir une adresse e-mail valide\",\n HelperText: \"Veuillez, saisir une adresse e-mail valide\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Date de naissance\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Veuillez saisir votre date de naissance\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"Сохранить\",\n Sticks: false\n }\n }\n },\n {\n Language: {\n Id: 7,\n Code: \"az\",\n Name: \"Azerbaijiani\",\n Directive: \"Please select a language\",\n Dir: \"ltr\"\n },\n Form: {\n Fields: [\n {\n Variant: \"standard\",\n Name: \"NameSurname\",\n Title: \"Ad\",\n InputType: \"text\",\n Order: 1,\n ValidationText: \"Zəhmət olmasa ad və soyadınızı daxil edin\",\n HelperText: \"Zəhmət olmasa ad və soyadınızı daxil edin\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"Phone\",\n Title: \"Telefon\",\n InputType: \"regex-phone\",\n Countries: [\"TR\"],\n Order: 2,\n ValidationText: \"Zəhmət olmasa telefon nömrəsi daxil edin\",\n HelperText: \"Zəhmət olmasa telefon nömrəsi daxil edin\",\n isRequired: false\n },\n {\n Variant: \"standard\",\n Name: \"Email\",\n Title: \"Email\",\n InputType: \"email\",\n Order: 3,\n ValidationText: \"E-poçt ünvanınızı daxil edin\",\n HelperText: \"E-poçt ünvanınızı daxil edin\",\n isRequired: true\n },\n {\n Variant: \"standard\",\n Name: \"DateOfBirth\",\n Title: \"Doğum tarixi\",\n InputType: \"date\",\n InputMask: \"99/99/9999\",\n Order: 4,\n ValidationText: \"Zəhmət olmasa doğum tarixinizi daxil edin\",\n isRequired: true\n }\n ],\n SubmitButton: {\n Label: \"QEYD OLUN\",\n Sticks: false\n }\n }\n },\n]\n\nconst AddLanguage = (props) => {\n const { enroll, selectedLanguage, onAddLanguage, onDeleteLanguage } = props;\n const [anchorEl, setAnchorEl] = useState(null);\n\n const open = Boolean(anchorEl);\n const id = open ? 'simple-popper' : undefined;\n\n const handleClick = (event) => setAnchorEl(anchorEl ? null : event.currentTarget);\n const handleClose = () => setAnchorEl(null);\n\n return (\n \n \n \n \n \n {\n Languages.map((language, index) => (\n f.Language.Id === language.Language.Id))} onClick={() => {\n onAddLanguage(language);\n handleClose();\n }}>\n \n {language.Language.Name}\n \n \n ))\n }\n \n \n \n )\n}\n\nexport default AddLanguage","import React from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\n\n// Components\nimport FieldTypeRadios from './field.type.radio.component';\nimport LabelSwitch from '../../_components/label.switch.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Helpers\nimport useForm from '../../_forms/useForm';\n\nconst EditFieldForm = (props) => {\n const { open, onClose, field, setValues, selectedForm } = props;\n const { t } = useTranslation(['labels']);\n\n const { values, valid, useTextFieldInput, useCheckFieldInput } = useForm(field);\n\n const onSubmit = () => {\n setValues(prevState => {\n const newState = { ...prevState };\n selectedForm.Form.Fields[selectedForm.Form.Fields.indexOf(field)] = values;\n const indexOfSelectedForm = prevState.Forms.findIndex(form => form.Language.Id === selectedForm.Language.Id);\n newState.Forms[indexOfSelectedForm] = selectedForm;\n return newState;\n })\n onClose();\n }\n\n const form = {\n Variant: {\n Name: 'Variant',\n Label: 'Variant',\n Required: true,\n },\n Title: {\n Name: 'Title',\n Label: 'Title',\n Required: true,\n },\n HelperText: {\n Name: 'HelperText',\n Label: 'Helper Text',\n Required: false,\n },\n ValidationText: {\n Name: 'ValidationText',\n Label: 'Validation Text',\n Required: false,\n },\n isRequired: {\n Name: 'isRequired',\n Label: 'Required',\n Required: false,\n },\n }\n return (\n \n {field.Name}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default EditFieldForm","import React, { useState } from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport EditFieldForm from './edit.field.form';\nimport RegexPhoneFieldForm from './regexphone.field.form';\n\nconst FieldListItemActions = (props) => {\n const { setValues, field, selectedForm } = props;\n\n const [openEdit, setOpenEdit] = useState(false);\n const [openRegex, setOpenRegex] = useState(false);;\n\n const handleEdit = () => {\n if (field.InputType === 'regex-phone') setOpenRegex(prev => !prev);\n else setOpenEdit(prev => !prev);\n }\n\n const handleDelete = () => {\n setValues(prevState => {\n const newState = { ...prevState };\n const newFields = selectedForm.Form.Fields.filter(f => f.Name !== field.Name);\n const indexOfSelectedForm = prevState.Forms.findIndex(form => form.Language.Id === selectedForm.Language.Id);\n newState.Forms[indexOfSelectedForm].Form.Fields = newFields;\n return newState;\n })\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n {\n openEdit &&\n \n }\n {\n openRegex &&\n \n }\n \n )\n}\n\nexport default FieldListItemActions","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport FieldListItemActions from './field.list.item.actions';\n\n// Helpers\nimport { useDragDrop } from '../../_helpers/drag.drop.helper';\n\nconst FieldListItem = (props) => {\n const { index, id, field, setValues, moveField, selectedForm } = props;\n\n const { ref, handlerId, isDragging } = useDragDrop('field', index, id, moveField);\n\n const opacity = isDragging ? 0 : 1\n\n return (\n \n \n \n {field.Name}\n \n \n {field.Title}\n \n \n {\n field.InputType === 'regex-phone' &&\n -
    }>\n {\n field.Countries.map((country, index) =>\n \n {country}\n \n )\n }\n \n }\n \n \n )\n}\n\nexport default FieldListItem","import { useRef } from 'react'\nimport _ from 'lodash';\nimport { useDrag, useDrop } from 'react-dnd'\n\nexport const useDragDrop = (type, index, id, moveField, debounceValue) => {\n const throttleHover = _.throttle((item, monitor) => {\n if (!ref.current) {\n return\n }\n\n const dragIndex = item.index\n const hoverIndex = index\n // Don't replace items with themselves\n if (dragIndex === hoverIndex) {\n return\n }\n // Determine rectangle on screen\n const hoverBoundingRect = ref.current?.getBoundingClientRect()\n // Get vertical middle\n const hoverMiddleY =\n (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2\n // Determine mouse position\n const clientOffset = monitor.getClientOffset()\n // Get pixels to the top\n const hoverClientY = clientOffset?.y - hoverBoundingRect.top\n // Only perform the move when the mouse has crossed half of the items height\n // When dragging downwards, only move when the cursor is below 50%\n // When dragging upwards, only move when the cursor is above 50%\n // Dragging downwards\n if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {\n return\n }\n // Dragging upwards\n if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {\n return\n }\n // Time to actually perform the action\n moveField(dragIndex, hoverIndex)\n // Note: we're mutating the monitor item here!\n // Generally it's better to avoid mutations,\n // but it's good here for the sake of performance\n // to avoid expensive index searches.\n item.index = hoverIndex\n }, debounceValue || 50);\n\n const ref = useRef(null);\n\n const [{ handlerId }, drop] = useDrop({\n accept: type,\n collect(monitor) {\n return {\n handlerId: monitor.getHandlerId(),\n }\n },\n hover: (item, monitor) => throttleHover(item, monitor)\n })\n const [{ isDragging }, drag] = useDrag({\n type: type,\n item: () => {\n return { id, index }\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n })\n\n drag(drop(ref))\n\n return { ref, handlerId, isDragging }\n}","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst AssetItem = ({ asset }) => {\n return (\n \n {\n asset.Type === 1 ?\n {asset.ImageUrl}\n :\n {asset.Text}\n }\n \n )\n}\n\nexport default AssetItem;\n\n","import React from 'react'\n\n// Components\nimport AssetItem from './asset.item.component'\n\nconst AssetList = ({ selectedform }) => {\n if (!selectedform?.Form.Assets) return '';\n return selectedform.Form.Assets.map((asset, index) => );\n}\n\nexport default AssetList;\n","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nconst TextInputField = (props) => {\n const { field, useInput } = props;\n const Shrink = (field.PlaceHolder) ? { shrink: true, } : null;\n\n return \n};\n\nexport default TextInputField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nconst SelectField = (props) => {\n const { field, useInput } = props;\n const Shrink = (field.PlaceHolder) ? { shrink: true, } : null;\n\n return \n {field.ValueTexts.map((Value, i) => (\n \n ))}\n \n}\n\nexport default SelectField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nconst EmailField = (props) => {\n const { field, useInput } = props;\n const Shrink = (field.PlaceHolder) ? { shrink: true, } : null;\n\n return \n}\n\nexport default EmailField;","import React from 'react'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport InputLabel from '@mui/material/InputLabel';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormHelperText from '@mui/material/FormHelperText';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport Radio from '@mui/material/Radio';\n\nconst RadioField = (props) => {\n const { field, useInput } = props;\n const { value, onChange, onFocus, onBlur, error, required, helperText } = useInput(field);\n\n return (\n \n {field.Title}\n \n \n {\n field.ValueTexts.map((Value, i) => (\n }\n label={Value}\n labelPlacement='end'\n />\n ))\n }\n \n {helperText}\n \n \n );\n}\n\nexport default RadioField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nimport InputMask from \"react-input-mask\";\n\nconst MaskedDateField = (props) => {\n const { field, useInput } = props;\n\n return (\n \n {(inputProps) =>\n }\n \n )\n}\n\nexport default MaskedDateField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport InputMask from \"react-input-mask\";\n\nconst MaskedPhoneField = (props) => {\n const { field, useInput } = props;\n\n return (\n \n {(inputProps) =>\n }\n \n )\n}\n\nexport default MaskedPhoneField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport InputMask from \"react-input-mask\";\n\nconst MaskedTextField = (props) => {\n const { field, useInput } = props;\n\n return (\n \n {(inputProps) =>\n }\n \n )\n}\n\nexport default MaskedTextField;","import React from 'react'\n\n// Material UI\nimport TextField from '@mui/material/TextField';\n\nconst RegexPhoneField = (props) => {\n const { field, useInput } = props;\n\n return (\n \n )\n}\n\nexport default RegexPhoneField;","import { find } from 'lodash';\n\nconst messages = {\n 'tr': {\n 'androidguidelines': {\n id: 1,\n caption: 'Android kullanıcılarının bir kerelik Google Play Store’dan, “WalletPasses” isimli uygulamayı indirmeleri gerekmektedir',\n title: 'Dijital kartınızı yüklemek için “WalletPasses” uygulamasını indirdikten sonra, açıp, sağ üstte yer alan \"Ꚛ\" işaretine basarak, QR kodu taratabilirsiniz'\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'Bu kart için daha önce yapılmış bir üyeliğiniz bulunuyor',\n title: 'Kartınızı güncellemek veya tekrar kaydetmek isterseniz aşağıdaki butona tıklayınız'\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'Kaydınızın tamamlanmasına son bir adım kaldı',\n title: 'Birazdan açılacak olan önizleme ekranında sağ üst köşedeki Ekle/Add butonuna basmayı unutmayın lütfen',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'Tebrikler :)',\n title: 'Kartınız başarıyla mobil cüzdanınıza eklendi'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'Lütfen bekleyin...',\n title: 'Kartınız birazdan cüzdanınıza eklenecektir',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'Beklenmeyen bir hata oluştu...',\n title: 'Kartınız cüzdanınıza eklenirken bir hata oluştu',\n },\n 'internalservererror': {\n id: 8,\n caption: 'Beklenmeyen bir hata oluştu',\n title: 'Şu anda hizmet veremiyoruz. Lütfen servis yetkilisi ile iletişime geçin',\n },\n },\n 'en': {\n 'androidguidelines': {\n id: 1,\n caption: 'Android users need to download “WalletPasses” application from Google Play Store first!',\n title: 'Open “WalletPasses” application, click “Ꚛ” and scan the QR Code to install BrandWallet passes'\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'You have already subscribed for this Pass before',\n title: 'Please click the Add To Wallet button below to re-download your Pass'\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'One last step to complete your subscription',\n title: 'Please do not forget to click the Add button in the next screen',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'Congratulations :)',\n title: 'Your Pass is successfully added to your Wallet'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'Please wait...',\n title: 'Your Pass will be added to your Wallet soon',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'An unexpected error occured...',\n title: 'Your pass could not be downloaded',\n },\n 'internalservererror': {\n id: 8,\n caption: 'An unexpected error occured',\n title: 'Service unavailable. Please get in touch with system admin',\n },\n },\n 'ru': {\n 'androidguidelines': {\n id: 1,\n caption: 'Владельцам Android сперва нужно скачать приложение “Wallet Passes” из Google Play Store',\n title: 'Откройте приложение “Wallet Passes”, нажмите “Ꚛ” и отсканируйте QR-код, чтобы установить BrandWallet карты'\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'Упс! Вы уже подписались на эту карту',\n title: 'Для повторной подписи с другой информацией, пожалуйста, удалите свою карточку из электронного кошелька и снова перейдите по этой ссылке. Спасибо'\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'Последний шаг, чтобы завершить подписку',\n title: 'Пожалуйста, не забудьте нажать кнопку Добавить на следующем экране',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'Поздравления',\n title: 'Ваш пропуск успешно добавлен в ваш электронный кошелек'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'Подождите пожалуйста...',\n title: 'Ваш пропуск будет добавлен в ваш кошелек в кратчайшие сроки',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'Произошла непредвиденная ошибка...',\n title: 'Ваша карта не может быть загружена',\n },\n 'internalservererror': {\n id: 8,\n caption: 'An unexpected error occured',\n title: 'Service unavailable. Please get in touch with system admin',\n },\n },\n 'ar': {\n 'androidguidelines': {\n id: 1,\n caption: 'يحتاج مستخدمي Android إلى تنزيل تطبيق WalletPasses من متجر Google Play أولا ً ',\n title: 'افتح تطبيق WalletPasses واضغط على Ꚛ وقم بمسح رمز الاستجابة السريعة لتثبيت بطاقات BrandWallet ',\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'لقد قمت بالفعل بالاشتراك في هذا المرور',\n title: 'الرجاء الضغط علي زر إضافة إلى المحفظة لإعادة تنزيل بطاقتك',\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'خطوة أخيرة لإكمال اشتراكك',\n title: 'من فضلك لا تنسى االضغط علي الزر إضافة في الشاشة التالية',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'تهانينا',\n title: 'تم إضافة بطاقة المرور الخاصة بك بنجاح إلى محفظتك'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'أرجو الإنتظار',\n title: 'ستتم إضافة بطاقتك إلى محفظتك قريبًا',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'An unexpected error occured...',\n title: 'Kartınız cüzdanınıza eklenirken bir hata oluştu',\n },\n 'internalservererror': {\n id: 8,\n caption: 'An unexpected error occured',\n title: 'Service unavailable. Please get in touch with system admin',\n },\n },\n 'de': {\n 'androidguidelines': {\n id: 1,\n caption: 'Android-Benutzer müssen zuerst die Anwendung „WalletPasses“ aus dem Google Play Store herunterladen!',\n title: 'Öffnen Sie die Anwendung „WalletPasses“, klicken Sie auf „Ꚛ“ und scannen Sie den QR-Code, um BrandWallet-Pässe zu installieren'\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'Sie haben diesen Pass bereits zuvor abonniertSie haben diesen Pass bereits zuvor abonniert',\n title: 'Bitte klicken Sie unten auf die Schaltfläche „Zur Brieftasche hinzufügen“, um Ihren Pass erneut herunterzuladen'\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'Ein letzter Schritt, um Ihr Abonnement abzuschließen',\n title: 'Bitte vergessen Sie nicht, im nächsten Bildschirm auf die Schaltfläche Hinzufügen zu klicken',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'Glückwünsche :)',\n title: 'Ihr Pass wurde Ihrem Wallet erfolgreich hinzugefügt'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'Bitte warten…',\n title: 'Ihr Pass wird bald zu Ihrem Wallet hinzugefügt',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'Ein unerwarteter Fehler ist aufgetreten.',\n title: 'Ihr Pass konnte nicht heruntergeladen werden',\n },\n 'internalservererror': {\n id: 8,\n caption: 'Ein unerwarteter Fehler ist aufgetreten.',\n title: 'Dienst nicht verfügbar. Bitte wenden Sie sich an den Systemadministrator',\n },\n },\n 'fr': {\n 'androidguidelines': {\n id: 1,\n caption: 'Les utilisateurs d\\'Android doivent d\\'abord télécharger l\\'application \"WalletPasses\" sur Google Play Store !',\n title: 'Ouvrez l\\'application \"WalletPasses\", cliquez sur \"Ꚛ\" et scannez le code QR pour installer les pass BrandWallet'\n },\n 'alreadysubscribed': {\n id: 3,\n caption: 'Vous avez déjà souscrit à ce Pass avant',\n title: 'Veuillez cliquer sur le bouton Ajouter au portefeuille ci-dessous pour retélécharger votre Pass'\n },\n 'iphoneguidelines': {\n id: 2,\n caption: 'Une dernière étape pour finaliser votre souscription',\n title: 'N\\'oubliez pas de cliquer sur le bouton Ajouter dans l\\'écran suivant',\n },\n 'downloadsuccess': {\n id: 4,\n caption: 'Félicitations :)',\n title: 'Votre Pass a bien été ajouté à votre portefeuille'\n },\n 'waitingdownload': {\n id: 5,\n caption: 'Veuillez attendre...',\n title: 'Votre Pass sera bientôt ajouté à votre portefeuille',\n },\n 'passdownloaderror': {\n id: 7,\n caption: 'Une erreur inattendue s\\'est produite.',\n title: 'Votre pass n\\'a pas pu être téléchargé',\n },\n 'internalservererror': {\n id: 8,\n caption: 'Une erreur inattendue s\\'est produite.',\n title: 'Service indisponible. Veuillez contacter l\\'administrateur système',\n },\n },\n};\n\nexport const getLocalizedMessage = (language, message) => messages[language][message];\n\nexport const languagelist = [\n { Code: 'tr', Id: 1, Dir: 'ltr', Language: 'Türkçe', Directive: '' },\n { Code: 'en', Id: 2, Dir: 'ltr', Language: 'English', Directive: '' },\n { Code: 'ru', Id: 3, Dir: 'ltr', Language: 'Russian', Directive: '' },\n { Code: 'ar', Id: 4, Dir: 'rtl', Language: 'Arabic', Directive: '' },\n { Code: 'de', Id: 5, Dir: 'ltr', Language: 'German', Directive: '' },\n { Code: 'fr', Id: 6, Dir: 'ltr', Language: 'French', Directive: '' }\n];\n\nexport const getBrowserLanguage = () => {\n const navigatorlanguagecode = (navigator.language || navigator.userLanguage).substring(0, 2);\n const lang = find(languagelist, ['Code', navigatorlanguagecode]);\n\n return (lang)\n ? { ...lang, Browsercode: navigatorlanguagecode }\n : { Code: 'en', Id: 2, Dir: 'ltr', Language: 'English', Browsercode: navigatorlanguagecode };\n}\n\nexport const selectInitialLanguage = (Forms) => {\n if (!Forms) return undefined;\n\n const navigatorlanguagecode = (navigator.language || navigator.userLanguage).substring(0, 2);\n const languagelist = getLanguages(Forms);\n const lang = find(languagelist, ['Code', navigatorlanguagecode]);\n return lang || languagelist[0];\n}\n\nexport const getLanguages = (Forms) => (Forms && Forms.map((form) => form.Language));\n\nexport const phoneformats = [\n {\n name: 'Azerbaijan',\n iso2: 'az',\n dialcode: '994',\n mask: '+\\\\9\\\\94 99-999 99-99',\n reg: /(\\+994) (50|51|55|70|77)-([0-9]{3}) ([0-9]{2}-[0-9]{2})/\n },\n {\n name: 'Bahrain',\n iso2: 'bh',\n dialcode: '973',\n mask: '+\\\\973 9999 9999',\n reg: /(\\+973) ([0-9]{4}) ([0-9]{4})/\n },\n {\n name: 'Canada',\n iso2: 'ca',\n dialcode: '1',\n mask: '+1 999 999-9999',\n reg: /(\\+1) (204|226|236|249|250|289|306|343|403|416|418|438|450|506|514|519|579|581|587|600|604|613|647|705|709|778|780|807|819|902|905) ([0-9]{3})-([0-9]{4})/\n },\n {\n name: 'China',\n iso2: 'cn',\n dialcode: '86',\n mask: '+86 99-999999999',\n reg: /(\\+86) ([0-9]{2})-([0-9]{9})/\n },\n {\n name: 'Egypt',\n iso2: 'eg',\n dialcode: '20',\n mask: '+20 99-999-9999',\n reg: /(\\+20) ([0-9]{2})-([0-9]{3})-([0-9]{4})/\n },\n {\n name: 'France',\n iso2: 'fr',\n dialcode: '33',\n mask: '+33 9 99 99 99 99',\n reg: /(\\+33) ([0-9]{1}) ([0-9]{2}) ([0-9]{2}) ([0-9]{2}) ([0-9]{2})/\n },\n {\n name: 'Germany',\n iso2: 'de',\n dialcode: '49',\n mask: '+4\\\\9 9999 99999999',\n reg: /(\\+49) ([0-9]{4}) ([0-9]{8})/\n },\n {\n name: 'Italy',\n iso2: 'it',\n dialcode: '39',\n mask: '+3\\\\9 999 9999999',\n reg: /(\\+39) ([0-9]{3}) ([0-9]{7})/\n },\n {\n name: 'Kuwait',\n iso2: 'kw',\n dialcode: '965',\n mask: '+\\\\965 99999999',\n reg: /(\\+965) ([0-9]{8})/\n },\n {\n name: 'Netherlands',\n iso2: 'nl',\n dialcode: '31',\n mask: '+31 99 99999999',\n reg: /(\\+31) ([0-9]{2}) ([0-9]{8})/\n },\n {\n name: 'Oman',\n iso2: 'om',\n dialcode: '968',\n mask: '+\\\\968 9999 9999',\n reg: /(\\+968) ([0-9]{4}) ([0-9]{4})/\n },\n {\n name: 'Qatar',\n iso2: 'qa',\n dialcode: '974',\n mask: '+\\\\974 99 999999',\n reg: /(\\+974) ([0-9]{2}) ([0-9]{6})/\n },\n {\n name: 'Russia',\n iso2: 'ru',\n dialcode: '7',\n mask: '+7 999 999-99-99',\n reg: /(\\+7)( )?([0-9]{3})( )?([0-9]{3})(-)?([0-9]{2})(-)?([0-9]{2})/\n },\n {\n name: 'Saudi Arabia',\n iso2: 'sa',\n dialcode: '966',\n mask: '+\\\\966 99 999 9999',\n reg: /(\\+966)( )?([0-9]{2})( )?([0-9]{3})( )?([0-9]{4})/\n },\n {\n name: 'Spain',\n iso2: 'es',\n dialcode: '34',\n mask: '+34 999 999 999',\n reg: /(\\+34)( )?([0-9]{3})( )?([0-9]{3})( )?([0-9]{3})/\n },\n {\n name: 'Turkey',\n iso2: 'tr',\n dialcode: '90',\n mask: '+\\\\90 999 999 99 99',\n reg: /(\\+90)( )?(501|505|506|507|551|552|553|554|555|559|530|531|532|533|534|535|536|537|538|539|561|540|541|542|543|544|545|546|547|548|549)( )?([0-9]{3})( )?([0-9]{2})( )?([0-9]{2})/\n },\n {\n name: 'Ukraine',\n iso2: 'ua',\n dialcode: '380',\n mask: '+380 99 999 99 99',\n reg: /(\\+380) ([0-9]{2}) ([0-9]{3}) ([0-9]{2}) ([0-9]{2})/\n },\n {\n name: 'United Arab Emirates',\n iso2: 'ae',\n dialcode: '971',\n mask: '+\\\\971 99 999 999',\n reg: /(\\+971) (50|52|54|55|56|58) ([0-9]{3}) ([0-9]{4})/\n },\n {\n name: 'United Kingdom',\n iso2: 'uk',\n dialcode: '44',\n mask: '+44 9999 999999',\n reg: /(\\+44) ([0-9]{4}) ([0-9]{6})/\n },\n {\n name: 'United States',\n iso2: 'us',\n dialcode: '1',\n mask: '+1 999 999-9999',\n reg: /(\\+1) ([0-9]{3}) ([0-9]{3})-([0-9]{4})/\n },\n];","import React, { useState, useEffect } from 'react'\nimport { phoneformats } from '../_helpers/localization.helper';\nimport InputMask from 'react-input-mask';\nimport { map, find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport NativeSelect from '@mui/material/NativeSelect';\nimport InputAdornment from '@mui/material/InputAdornment';\n\nconst IntPhoneField = (props) => {\n const { field, useInput } = props;\n const [selectedCountry, setSelectedCountry] = useState(find(phoneformats, ['iso2', 'tr']));\n const [open, setOpen] = useState(false);\n const { value, onChange, onFocus, onBlur, error, required, helperText } = useInput({ ...field, country: 'tr' });\n\n useEffect(() => {\n const clearData = async () => onChange({ target: { value: '' } });\n if (selectedCountry) clearData();\n\n }, [selectedCountry, onChange]);\n\n return (\n \n {(inputProps) =>\n \n <>\n setOpen(false)}\n sx={{\n width: 30, height: 30, p: 0,\n padding: 0,\n '& + svg': {\n display: 'none',\n },\n '& \t.MuiNativeSelect-select': {\n padding: 0,\n lineHeight: 0,\n height: 11,\n }\n }}\n onChange={(e) => setSelectedCountry(find(phoneformats, ['iso2', e.target.value]))}\n value={selectedCountry.iso2}\n disableUnderline\n >\n {\n map(phoneformats, (country, index) => (\n \n {`${country.name} +${country.dialcode}`}\n \n ))\n }\n \n \n \n ),\n }}\n {...inputProps}\n />}\n \n );\n}\n\nexport default IntPhoneField;","import { useState, useCallback, useEffect } from 'react';\nimport { find, findIndex, union } from 'lodash';\nimport { parsePhoneNumber, isValidPhoneNumber } from 'libphonenumber-js'\nimport { phoneformats } from '../_helpers/localization.helper';\n\nexport function useFormInput({\n field,\n values,\n validating,\n setValues,\n setValidating,\n handleError\n}) {\n const name = field.Name;\n const isrequired = field.isRequired;\n const inputtype = field.InputType;\n const fields = values.Fields;\n const fieldItem = find(fields, ['name', name]);\n const formValue = fieldItem?.value || '';\n\n const [value, setValue] = useState(formValue);\n const [isValid, setIsValid] = useState(true);\n const [isTouched, setIsTouched] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n\n const handleValidation = useCallback(() => {\n const checkvalid = validate(value, isrequired, field);\n setIsValid(checkvalid);\n handleError(name, checkvalid);\n }, [setIsValid, name, value, isrequired, field, handleError]);\n\n // watch for external parent data changes\n useEffect(() => {\n if (value !== formValue) {\n if (formValue === '') setValue(formValue);\n setIsTouched(false);\n setIsFocused(false);\n }\n }, [formValue, value, setValue, setIsFocused, setIsTouched]);\n\n // validate on value change\n useEffect(() => {\n handleValidation();\n }, [value, handleValidation]);\n\n // rewrite self and parent's value\n const handleChange = useCallback((event) => {\n const value = event.target.value;\n var formattedvalue = value;\n\n if (inputtype === 'regex-phone') {\n const { valid, formattedphone } = validateRegexPhone(value, field);\n (valid)\n ? formattedvalue = formattedphone\n : formattedvalue = value;\n }\n\n const tmpfields = fields;\n\n const index = findIndex(tmpfields, ['name', name]);\n\n (index >= 0)\n ? tmpfields[index].value = formattedvalue\n : tmpfields.push({ 'name': name, 'value': formattedvalue });\n\n setValidating(false);\n setValue(value);\n setValues(prev => ({ ...prev, Fields: tmpfields }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [setValue, setValues, setValidating, name, inputtype, fields]);\n\n const handleFocus = useCallback(() => {\n setIsTouched(true);\n setIsFocused(true);\n handleValidation();\n }, [setIsTouched, setIsFocused, handleValidation]);\n\n const handleBlur = useCallback(() => (setIsFocused(false)), [setIsFocused]);\n\n const error = validating ? !isValid : !isValid && isTouched && !isFocused;\n const helpertext = error ? field.ValidationText : field.HelperText;\n\n return {\n name,\n value,\n onChange: handleChange,\n onFocus: handleFocus,\n onBlur: handleBlur,\n error,\n required: isrequired,\n helperText: helpertext || ' ',\n };\n}\n\nexport const validate = (value, isrequired, field) => {\n if (isrequired && !value) return false;\n\n if (field.InputType === 'email') {\n if (!isrequired && !Boolean(value)) return true;\n var re_email = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re_email.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'phone') {\n if (!isrequired && (value === '' || value === field.InputMask.replace(/9/gi, ' '))) return true;\n var re_phone = new RegExp(field.Regex);\n return re_phone.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'masked-text') {\n if (!isrequired && !Boolean(value)) return true;\n var re_masked_text = new RegExp(field.Regex);\n return re_masked_text.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'regex-phone') {\n if (!isrequired && !Boolean(value)) return true;\n const { valid, } = validateRegexPhone(value, field);\n return valid;\n }\n\n if (field.InputType === 'int-phone') {\n if (!isrequired && !Boolean(value)) return true;\n return field.country.reg.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'date') {\n if (!isrequired && (value === '' || value === field.InputMask.replace(/9/gi, ' '))) return true;\n var re_date = /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/;\n return re_date.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'us-date') {\n if (!isrequired && (value === '' || value === field.InputMask.replace(/9/gi, ' '))) return true;\n var us_date = /^(0[1-9]|1[0-2])\\/(0[1-9]|1[0-9]|2[0-9]|3[0-1])\\/(19|20)\\d{2}$/;\n return us_date.test(String(value).toLowerCase());\n }\n\n if (field.InputType === 'masked-date') {\n if (!isrequired && !Boolean(value)) return true;\n var re_maskeddate = /^(0[1-9]|1[0-9]|2[0-9]|3[0-1])\\/(0[1-9]|1[0-2])\\/(19|20)\\d{2}$/;\n return re_maskeddate.test(String(value).toLowerCase());\n }\n\n return true;\n}\n\nconst validateRegexPhone = (value, field) => {\n // First check the length of the phone number. We do not allow phone numbers less that 8 chars\n if (value.length < 8) return { valid: false, formattedphone: '' };\n\n var valid = false;\n var phonenumber = '';\n var formattedphone = '';\n\n // Create a list of country codes to be checked for international phone number format library\n // We unique merge the list that comes with the field and the country code we fetched from IP\n const checklist = union([field.countrycode?.toUpperCase()], field.Countries);\n\n // First check if the phone number is a valid international phone number\n if (isValidPhoneNumber(value)) {\n phonenumber = parsePhoneNumber(value);\n formattedphone = phonenumber.format(\"INTERNATIONAL\");\n valid = phonenumber.isValid();\n\n if (phonenumber && phonenumber.country === 'TR') {\n const format = find(phoneformats, ['iso2', 'tr']);\n valid = format?.reg?.test(formattedphone);\n }\n }\n else { // The phone number is NOT a valid int-phone. We will check the phone number against every country in our checklist \n var i;\n\n for (i = 0; i < checklist.length; i++) {\n const country = checklist[i];\n\n if (isValidPhoneNumber(value, country)) {\n phonenumber = parsePhoneNumber(value, country);\n formattedphone = phonenumber.format(\"INTERNATIONAL\");\n valid = phonenumber.isValid();\n\n if (phonenumber && phonenumber.country === 'TR') {\n const format = find(phoneformats, ['iso2', 'tr']);\n valid = format?.reg?.test(formattedphone);\n }\n\n if (valid)\n break;\n }\n }\n }\n\n return { valid, formattedphone };\n}","import { useState, useCallback } from 'react'\nimport { useFormInput } from './useFormInput';\nimport { useFormConsent } from './useFormConsent';\n\nexport function useForm() {\n const [values, setValues] = useState({ Fields: [] });\n const [errors, setErrors] = useState([]);\n const [validating, setValidating] = useState(false);\n\n const handleError = useCallback((name, isvalid) => {\n let tmperrors = errors;\n const index = tmperrors.findIndex(error => error === name);\n\n if (!isvalid) {\n if (index < 0) tmperrors.push(name);\n } else {\n if (index > -1) tmperrors.splice(index, 1);\n }\n\n setErrors(tmperrors);\n }, [errors]);\n\n const clearForm = useCallback((language) => {\n setValues(prev => { return { ...prev, Language: language, Fields: [], Consents: [] } });\n setErrors([]);\n }, []);\n\n const useInput = (field) => useFormInput({\n field,\n values,\n validating,\n setValues,\n setValidating,\n handleError\n });\n\n const useConsent = (consent) => useFormConsent({\n consent,\n values,\n validating,\n setValues,\n setValidating,\n handleError\n });\n\n return {\n values,\n errors,\n validating,\n setValues,\n setErrors,\n clearForm,\n setValidating,\n useInput,\n useConsent\n };\n}","import { useState, useCallback, useEffect } from 'react';\nimport { find, findIndex } from 'lodash';\n\nexport const useFormConsent = ({\n consent,\n values,\n validating,\n setValues,\n setValidating,\n handleError\n}) => {\n const name = consent.Name;\n const isrequired = consent.isRequired;\n const consents = values.Consents;\n const fieldItem = find(consents, ['name', name]);\n const formValue = fieldItem?.value || 0;\n\n const [value, setValue] = useState(formValue);\n const [isValid, setIsValid] = useState(true);\n const [isTouched, setIsTouched] = useState(false);\n\n const handleValidation = useCallback(() => {\n const valid = isrequired ? (value === 1) : true\n setIsValid(valid);\n handleError(name, valid);\n }, [setIsValid, name, value, isrequired, handleError]);\n\n // validate on value change\n useEffect(() => {\n handleValidation();\n }, [value, handleValidation]);\n\n // rewrite self and parent's value\n const handleChange = useCallback((event) => {\n const tmpconsents = consents;\n const index = findIndex(tmpconsents, ['name', name]);\n const value = (event.target.checked ? 1 : 0);\n\n (index >= 0)\n ? tmpconsents[index].value = value\n : tmpconsents.push({ 'name': name, 'value': value });\n\n setValidating(false);\n setValue(value);\n setValues(prev => ({ ...prev, Consents: tmpconsents }));\n }, [setValue, setValues, setValidating, name, consents]);\n\n const handleFocus = useCallback(() => {\n setIsTouched(true);\n handleValidation();\n }, [setIsTouched, handleValidation]);\n\n const error = validating ? !isValid : !isValid && isTouched;\n const helpertext = error ? consent.ValidationText : consent.HelperText;\n\n return {\n name,\n value,\n onChange: handleChange,\n onFocus: handleFocus,\n error,\n required: isrequired,\n helperText: helpertext,\n };\n}","import React from 'react'\nimport { orderBy } from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Fields\nimport TextInputField from './fields/text.field.component';\nimport SelectField from './fields/select.field.component';\nimport EmailField from './fields/email.field.component';\nimport RadioField from './fields/radio.field.component';\nimport MaskedDateField from './fields/maskeddate.field.component';\nimport MaskedPhoneField from './fields/maskedphone.field.component';\nimport MaskedTextField from './fields/maskedtext.field.component';\nimport RegexPhoneField from './fields/regexphone.field.component';\nimport IntPhoneField from './fields/intphone.field.component';\n\n// Helpers\nimport { useForm } from './_forms/useForm';\n\nconst InputField = (props) => {\n const { field, useInput } = props;\n\n if (field.InputType === 'text') return \n if (field.InputType === 'select') return \n if (field.InputType === 'email') return \n if (field.InputType === 'radio') return \n if (field.InputType === 'masked-date') return \n if (field.InputType === 'date') return \n if (field.InputType === 'us-date') return \n if (field.InputType === 'phone') return \n if (field.InputType === 'int-phone') return \n if (field.InputType === 'masked-text') return \n if (field.InputType === 'regex-phone') return \n return '';\n}\n\nconst FieldList = ({ selectedform }) => {\n const form = useForm();\n\n if (!selectedform?.Form?.Fields) return '';\n\n const sortedFields = orderBy(selectedform.Form.Fields, ['Order'], ['asc']);\n\n return sortedFields.map((field, index) =>\n \n \n \n );\n};\n\nexport default FieldList;\n","import React from 'react'\n\n// Material UI\nimport Checkbox from '@mui/material/Checkbox';\nimport Typography from '@mui/material/Typography';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormHelperText from '@mui/material/FormHelperText';\n\nconst Consent = ({ consent }) => {\n return (\n <>\n \n \n {consent.Text}\n \n {consent.helperText || ' '}\n \n )\n}\n\nexport default Consent;","import React from 'react'\n\n// Components\nimport Consent from './consent.component';\n\nconst ConsentList = ({ selectedform }) => {\n if (!selectedform?.Form?.Consents) return '';\n return selectedform.Form.Consents.map((consent, index) => );\n};\n\nexport default ConsentList\n","import React from 'react'\n\n// Material UI\nimport Button from '@mui/material/Button';\n\nconst SubmitButton = ({ selectedform }) => {\n const Label = selectedform.Form.SubmitButton.Label\n\n return (\n \n )\n}\n\nexport default SubmitButton\n","import React from 'react'\n\n// Material UI\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport Breadcrumbs from '@mui/material/Breadcrumbs';\n\nconst LanguageSelector = (props) => {\n const { selectedLanguage, languagelist, setSelectedLanguage } = props;\n\n if (languagelist.length < 2) return '';\n\n return (\n \n \n \n {selectedLanguage.Directive}\n \n \n \n {\n languagelist.map((lang, i) =>\n (lang.Code === selectedLanguage.Code)\n ?\n {lang.Code.toUpperCase()}\n :\n setSelectedLanguage(lang)}>{lang.Code.toUpperCase()}\n )\n }\n \n \n )\n}\n\nexport default LanguageSelector;","import React from 'react'\n\n// Material UI\nimport { createTheme, ThemeProvider } from '@mui/material/styles';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport AssetList from './asset.list.component';\nimport FieldList from './field.list.component';\nimport ConsentList from './consent.list.component';\nimport SubmitButton from './submit.button.component';\nimport LanguageSelector from './language.selector.component';\n\nconst EnrollPreview = (props) => {\n const { enroll, selectedLanguage, selectedForm, languagelist, setSelectedLanguage } = props;\n\n const theme = createTheme({\n palette: {\n type: enroll?.Theme?.Type || 'light',\n background: {\n paper: enroll?.Theme?.BgColor || '#ffffff',\n },\n primary: {\n main: enroll?.Theme?.TextColor || '#2196f3',\n },\n text: {\n primary: enroll?.Theme?.TextColor || '#1d1d1d',\n secondary: enroll?.Theme?.TextColor || '#5e5e5e',\n }\n },\n direction: 'ltr',\n })\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n\nexport default EnrollPreview","import React, { useEffect, useState, useCallback } from 'react'\nimport { find } from 'lodash';\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { LoadingButton } from '@mui/lab';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Components\nimport AddField from './add.field.component';\nimport AddLanguage from './add.language.component';\nimport FieldListItem from './field.list.item.component';\nimport EnrollPreview from './enrollpreview/enroll.preview';\nimport LabelSwitch from '../../_components/label.switch.component';\nimport ColorPicker from '../../_components/color.picker.component';\nimport ImageDropZone from '../../_components/image.dropzone.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Helpers\nimport useForm from '../../_forms/useForm';\n\n// Api\nimport usePassApi from '../api/usePassApi';\n\nconst EnrollForm = ({ enroll, handleNext, setError }) => {\n const { values, valid, validating, setValues, useTextFieldInput, useColorInput, useImageFieldInput, useCheckFieldInput } = useForm(enroll);\n\n const { useCreateEnroll } = usePassApi();\n const { isLoading: creating, mutate: createCampaign } = useCreateEnroll;\n\n const onSubmit = () => createCampaign(\n values,\n {\n onSuccess: () => handleNext(),\n onError: (error) => setError({ step: 2, error: error })\n }\n )\n\n const languagelist = values && values.Forms.map((form) => form.Language);\n\n const getLanguage = () => {\n const navigatorlanguagecode = (navigator.language || navigator.userLanguage).substring(0, 2);\n const lang = find(languagelist, ['Code', navigatorlanguagecode]);\n return lang || languagelist[0];\n }\n const getSelectedForm = () => {\n if (!selectedLanguage) return undefined;\n if (!enroll) return undefined;\n\n return find(values.Forms, (f) => f.Language.Id === selectedLanguage.Id);\n };\n\n const [selectedLanguage, setSelectedLanguage] = useState(getLanguage());\n const [selectedForm, setSelectedForm] = useState(getSelectedForm());\n\n const onAddLanguage = (language) => {\n setValues(prevState => {\n const newState = { ...prevState };\n let newLanguage = {\n Language: language.Language,\n Form: {\n Fields: language.Form.Fields,\n Assets: newState.Forms[0].Form.Assets,\n Consents: newState.Forms[0].Form.Consents,\n SubmitButton: language.Form.SubmitButton\n },\n Assets: newState.Forms[0].Assets,\n };\n newState.Forms.push(newLanguage);\n return newState;\n })\n }\n\n const onDeleteLanguage = () => {\n setValues(prevState => {\n const newState = { ...prevState };\n newState.Forms = newState.Forms.filter(item => item.Language.Id !== selectedLanguage.Id);\n setSelectedForm(newState.Forms[0]);\n setSelectedLanguage(newState.Forms[0].Language);\n return newState;\n })\n }\n\n const moveField = useCallback((dragIndex, hoverIndex) => {\n setValues((prevValues) => {\n const newValues = { ...prevValues };\n const indexOfSelectedForm = prevValues.Forms.findIndex(form => form.Language.Id === selectedForm.Language.Id);\n const fields = newValues.Forms[indexOfSelectedForm].Form.Fields;\n const dragField = fields[dragIndex];\n fields.splice(dragIndex, 1);\n fields.splice(hoverIndex, 0, dragField);\n fields.forEach((field, index) => field.Order = index);\n return newValues;\n })\n }, [setValues, selectedForm])\n\n const form = {\n LogoBase64: {\n Label: 'Pass Logo',\n Required: false,\n Type: 'base64image',\n },\n Text: {\n Required: false,\n },\n BgColor: {\n Name: 'Theme.BgColor',\n Label: 'Background Color',\n Required: true,\n },\n TextColor: {\n Name: 'Theme.TextColor',\n Label: 'Text Color',\n Required: true,\n },\n Type: {\n Name: 'Theme.Type',\n Label: 'Dark Mode',\n Required: false,\n }\n }\n\n useEffect(() => {\n setSelectedForm(find(values.Forms, (f) => f.Language.Id === selectedLanguage.Id));\n }, [selectedLanguage, values.Forms])\n\n return (\n <>\n \n \n \n } />\n } />\n \n \n \n \n \n \n \n Assets\n \n \n \n \n \n \n \n \n \n \n Fields\n \n \n \n {\n selectedForm.Form.Fields.map((field, index) =>\n \n )\n }\n \n \n \n Consents\n \n {\n selectedForm.Form.Consents.map((field, index) =>\n \n {field.Name}\n \n )\n }\n \n \n \n \n \n \n \n \n Continue\n \n \n \n )\n}\n\nconst EnrollDesignForm = ({ passHash, handleNext, setError }) => {\n const { useFetchEnroll } = usePassApi();\n const { data, isLoading, isFetching } = useFetchEnroll(passHash);\n\n if (isLoading || isFetching) return \n \n \n\n return \n}\n\nexport default EnrollDesignForm","import React, { useState } from 'react'\nimport _ from 'lodash';\nimport { useDropzone } from 'react-dropzone'\n\n// Material-ui\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst toBase64 = (src) => fetch(src)\n .then(response => response.blob())\n .then(blob => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result)\n reader.onerror = reject\n reader.readAsDataURL(blob)\n }));\n\nconst ImageFolderDropZone = (props) => {\n const [errorMessage, setErrorMessage] = useState(null);\n const { helperText } = props;\n\n const [imageFolder, setImageFolder] = useState([]);\n\n const onDrop = async (acceptedFiles) => {\n setImageFolder([]);\n setErrorMessage(null);\n const folder = acceptedFiles;\n\n folder.forEach(file => {\n const image = new Image();\n image.src = URL.createObjectURL(file);\n\n toBase64(image.src).then(dataUrl => {\n setImageFolder(prevState => [...prevState, { name: file.name, image: dataUrl }]);\n });\n });\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })\n return (\n \n
    \n \n
    \n \n {\n _.sortBy(imageFolder, 'name').map((image, index) =>\n \n {image.name}\n \n {image.name}\n \n \n )\n }\n \n {\n !(errorMessage) &&\n {typeof (errorMessage) === 'boolean' ? '' : helperText}\n }\n {\n errorMessage &&\n {typeof (errorMessage) === 'boolean' ? '' : errorMessage} \n }\n
    \n )\n}\n\nexport default ImageFolderDropZone;","import React from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Box from '@mui/material/Box';\nimport { LoadingButton } from '@mui/lab';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\nimport ImageFolderDropZone from '../_components/image.folder.dropzone';\n\nconst PassDesignForm = () => {\n const { valid, validating, useImageFieldInput } = useForm({ CreateBarcode: true });\n\n const form = {\n LogoBase64: {\n Name: 'LogoBase64',\n Label: 'Strip Images',\n Required: true\n }\n }\n\n return (\n <>\n \n \n \n \n
    \n \n Continue\n \n
    \n
    \n \n );\n}\n\nexport default PassDesignForm;","import React, { useState } from 'react';\n\n// Material UI\nimport Box from '@mui/material/Box';\nimport Step from '@mui/material/Step';\nimport AppBar from '@mui/material/AppBar';\nimport Dialog from '@mui/material/Dialog';\nimport Toolbar from '@mui/material/Toolbar';\nimport Stepper from '@mui/material/Stepper';\nimport Container from '@mui/material/Container';\nimport StepLabel from '@mui/material/StepLabel';\nimport IconButton from '@mui/material/IconButton';\nimport Typography from '@mui/material/Typography';\nimport StepContent from '@mui/material/StepContent';\nimport DialogContent from '@mui/material/DialogContent';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Components\nimport PassCreateForm from './pass.create.form';\nimport PassCampaignForm from './pass.campaign.form';\nimport EnrollDesignForm from './enrolldesign/enrolldesign.form';\nimport PassDesignForm from './pass.design.form';\n\n// 7GyqdbvXMo - Test Pass Hash\n\nconst PassCreateWizard = (props) => {\n const { open, onClose } = props;\n const [activeStep, setActiveStep] = useState(0);\n\n const [passHash, setPassHash] = useState(null);\n const [brand, setBrand] = useState(null);\n\n const handleNext = (passhash, brand) => {\n if (passhash) setPassHash(passhash);\n if (brand) setBrand(brand);\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n\n const [error, setError] = useState(null);\n const isStepFailed = (index) => error?.step === index;\n\n const steps = [\n {\n label: 'Create New Pass',\n description: `Please enter the mandatory fields below to create a new pass.`,\n component: \n },\n {\n label: 'Set the campaign',\n description: 'Set the campaign for the pass. This will be used to determine the pass\\'s eligibility criteria.',\n component: \n },\n {\n label: 'Create the Enroll Form',\n description: `Select the fields you want to include in the enroll form and change its properties if u want.`,\n component: \n },\n {\n label: 'Create the Pass Design',\n description: `Change the pass design.`,\n component: \n },\n ];\n\n return (\n \n \n \n \n \n \n New Pass\n \n \n \n \n \n \n {steps.map((step, index) => {\n const labelProps = {};\n if (isStepFailed(index)) {\n labelProps.optional = (\n \n {error.error.message}\n \n );\n labelProps.error = true;\n }\n return (\n \n {step.label}\n \n {step.description}\n {step.component}\n \n \n )\n })}\n \n \n \n \n \n );\n}\n\nexport default PassCreateWizard;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport PassCreateWizard from '../pass.create.wizard';\nimport Action from '../../_components/navigation/navbar/action.component';\n\nconst PassNewAction = props => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n } permissions={['pass:create']} {...props} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default PassNewAction;","import React, { useMemo, useEffect, useRef, useState, useCallback } from 'react';\nimport { useVirtualizer, elementScroll } from '@tanstack/react-virtual';\nimport { useTranslation } from 'react-i18next';\nimport slice from 'lodash/slice';\nimport moment from 'moment';\n\n// MUI\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport { useTheme } from '@mui/material';\n\n// MUI Icons\nimport CreditCard from '@mui/icons-material/CreditCard';\n\n// Components\nimport PassCard from './pass.info.card';\nimport PassNewAction from './actions/pass.new.action';\nimport ToolBar from '../_components/toolbar/toolbar.component';\n\n\n// React Table\nimport { useTable, useGlobalFilter, useSortBy, useFilters } from 'react-table';\nimport { momentSortFn, oneOfFilterFn, scopeFilterFn, dateRangeFilterFn, beforeScopeFilterFn } from '../_components/filter/filter.functions';\n\n// Api\nimport usePassApi from './api/usePassApi';\n\nfunction easeInOutQuint(t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n}\n\nconst PassesCardList = () => {\n const { t } = useTranslation(['labels', 'enums']);\n const initialState = JSON.parse(localStorage.getItem('bw-live-preferences-passes-table'));\n const parentRef = useRef();\n const scrollingRef = useRef();\n\n const [currentBreakpoint, setCurrentBreakpoint] = useState('');\n\n const { useFetchPasses } = usePassApi();\n const { data, isFetching, isLoading, refetch } = useFetchPasses();\n\n const passes = useMemo(() => data || [], [data]);\n const columns = useMemo(() => [\n {\n Header: t('labels:createdat'),\n accessor: (row) => row.CreatedAt && moment(row.CreatedAt),\n id: 'CreatedAt',\n filter: 'daterange',\n filterorder: 1,\n disableGlobalFilter: true,\n sortType: 'moment',\n },\n {\n Header: t('labels:status'),\n id: 'Status',\n accessor: (row) => t(`enums:genericstatus.${row.Status}`),\n filter: 'oneof',\n filterorder: 2,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'LogoUrl',\n accessor: 'LogoUrl',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'Hash',\n accessor: 'Hash',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'Id',\n accessor: 'Id',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'BrandId',\n accessor: 'BrandId',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'BrandHash',\n accessor: 'BrandHash',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'BrandLogoUrl',\n accessor: 'BrandLogoUrl',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n id: 'Brand',\n accessor: 'Brand',\n disableFilters: true,\n disableSortBy: true,\n },\n {\n Header: 'Pass Name',\n id: 'Name',\n accessor: 'Name',\n disableFilters: true,\n },\n {\n id: 'Designs',\n accessor: 'Designs',\n disableFilters: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n },\n {\n Header: t('labels:cardtype'),\n id: 'passtype',\n accessor: 'passtype',\n disableGlobalFilter: true,\n disableSortBy: true,\n filter: 'oneof',\n filterorder: 3,\n },\n ], [t]);\n\n // Let the table remove the filter if the string is empty\n scopeFilterFn.autoRemove = val => !val\n\n const {\n state,\n allColumns,\n rows,\n preFilteredRows,\n prepareRow,\n setGlobalFilter,\n } = useTable(\n {\n columns: columns,\n data: passes,\n initialState: initialState,\n autoResetGlobalFilter: false,\n autoResetFilters: false,\n sortTypes: useMemo(() => ({\n moment: momentSortFn,\n }), []),\n filterTypes: useMemo(() => ({\n scope: scopeFilterFn,\n oneof: oneOfFilterFn,\n daterange: dateRangeFilterFn,\n beforescope: beforeScopeFilterFn,\n }), []),\n },\n useGlobalFilter,\n useFilters,\n useSortBy,\n );\n\n const theme = useTheme();\n const getCurrentBreakpoint = useCallback(() => {\n const width = window.innerWidth;\n if (width < theme.breakpoints.values.sm) {\n return 'xs';\n } else if (width < theme.breakpoints.values.md) {\n return 'sm';\n } else if (width < theme.breakpoints.values.lg) {\n return 'md';\n } else if (width < theme.breakpoints.values.xl) {\n return 'lg';\n } else {\n return 'xl';\n }\n }, [theme]);\n\n useEffect(() => localStorage.setItem('bw-live-preferences-passes-table', JSON.stringify(state)), [state]);\n\n useEffect(() => {\n function handleResize() {\n setCurrentBreakpoint(getCurrentBreakpoint());\n }\n window.addEventListener('resize', handleResize);\n setCurrentBreakpoint(getCurrentBreakpoint());\n return () => window.removeEventListener('resize', handleResize);\n }, [getCurrentBreakpoint]);\n\n const getItemPerRow = useCallback(() => {\n switch (currentBreakpoint) {\n case 'xs': return 1;\n case 'sm': return 2;\n case 'md': return 3;\n case 'lg': return 4;\n case 'xl': return 6;\n default: return 0;\n }\n }, [currentBreakpoint]);\n\n const getCalculatedRowCount = useCallback(() => {\n if (!rows || rows.length === 0 || getItemPerRow() === 0) return 0;\n return Math.ceil(rows?.length / getItemPerRow());\n }, [getItemPerRow, rows]);\n\n const scrollToFn = React.useCallback((offset, canSmooth, instance) => {\n const duration = 0;\n const start = parentRef.current.scrollTop;\n const startTime = (scrollingRef.current = Date.now());\n\n const run = () => {\n if (scrollingRef.current !== startTime) return;\n const now = Date.now();\n const elapsed = now - startTime;\n const progress = easeInOutQuint(Math.min(elapsed / duration, 1));\n const interpolated = start + (offset - start) * progress;\n\n if (elapsed < duration) {\n elementScroll(interpolated, canSmooth, instance);\n requestAnimationFrame(run);\n } else {\n elementScroll(interpolated, canSmooth, instance);\n }\n };\n\n requestAnimationFrame(run);\n }, []);\n\n const rowVirtualizer = useVirtualizer({\n overscan: 2,\n estimateSize: () => 276,\n count: getCalculatedRowCount(),\n scrollToFn: scrollToFn,\n initialOffset: parseInt(localStorage.getItem(\"bw-live-preferences-passes-table-scroll-offset\")),\n getScrollElement: () => parentRef.current,\n });\n\n var timer;\n\n return (\n \n }\n px\n showFilterBar\n showSorter\n isTableToolbar\n filters={state.filters}\n columns={allColumns}\n rowCount={preFilteredRows?.length}\n filteredRowCount={rows?.length}\n searchingFor={state?.globalFilter}\n onSearch={setGlobalFilter}\n refetch={refetch}\n isFetching={isFetching}\n isLoading={isLoading}\n addAction={}\n localization={{\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n expand: t('labels:seemore'),\n insights: t('labels:insights'),\n refetch: t('labels:refresh'),\n }}\n />\n {\n clearTimeout(timer);\n timer = setTimeout(() => {\n localStorage.setItem('bw-live-preferences-passes-table-scroll-offset', rowVirtualizer.scrollOffset);\n }, 100);\n }}\n height='calc(100% - 110px)'\n sx={{ overflowY: 'scroll' }}\n pt={1}\n px={2}\n boxSizing='border-box'>\n
    \n {\n rowVirtualizer.getVirtualItems().map(virtualRow => {\n\n const itemPerRow = getItemPerRow();\n let items = slice(rows, virtualRow.index * itemPerRow, virtualRow.index * itemPerRow + itemPerRow);\n\n return (\n \n {\n items.map((row, index) => {\n prepareRow(row);\n return \n })\n }\n {\n items.length < itemPerRow && Array.from(Array(itemPerRow - items.length)).map((_, index) => {\n return
    \n })\n }\n \n )\n }\n )\n }\n
    \n \n
    \n );\n}\n\nexport default PassesCardList;\n\n/**\n * {\n data &&\n {\n clearTimeout(timer);\n timer = setTimeout(() => {\n localStorage.setItem('bw-live-preferences-passes-table-scroll', e.target.scrollTop);\n }, 100);\n }}\n sx={{\n flexGrow: 1,\n flexWrap: 'wrap',\n px: 2,\n gap: '4px',\n alignItems: 'flex-start',\n width: '100%',\n overflowX: 'hidden',\n overflowY: 'scroll',\n }}\n >\n {\n rows.map((row) => {\n prepareRow(row)\n return (\n \n \n \n )\n })\n }\n {\n // The following piece is to fill the card list with invisible cards, so that the cards at the bottom row can align to the left\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10].map(i => )\n }\n \n }\n */\n","import React from 'react';\n\n// Components\nimport PassesCardList from '../passes.card.list';\n\nconst Passes = () => \n\nexport default React.memo(Passes);","import React from 'react'\nimport PropTypes from 'prop-types';\n\n// MUI\nimport LoadingButton from '@mui/lab/LoadingButton';\n\n// Api\nimport useFoodicsApi from '../api/useFoodicsApi';\nimport useBrandApi from '../../brand/api/useBrandApi';\n\nconst FoodicsSyncProductsAction = ({ brandhash, variant }) => {\n const { useFetchBrand } = useBrandApi();\n const { data: brand } = useFetchBrand(brandhash);\n\n const { useFetchSyncMenu } = useFoodicsApi();\n const { refetch: menuSync, isFetching: syncingMenus } = useFetchSyncMenu(brandhash);\n\n if (brand?.Config?.IntegrationPartner === 1)\n return Sync Products;\n\n return null;\n}\n\nFoodicsSyncProductsAction.defaultProps = {\n variant: 'outlined',\n};\n\nFoodicsSyncProductsAction.propTypes = {\n variant: PropTypes.oneOf(['outlined', 'contained', 'text']),\n};\n\nexport default FoodicsSyncProductsAction\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Paper from '@mui/material/Paper';\nimport Zoom from '@mui/material/Zoom';\nimport Typography from '@mui/material/Typography';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport TooltipIconButton from '../_components/buttons/tooltip.icon.button';\n\nconst ProductLocalizationItem = (props) => {\n const { t } = useTranslation(['enums', 'labels']); // Load the localization namespaces\n const { localization, disabled, editLocalization, deleteLocalization } = props;\n\n return (\n \n \n \n } />\n } />\n \n \n {t('labels:name')}:\n {localization.Name}\n \n \n {t('labels:description')}:\n {localization.Description}\n \n \n {t('labels:notes')}:\n {localization.Notes}\n \n \n {t('labels:language')}:\n {t('enums:language.' + parseInt(localization.LanguageId))}\n \n \n \n )\n}\n\nexport default ProductLocalizationItem","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport { useLanguages } from '../_api/queries';\n\nconst ProductLanguageSelect = (props) => {\n const { size, select = 'Id', disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur, language, values } = props;\n\n const { data, isFetching } = useLanguages();\n var availableLanguages = data?.filter(l => l.Id !== language && !values?.find(v => v.LanguageId === l.Id));\n\n const getValue = (value) => find(data, [select, value]) || null;\n\n return (\n option?.[select] === value?.[select]}\n getOptionLabel={(option) => option?.Name || ''}\n onChange={(_, value) => onChange(value?.[select])}\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default ProductLanguageSelect;","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material-UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\n// Pages and Components\nimport LabeledInputField from '../_components/labeled.input.component';\nimport ProductLocalizationItem from './product.localization.item.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\n// Api\nimport ProductLanguageSelect from './product.language.select.component';\n\nconst ProductLocalizationForm = (props) => {\n const { setLocalizationValues, disabled, localizations, brandLanguage } = props;\n const { t } = useTranslation(['forms', 'actions', 'labels']);\n\n const [selectedLocalization, setSelectedLocalization] = useState(null);\n const { useTextFieldInput, useSelectableFieldInput, values, valid, setValues } = useForm({});\n\n const addLocalization = (newLocalization) => {\n newLocalization = { ...newLocalization }\n let newLocalizations = localizations || [];\n newLocalizations.push(newLocalization);\n setLocalizationValues(prev => { return { ...prev, Localization: newLocalizations } })\n handleCancel();\n }\n\n const deleteLocalization = (localization) => {\n let newLocalizations = localizations;\n _.remove(newLocalizations, (l) => l.LanguageId === localization.LanguageId)\n setLocalizationValues(prev => { return { ...prev, Localization: newLocalizations } })\n handleCancel();\n }\n\n const updateLocalization = (localization) => {\n let newLocalizations = localizations;\n var index = _.findIndex(newLocalizations, function (l) { return l.Id === localization.Id; });\n newLocalizations.splice(index, 1, localization);\n setLocalizationValues(prev => { return { ...prev, Localization: newLocalizations } })\n handleCancel();\n }\n\n const handleCancel = () => {\n setValues({});\n setSelectedLocalization(null);\n }\n\n useEffect(() => {\n if (selectedLocalization) setValues(selectedLocalization);\n }, [selectedLocalization, setValues])\n\n const form = {\n LanguageId: {\n Name: 'LanguageId',\n Label: t('labels:language'),\n Required: true\n },\n LocalizationName: {\n Name: 'Name',\n Label: t('labels:name'),\n Placeholder: \"Name\",\n Required: true\n },\n LocalizationDescription: {\n Name: 'Description',\n Label: t('labels:description'),\n Placeholder: \"Description\",\n Required: true\n },\n LocalizationNotes: {\n Name: 'Notes',\n Label: t('labels:notes'),\n Placeholder: \"Notes\",\n Required: false\n },\n }\n\n const onSubmit = () => {\n selectedLocalization\n ? updateLocalization(values)\n : addLocalization(values)\n };\n return (\n \n \n {t('labels:localizations')}\n \n }>\n \n \n \n \n } />\n \n \n {\n selectedLocalization &&\n \n }\n \n \n \n {\n localizations?.map((localization, key) => (\n setSelectedLocalization(localization)}\n deleteLocalization={() => deleteLocalization(localization)} />\n ))\n }\n \n \n \n );\n}\n\nexport default ProductLocalizationForm;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport CheckIcon from '@mui/icons-material/Check';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\nimport NumberField from '../_components/number.textfield.component';\n\nconst ProductOptionForm = (props) => {\n const { disabled, option, setOptionValues } = props;\n const { t } = useTranslation(['labels']);\n\n const { valid, values, setValues, useTextFieldInput } = useForm({});\n\n const addOptionItem = (newOption) => {\n newOption = { ...newOption }\n setOptionValues(prev => {\n let newOptions = prev.Options;\n newOptions[newOptions.indexOf(option)].Items.push(newOption);\n return ({ ...prev, Options: newOptions });\n })\n setValues({});\n }\n\n const form = {\n Id: {\n Name: 'Id',\n Label: \"Id\",\n Required: true\n },\n Title: {\n Name: 'Title',\n Label: t('labels:title'),\n Required: true\n },\n Price: {\n Name: 'Price',\n Label: t('labels:price'),\n Required: true\n },\n Barcode: {\n Name: 'Barcode',\n Label: t('labels:barcode'),\n Required: true\n }\n }\n\n const onSubmit = () => addOptionItem(values)\n\n return (\n \n \n \n } />\n \n \n \n } />\n \n \n \n \n \n \n \n setValues({})}>\n \n \n \n \n );\n}\n\nexport default ProductOptionForm;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'; // Localization library\nimport _ from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Paper from '@mui/material/Paper';\nimport Zoom from '@mui/material/Zoom';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport TooltipIconButton from '../_components/buttons/tooltip.icon.button';\nimport ProductOptionForm from './product.option.form';\n\nconst ProductOptionItem = (props) => {\n const { disabled, option, setOptionValues, editOption, deleteOption } = props;\n const { t } = useTranslation(['forms', 'actions', 'labels']);\n\n const deleteOptionItem = (optionItem) => {\n setOptionValues(prev => {\n let newOptions = prev.Options;\n _.remove(option.Items, o => o.Id === optionItem.Id)\n return { ...prev, Options: newOptions }\n })\n }\n\n return (\n \n \n \n {option.Title}\n \n editOption(option)}\n icon={}\n disabled={disabled}\n title={t('actions:editoption')}\n size='small' />\n deleteOption(option)}\n icon={}\n disabled={disabled}\n title={t('actions:deleteoption')}\n size='small' />\n \n \n {\n option.Items.length > 0 &&\n \n {\n option.Items.map((option, key) => (\n \n \n deleteOptionItem(option)} disabled={disabled} size='small' icon={} />\n \n \n Id:\n {option.Id}\n \n \n {t('labels:title')}:\n {option.Title}\n \n \n {t('labels:price')}:\n {option.Price}\n \n \n {t('labels:barcode')}:\n {option.Barcode}\n \n \n ))\n }\n \n }\n \n \n \n \n )\n}\n\nexport default ProductOptionItem","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material-UI\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport ProductOptionItem from './product.option.item.component';\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst ProductOptionsForm = (props) => {\n const { disabled, options, setOptionValues } = props;\n const { t } = useTranslation(['actions', 'labels']);\n\n const [selectedOption, setSelectedOption] = useState(null);\n const { useTextFieldInput, values, valid, setValues } = useForm({ Items: [] });\n\n const addOption = (newOption) => {\n setOptionValues(prev => {\n let newOptions = prev.Options || [];\n newOptions.push(\n {\n ...newOption,\n Key: _.uniqueId('option_'),\n }\n );\n return { ...prev, Options: newOptions }\n })\n handleClear();\n }\n\n const deleteOption = (option) => {\n setOptionValues(prev => {\n let newOptions = prev.Options;\n _.remove(newOptions, l => l.Title === option.Title)\n return { ...prev, Options: newOptions.length > 0 ? newOptions : null }\n })\n handleClear();\n }\n\n const updateOption = (option) => {\n setOptionValues(prev => {\n let newOptions = prev.Options;\n var index = _.findIndex(newOptions, o => o.Key === option.Key);\n newOptions.splice(index, 1, option);\n return { ...prev, Options: newOptions }\n })\n handleClear();\n }\n\n const handleClear = () => {\n setValues({ Items: [] });\n setSelectedOption(null);\n }\n\n useEffect(() => {\n if (selectedOption) setValues(selectedOption);\n }, [selectedOption, setValues])\n\n const form = {\n OptionTitle: {\n Name: 'Title',\n Label: t('labels:title'),\n Required: true\n }\n }\n\n const onSubmit = () => selectedOption ? updateOption(values) : addOption(values);\n\n return (\n \n \n {t('labels:options')}\n \n }>\n \n \n \n \n {selectedOption ? t('actions:update') : t('actions:save')}\n \n {\n selectedOption &&\n handleClear()}>\n {t('actions:cancel')}\n \n }\n \n \n \n {\n options?.map((option, key) => (\n \n ))\n }\n \n \n \n );\n}\n\nexport default ProductOptionsForm;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\n\n// Material UI Icons\nimport CheckIcon from '@mui/icons-material/Check';\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\nimport NumberField from '../_components/number.textfield.component';\n\nconst ProductExtraForm = (props) => {\n const { disabled, extra, setExtraValues } = props;\n const { t } = useTranslation(['labels']);\n\n const { valid, values, setValues, useTextFieldInput } = useForm({});\n\n const addExtraItem = (newExtra) => {\n newExtra = { ...newExtra }\n setExtraValues(prev => {\n let newExtras = prev.Extras;\n newExtras[newExtras.indexOf(extra)].Items.push(newExtra);\n return ({ ...prev, Extras: newExtras });\n })\n setValues({});\n }\n\n const form = {\n Id: {\n Name: 'Id',\n Label: \"Id\",\n Required: true\n },\n Title: {\n Name: 'Title',\n Label: t('labels:title'),\n Required: true\n },\n Price: {\n Name: 'Price',\n Label: t('labels:price'),\n Required: true\n },\n Barcode: {\n Name: 'Barcode',\n Label: t('labels:barcode'),\n Required: true\n }\n }\n\n const onSubmit = () => addExtraItem(values)\n\n return (\n \n \n \n } />\n \n \n \n } />\n \n \n \n \n \n \n \n setValues({})}>\n \n \n \n \n );\n}\n\nexport default ProductExtraForm;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'; // Localization library\nimport _ from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Paper from '@mui/material/Paper';\nimport Zoom from '@mui/material/Zoom';\nimport Divider from '@mui/material/Divider';\nimport Typography from '@mui/material/Typography';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport TooltipIconButton from '../_components/buttons/tooltip.icon.button';\nimport ProductExtraForm from './product.extra.form';\n\nconst ProductExtraItem = (props) => {\n const { disabled, extra, setExtraValues, editExtra, deleteExtra } = props;\n const { t } = useTranslation(['forms', 'actions', 'labels']); // Load the localization namespaces\n\n const deleteExtraItem = (extraItem) => {\n setExtraValues(prev => {\n let newExtras = prev.Extras;\n _.remove(extra.Items, o => o.Id === extraItem.Id)\n return { ...prev, Extras: newExtras }\n })\n }\n\n return (\n \n \n \n {extra.Title}\n \n editExtra(extra)}\n icon={}\n disabled={disabled}\n title={t('actions:editextra')}\n size='small' />\n deleteExtra(extra)}\n icon={}\n disabled={disabled}\n title={t('actions:deleteextra')}\n size='small' />\n \n \n {\n extra.Items.length > 0 &&\n \n {\n extra.Items.map((extra, key) => (\n \n \n deleteExtraItem(extra)} disabled={disabled} size='small' icon={} />\n \n \n Id:\n {extra.Id}\n \n \n {t('labels:title')}:\n {extra.Title}\n \n \n {t('labels:price')}:\n {extra.Price}\n \n \n {t('labels:barcode')}:\n {extra.Barcode}\n \n \n ))\n }\n \n }\n \n \n \n \n )\n}\n\nexport default ProductExtraItem","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material-UI\nimport Stack from '@mui/material/Stack';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport ProductExtraItem from './product.extra.item.component';\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst ProductExtrasForm = (props) => {\n const { disabled, extras, setExtraValues } = props;\n const { t } = useTranslation(['actions', 'labels']);\n\n const [selectedExtra, setSelectedExtra] = useState(null);\n const { useTextFieldInput, values, valid, setValues } = useForm({ Items: [] });\n\n const addExtra = (newExtra) => {\n setExtraValues(prev => {\n let newExtras = prev.Extras || [];\n newExtras.push(newExtra);\n return { ...prev, Extras: newExtras }\n })\n handleClear();\n }\n\n const deleteExtra = (extra) => {\n setExtraValues(prev => {\n let newExtras = prev.Extras;\n _.remove(newExtras, e => e.Title === extra.Title)\n return { ...prev, Extras: newExtras.length > 0 ? newExtras : null }\n })\n handleClear();\n }\n\n const updateExtra = (extra) => {\n setExtraValues(prev => {\n let newExtras = prev.Extras;\n var index = _.findIndex(newExtras, e => e.Id === extra.Id);\n newExtras.splice(index, 1, extra);\n return { ...prev, Extras: newExtras }\n })\n handleClear();\n }\n\n const handleClear = () => {\n setValues({ Items: [] });\n setSelectedExtra(null);\n }\n\n useEffect(() => {\n if (selectedExtra) setValues(selectedExtra);\n }, [selectedExtra, setValues])\n\n const form = {\n ExtraTitle: {\n Name: 'Title',\n Label: t('labels:title'),\n Required: true\n }\n }\n\n const onSubmit = () => selectedExtra ? updateExtra(values) : addExtra(values);\n\n return (\n \n \n {t('labels:extras')}\n \n }>\n \n \n \n \n {selectedExtra ? t('actions:update') : t('actions:save')}\n \n {\n selectedExtra &&\n \n {t('actions:cancel')}\n \n }\n \n \n \n {\n extras?.map((extra, key) => (\n \n ))\n }\n \n \n \n );\n}\n\nexport default ProductExtrasForm;\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Paper from '@mui/material/Paper';\nimport Zoom from '@mui/material/Zoom';\nimport Typography from '@mui/material/Typography';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport TooltipIconButton from '../_components/buttons/tooltip.icon.button';\n\nconst CategoryLocalizationItem = (props) => {\n const { t } = useTranslation(['enums', 'labels']); // Load the localization namespaces\n const { localization, disabled, editLocalization, deleteLocalization } = props;\n\n return (\n \n \n \n } />\n } />\n \n \n {t('labels:name')}:\n {localization.Name}\n \n \n {t('labels:description')}:\n {localization.Description}\n \n \n {t('labels:notes')}:\n {localization.Notes}\n \n \n {t('labels:language')}:\n {t('enums:language.' + parseInt(localization.LanguageId))}\n \n \n \n )\n}\n\nexport default CategoryLocalizationItem","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport _ from 'lodash';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\nimport Divider from '@mui/material/Divider';\nimport Button from '@mui/material/Button';\n\n// Components\nimport CategoryLocalizationItem from './product.category.localization.item.component';\nimport ProductLanguageSelect from './product.language.select.component';\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst CategoryLocalizationForm = (props) => {\n const { t } = useTranslation(['translation', 'forms']);\n const { setLocalizationValues, disabled, localizations, brandLanguage } = props;\n\n const [selectedLocalization, setSelectedLocalization] = useState(null);\n const { useTextFieldInput, useSelectableFieldInput, values, valid, setValues } = useForm({});\n\n const addLocalization = (newLocalization) => {\n setLocalizationValues(prev => {\n let newLocalizations = prev.Localization || [];\n newLocalizations.push(newLocalization);\n return { ...prev, Localization: newLocalizations }\n })\n handleClear();\n }\n\n const deleteLocalization = (localization) => {\n setLocalizationValues(prev => {\n let newLocalizations = prev.Localization;\n _.remove(newLocalizations, l => l.LanguageId === localization.LanguageId)\n return { ...prev, Localization: newLocalizations }\n })\n handleClear();\n }\n\n const updateLocalization = (localization) => {\n setLocalizationValues(prev => {\n let newLocalizations = prev.Localization;\n var index = _.findIndex(newLocalizations, l => l.LanguageId === localization.LanguageId);\n newLocalizations.splice(index, 1, localization);\n return { ...prev, Localization: newLocalizations }\n })\n handleClear();\n }\n\n const handleClear = () => {\n setValues({});\n setSelectedLocalization(null);\n }\n\n useEffect(() => {\n if (selectedLocalization) setValues(selectedLocalization);\n }, [selectedLocalization, setValues])\n\n const form = {\n LanguageId: {\n Name: 'LanguageId',\n Label: t('labels:language'),\n Required: true\n },\n LocalizationName: {\n Name: 'Name',\n Label: t('labels:name'),\n Placeholder: \"Name\",\n Required: true\n },\n LocalizationDescription: {\n Name: 'Description',\n Label: t('labels:description'),\n Placeholder: \"Description\",\n Required: true\n }\n }\n\n const onSubmit = () => selectedLocalization ? updateLocalization(values) : addLocalization(values)\n\n return (\n \n \n Localizations\n \n }>\n \n \n \n } />\n \n \n {\n selectedLocalization &&\n \n }\n \n \n \n {\n localizations?.map(localization => (\n \n ))\n }\n \n \n \n );\n}\n\nexport default CategoryLocalizationForm;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport DialogActions from '@mui/material/DialogActions';\nimport { LoadingButton } from '@mui/lab';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\n\n// Components\nimport CategoryLocalizationForm from './product.category.localization.form';\nimport LabeledInputField from '../_components/labeled.input.component';\n\n// Api\nimport useProductApi from './api/useProductApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\nconst ProductCategoryForm = (props) => {\n const { t } = useTranslation(['actions', 'labels', 'forms']);\n\n const { data, open, onClose, onCreated, brand, brandLanguage, name } = props;\n\n const { values, valid, useTextFieldInput, setValues } = useForm(data || { Name: name, ParentId: 0, Brand: brand }); // useForm hook takes care of all validation and state management for forms\n\n const newcategory = !data;\n\n const actiontitle = (newcategory ? t('actions:create') : t('actions:update')); // Title of the action button on top right\n const dialogtitle = (newcategory ? t('labels:newcategory') : data?.Name); // Title of the dialog on top left\n\n const { useCreateCategory, useUpdateCategory } = useProductApi();\n const { isLoading: creating, mutate: createCategory } = useCreateCategory;\n const { isLoading: updating, mutate: updateCategory } = useUpdateCategory;\n\n const disabled = creating || updating;\n\n const form = {\n Name: {\n Name: 'Name',\n Label: 'Category Name',\n Placeholder: \"Enter the name of the category\",\n Required: true\n },\n Description: {\n Name: 'Description',\n Label: 'Description',\n Placeholder: \"Enter the description of the category\",\n Required: false\n },\n OpaqueId: {\n Name: 'OpaqueId',\n Label: 'Opaque Id',\n Placeholder: \"Enter the opaque id of the category\",\n Required: false\n },\n LanguageId: {\n Name: 'LanguageId',\n Label: 'Language Id',\n HelperText: \"Select a language\",\n Required: true\n }\n }\n\n const onSubmit = () => {\n newcategory\n ? createCategory(values, { onSuccess: categoryhash => handleOnSuccess({ name: 'Category', value: categoryhash }) })\n : updateCategory(values, { onSuccess: onClose });\n };\n\n const handleOnSuccess = (data) => {\n if (onCreated) onCreated(data);\n onClose();\n }\n\n return (\n \n {dialogtitle}\n \n \n \n \n \n \n \n \n \n \n {actiontitle}\n \n \n );\n}\n\nexport default ProductCategoryForm;\n","import React, { useState } from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport { TextField, CircularProgress } from '@mui/material';\nimport Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';\n\n// Components\nimport ProductCategoryForm from './product.category.form';\n\n// Api\nimport useProductApi from './api/useProductApi';\n\nconst filter = createFilterOptions();\n\nconst CategorySelect = (props) => {\n const { size, disabled, fullWidth, select = 'Id', value, label, error, required, helperText, onChange, onFocus, onBlur, canCreate, onCreated, brandhash, brandLanguage } = props;\n\n const [open, setOpen] = useState(false);\n const [newCategoryName, setNewCategoryName] = useState('');\n\n const handleForm = () => setOpen(!open);\n const getValue = (value) => find(data, [select, value]) || null;\n\n const handleChange = (_, value) => {\n if (canCreate) {\n if (!value) { }\n else if (value.inputValue) { setNewCategoryName(value.inputValue); handleForm() }\n else onChange(value[select]);\n }\n else onChange(value?.[select]);\n }\n\n const handleOptionChange = (option) => {\n if (canCreate) {\n if (typeof option === 'string') return option;\n if (option.inputValue) return option.title;\n return option.Name;\n }\n else return option?.Name || ''\n }\n\n const handleFilterOptions = (options, params) => {\n const filtered = filter(options, params);\n const { inputValue } = params;\n const isExisting = options.some((option) => inputValue === option.Name);\n if (inputValue !== '' && !isExisting && canCreate)\n filtered.push({ inputValue, title: `Add \"${inputValue}\"` });\n return filtered;\n }\n\n const { useFetchCategories } = useProductApi();\n const { data, isFetching } = useFetchCategories(brandhash);\n\n return (\n <>\n handleChange(_, value)}\n filterOptions={(options, params) => handleFilterOptions(options, params)}\n getOptionLabel={(option) => handleOptionChange(option)}\n renderOption={(props, option) =>
  • {option.Name || option.title}
  • }\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n {\n open &&\n \n }\n \n );\n}\n\nexport default CategorySelect;","import React, { useState, useEffect, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport dot from 'dot-object';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Button from '@mui/material/Button';\nimport { LoadingButton } from '@mui/lab';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Dialog from '@mui/material/Dialog';\n\n// Pages and Components\nimport ProductLocalizationForm from './product.localization.form';\nimport LabeledInputField from '../_components/labeled.input.component';\nimport ProductOptionsForm from './product.options.form';\nimport ProductExtrasForm from './product.extras.form';\nimport CategorySelect from './product.category.select.component';\nimport NumberField from '../_components/number.textfield.component';\nimport ImageDropZone from '../_components/image.dropzone.component';\nimport CurrencySelect from '../settings/currency/currency.select.component';\n\n// Api\nimport useProductApi from './api/useProductApi';\n\n// Utilities and Helpers\nimport useForm from '../_forms/useForm';\n\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\nconst ProductForm = (props) => {\n const { t } = useTranslation(['translation', 'forms']);\n const { hasPermissions } = useContext(UserContext);\n const { data, open, onClose, brand } = props;\n\n const { values, valid, useTextFieldInput, useSelectableFieldInput, useImageFieldInput, setValues } = useForm(data || { Brand: brand.Hash, CurrencyId: brand.CurrencyId }); // useForm hook takes care of all validation and state management for forms\n\n const newproduct = !data;\n\n const { useCreateProduct, useUpdateProduct } = useProductApi();\n const { isLoading: creating, mutate: createProduct } = useCreateProduct;\n const { isLoading: updating, mutate: updateProduct } = useUpdateProduct;\n\n const disabled = creating || updating;\n\n const form = {\n ImageBase64: {\n Name: 'ImageBase64',\n Label: t('labels:image'),\n Required: false,\n Type: 'base64image'\n },\n ThumbnailBase64: {\n Name: 'ThumbnailBase64',\n Label: t('labels:thumbnail'),\n Required: false,\n Type: 'base64image'\n },\n Category: {\n Name: 'Category',\n Label: t('labels:category'),\n Placeholder: \"Select the category of the product\",\n Required: false\n },\n OpaqueId: {\n Name: 'OpaqueId',\n Label: t('labels:opaqueid'),\n Placeholder: \"Enter the opaque id of the product\",\n Required: false,\n },\n Barcode: {\n Name: 'Barcode',\n Label: t('labels:barcode'),\n Placeholder: \"Enter the barcode of the product\",\n Required: true\n },\n Name: {\n Name: 'Name',\n Label: t('labels:name'),\n Placeholder: \"Enter the name of the product\",\n Required: true\n },\n Description: {\n Name: 'Description',\n Label: t('labels:description'),\n Placeholder: \"Enter the description of the product\",\n Required: false\n },\n Notes: {\n Name: 'Notes',\n Label: t('labels:notes'),\n Placeholder: \"Enter the notes of the product\",\n Required: false\n },\n Price: {\n Name: \"Price\",\n Label: t('labels:price'),\n Required: true,\n },\n CurrencyId: {\n Name: \"CurrencyId\",\n Label: t('labels:currency'),\n Required: true\n },\n LocalizationName: {\n Name: 'Name',\n Placeholder: t('labels:name'),\n Required: true\n },\n LocalizationDescription: {\n Name: 'Description',\n Placeholder: t('labels:description'),\n Required: true\n }\n }\n\n const [newId, setNewId] = useState(null);\n\n useEffect(() => {\n if (newId) setValues(prev => {\n return newId.name.includes('.') ? dot.str(newId.name, newId.id, { ...prev }) : { ...prev, [newId.name]: newId.value }\n })\n }, [newId, setValues])\n\n const onSubmit = () => {\n newproduct\n ? createProduct(values, { onSuccess: onClose })\n : updateProduct(values, { onSuccess: onClose });\n };\n\n return (\n \n {t('actions:newproduct')}\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 {t('labels:create')}\n \n \n );\n}\n\nexport default ProductForm;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../_components/navigation/navbar/action.component';\nimport ProductForm from '../product.form';\n\nconst ProductNewAction = props => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n } permissions={['product:create']} {...props} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default ProductNewAction;","import React from 'react';\nimport Enums from '../enums';\nimport moment from 'moment';\nimport { useHistory } from 'react-router';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport ShoppingCartOutlined from '@mui/icons-material/ShoppingCartOutlined';\n\n// Components\nimport BrandInfoAvatar from '../brand/brand.info.avatar';\nimport FoodicsSyncProductsAction from '../foodics/actions/foodics.syncproducts.action';\nimport Table from '../_components/table/table.component';\nimport ProductNewAction from './actions/product.new.action';\n\n// Api\nimport useProductApi from './api/useProductApi';\nimport useBrandApi from '../brand/api/useBrandApi';\n\nconst ProductsTable = ({ brandhash }) => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n const history = useHistory();\n\n const { useFetchBrand } = useBrandApi();\n const { data: brandInfo, isFetching: fetchingBrandInfo, isLoading: loadingBrandInfo } = useFetchBrand(brandhash);\n const { useFetchProducts } = useProductApi();\n const { data, isFetching, isLoading, refetch } = useFetchProducts(brandhash);\n\n const columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:product'),\n accessor: 'Name',\n width: 350,\n minWidth: 250,\n maxWidth: 400,\n disableFilters: true,\n },\n {\n Header: t('labels:category'),\n accessor: 'CategoryName',\n width: 350,\n minWidth: 250,\n maxWidth: 400,\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 2,\n },\n {\n Header: t('labels:price'),\n accessor: 'Price',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: 'Opaque Id',\n accessor: 'OpaqueId',\n width: 400,\n minWidth: 400,\n maxWidth: 400,\n disableFilters: true,\n disableResizing: true\n },\n {\n Header: t('labels:barcode'),\n accessor: 'Barcode',\n width: 400,\n minWidth: 400,\n maxWidth: 400,\n disableFilters: true,\n disableResizing: true\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.CreatedAt),\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableGlobalFilter: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 3,\n },\n {\n Header: t('labels:createdby'),\n accessor: 'CreatedByUser',\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableFilters: true,\n },\n { Header: t('labels:status'), id: 'Status', accessor: (row) => Enums.productstatus[row.Status], disableGlobalFilter: true, filter: 'oneof', filterorder: 1 },\n ];\n\n const hiddenColumns = ['Status']\n\n return (\n }\n onClose={() => history.goBack()}\n avatar={}\n afterActions={}\n icon={}\n rowColors={{\n fieldid: 'Status',\n colors: {\n 'Deleted': '#E74C3C'\n }\n }}\n localization={{\n back: t('labels:goback'),\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n expand: t('labels:seemore'),\n insights: t('labels:insights'),\n refetch: t('labels:refresh'),\n }}\n />\n );\n}\n\nexport default ProductsTable;","import React, { useContext } from 'react'\nimport { useParams } from \"react-router-dom\";\n\n// Components\nimport ProductsTable from '../products.table';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\nconst Products = () => {\n const { brandhash } = useParams();\n const { user } = useContext(UserContext);\n\n return \n}\n\nexport default React.memo(Products)","import { useEffect, useState } from 'react';\n\nconst usePreference = (preference, initvalue) => {\n const [pref, setPref] = useState(initvalue);\n\n useEffect(() => {\n const init = JSON.parse(localStorage.getItem(`bw-live-preferences-${preference}`));\n setPref(init || initvalue);\n }, [preference, initvalue])\n\n const storePref = (data) => {\n data && localStorage.setItem(`bw-live-preferences-${preference}`, JSON.stringify(data));\n setPref(data);\n }\n\n return [pref, storePref]\n}\n\nexport default usePreference;","import React from 'react';\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Checkbox from '@mui/material/Checkbox';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\n\nconst CountryListItem = (props) => {\n const { country, checkboxes, checked, disabled, selected, working, onItemCheck, onItemClick } = props; // Get all the props, most of them will be used for ListItem component\n\n return (\n \n onItemClick ? onItemClick(country.Id) : onItemCheck ? onItemCheck(country.Id, !checked) : null}>\n {\n checkboxes && !(working) &&\n < ListItemIcon >\n \n \n }\n {\n working &&\n < ListItemIcon >\n \n \n }\n \n \n \n );\n}\n\nexport default CountryListItem;","import React from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material UI\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Utilities and helpers\nimport useForm from '../../_forms/useForm';\n\nconst CountryForm = props => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n\n const { valid, useTextFieldInput } = useForm(data || {});\n\n const newcountry = !data;\n\n const dialogtitle = newcountry\n ? t('labels:newcountry')\n : `${t('labels:editingcountry')}: ${data?.Name}`;\n\n const form = {\n Name: {\n Name: 'Name',\n Label: t('labels:name'),\n Required: true,\n },\n Code: {\n Name: 'Code',\n Label: t('labels:code'),\n Required: true,\n },\n }\n\n return (\n <>\n \n {dialogtitle}\n \n {\n !newcountry &&\n You are about to change a Country. Please be aware that Country may currently be in use \n }\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default CountryForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { includes } from 'lodash';\n\n// Material UI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport ToolBar from '../../_components/toolbar/toolbar.component';\nimport CountryListItem from './country.list.item';\nimport CountryForm from './country.form';\n\n// API\nimport useCountryApi from './api/useCountryApi';\n\nconst CountryList = (props) => {\n const { addNew, checkboxes, actions, checkedItems, selectedItems, disabledItems, workingItems, onItemCheck, onItemClick } = props;\n const { t } = useTranslation(['labels']);\n\n const { useFetchCountries } = useCountryApi();\n const { data, isFetching, isLoading, refetch } = useFetchCountries();\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n \n \n \n \n {\n data &&\n data.map((country) =>\n \n )\n }\n \n \n \n \n );\n}\n\nexport default CountryList;","import React from 'react';\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Checkbox from '@mui/material/Checkbox';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\n\nconst CityListItem = (props) => {\n const { city, checkboxes, checked, disabled, selected, working, onItemCheck, onItemClick } = props; // Get all the props, most of them will be used for ListItem component\n\n return (\n \n onItemClick ? onItemClick(city.Id) : onItemCheck ? onItemCheck(city.Id, !checked) : null}>\n {\n checkboxes && !(working) &&\n < ListItemIcon >\n \n \n }\n {\n working &&\n < ListItemIcon >\n \n \n }\n \n \n \n );\n}\n\nexport default CityListItem;","import React from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library\n\n// Material-ui\nimport TextField from '@mui/material/TextField';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Button from '@mui/material/Button';\nimport Grid from '@mui/material/Grid';\n\n// Utilities and helpers\nimport useForm from '../../_forms/useForm';\n\nconst CityForm = props => {\n const { t } = useTranslation(['translation', 'forms']);\n const { data, submitting, handleSubmit, open, onClose } = props;\n const { values, valid, useTextFieldInput } = useForm(data || {});\n\n const newcity = !data;\n\n const dialogtitle = newcity\n ? t('translation:actions.newcity')\n : `Editing City: ${data?.Name}`;\n\n const form = {\n Name: {\n Name: 'Name',\n Label: 'Name',\n Required: true,\n }\n }\n\n return (\n <>\n \n {dialogtitle}\n \n {\n !newcity &&\n You are about to change a City. Please be aware that Country may currently be in use \n }\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default CityForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { includes } from 'lodash';\n\n// Material UI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport ToolBar from '../../_components/toolbar/toolbar.component';\nimport CityListItem from './city.list.item';\nimport CityForm from './city.form';\n\n// API\nimport useCityApi from './api/useCityApi';\n\nconst CityList = (props) => {\n const { countryid, addNew, checkboxes, actions, checkedItems, selectedItems, disabledItems, workingItems, onItemCheck, onItemClick } = props;\n const { t } = useTranslation(['labels']);\n\n const { useFetchCities } = useCityApi();\n const { data, isFetching, isLoading, refetch } = useFetchCities(countryid);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n \n \n \n \n {\n data &&\n data.map((city) =>\n \n )\n }\n \n \n \n \n );\n}\n\nexport default CityList;","import React from 'react';\n\n// Material Ui\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Checkbox from '@mui/material/Checkbox';\nimport ListItem from '@mui/material/ListItem';\nimport ListItemIcon from '@mui/material/ListItemIcon';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemText from '@mui/material/ListItemText';\n\nconst DistrictListItem = (props) => {\n const { district, checkboxes, checked, disabled, selected, working, onItemCheck, onItemClick } = props; // Get all the props, most of them will be used for ListItem component\n\n return (\n \n onItemClick ? onItemClick(district.Id) : onItemCheck ? onItemCheck(district.Id, !checked) : null}>\n {\n checkboxes && !(working) &&\n < ListItemIcon >\n \n \n }\n {\n working &&\n < ListItemIcon >\n \n \n }\n \n \n \n );\n}\n\nexport default DistrictListItem;","import React from 'react';\nimport { useTranslation } from 'react-i18next'; // Localization library\n\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Utilities and helpers\nimport useForm from '../../_forms/useForm';\n\nconst DistrictForm = props => {\n const { data, open, onClose } = props;\n const { t } = useTranslation(['labels', 'actions', 'prompts']);\n\n const { valid, useTextFieldInput } = useForm(data || {});\n\n const newdistrict = !data;\n\n const dialogtitle = newdistrict\n ? t('labels:newdistrict')\n : `${t('labels:editingdistrict')}: ${data?.Name}`;\n\n const form = {\n Name: {\n Name: 'Name',\n Label: t('labels:name'),\n Required: true,\n }\n }\n\n return (\n <>\n \n {dialogtitle}\n \n {\n !newdistrict &&\n You are about to change a District. Please be aware that District may currently be in use \n }\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default DistrictForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { includes } from 'lodash';\n\n// Material UI\nimport List from '@mui/material/List';\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport ToolBar from '../../_components/toolbar/toolbar.component';\nimport DistrictListItem from './district.list.item';\nimport DistrictForm from './district.form';\n\n// API\nimport useDistrictApi from './api/useDistrictApi';\n\nconst DistrictList = (props) => {\n const { cityid, addNew, checkboxes, actions, checkedItems, selectedItems, disabledItems, workingItems, onItemCheck, onItemClick } = props;\n const { t } = useTranslation(['labels']);\n\n const { useFetchDistricts } = useDistrictApi();\n const { data, isFetching, isLoading, refetch } = useFetchDistricts(cityid);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n \n \n \n \n {\n data &&\n data.map((district) =>\n \n )\n }\n \n \n \n \n );\n}\n\nexport default DistrictList;","import React, { useState } from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport CountryList from '../country.list';\nimport CityList from '../../city/city.list';\nimport DistrictList from '../../district/district.list';\n\nconst CityDistrict = () => {\n const [selectedCountry, setSelectedCountry] = useState(null);\n const [selectedCity, setSelectedCity] = useState(null);\n\n const onCountrySelect = (country) => {\n setSelectedCountry(country);\n setSelectedCity(null)\n }\n const onCitySelect = (city) => setSelectedCity(city)\n\n const citysubtitle = selectedCountry ? 'Cities of Country: ' + selectedCountry.Name : ''\n const districtsubtitle = selectedCity ? 'Districts of City: ' + selectedCity.Name : ''\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n\n}\n\nexport default CityDistrict;","import React from 'react';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport PermissionList from '../permissions.list';\n\nconst Permissions = () => {\n return (\n \n \n \n \n \n );\n}\n\nexport default Permissions;\n","import React, { useState } from 'react';\n\n// Material UI\nimport Grid2 from '@mui/material/Unstable_Grid2/Grid2';\n\n// Components\nimport RolesList from '../roles.list';\nimport PermissionList from '../../permission/permissions.list';\n\n// Api\nimport usePermissionApi from '../../permission/api/usePermissionApi';\n\nconst Roles = () => {\n const [selectedRole, setSelectedRole] = useState(null);\n const [workingPermissons, setWorkingPermissons] = useState([]);\n\n const { useFetchRolePermissions, useAddPermissionToRole, useRemovePermissionFromRole } = usePermissionApi();\n const { data } = useFetchRolePermissions(selectedRole);\n const { mutateAsync: addPermissionToRole } = useAddPermissionToRole;\n const { mutateAsync: removePermissionFromRole } = useRemovePermissionFromRole;\n\n const onItemCheck = async (id, checked) => {\n setWorkingPermissons([id]);\n if (checked)\n await addPermissionToRole({ selectedRole: selectedRole, permissionid: id });\n else\n await removePermissionFromRole({ selectedRole: selectedRole, permissionid: id });\n setWorkingPermissons([]);\n }\n\n return (\n \n \n \n \n {\n selectedRole &&\n \n item.Id) || [])}\n workingItems={workingPermissons}\n onItemCheck={onItemCheck}\n />\n \n }\n \n );\n}\n\nexport default Roles;","import { useMutation, useQuery, useQueryClient } from 'react-query';\nimport { useTranslation } from 'react-i18next';\nimport { useSnackbar } from 'notistack';\n\n// Api\nimport { get, post, patch } from '../../../_api/api';\n\nconst useResellerApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n const { t } = useTranslation(['errors', 'prompts']);\n\n const useFetchResellers = () => useQuery(['resellers'], () => get('/Reseller'));\n const useFetchResellersBrands = (resellerHash) => useQuery([resellerHash, 'resellers-brands'], () => get(`/Reseller/${resellerHash}/brand`));\n\n const useCreateReseller = useMutation(newReseller => post('/Reseller', newReseller),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:resellercreated'), { variant: 'success' });\n queryClient.invalidateQueries(['resellers'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotcreatereseller')} - ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateReseller = useMutation(reseller => patch('/Reseller', reseller),\n {\n onSuccess: () => {\n enqueueSnackbar(t('prompts:resellerupdated'), { variant: 'success' });\n queryClient.invalidateQueries(['resellers'], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`${t('errors:couldnotupdatereseller')} - ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchResellers,\n useFetchResellersBrands,\n useCreateReseller,\n useUpdateReseller\n }\n}\n\nexport default useResellerApi;\n","import React from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport CircularProgress from '@mui/material/CircularProgress';\n\n// Api\nimport useResellerApi from './api/useResellerApi';\n\nconst ResellerSelect = (props) => {\n const { size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const getValue = (value) => find(data, ['Hash', value]) || null;\n\n const handleChange = (_, value) => onChange(value?.Hash);\n\n const handleOptionChange = (option) => `${option.Id} - ${option.CompanyName}`\n\n const { useFetchResellers } = useResellerApi();\n const { data, isFetching } = useFetchResellers();\n\n return (\n handleChange(_, value)}\n getOptionLabel={(option) => handleOptionChange(option)}\n\n renderInput={(params) => (\n \n {isFetching ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n />\n );\n}\n\nexport default ResellerSelect;","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport AppBar from '@mui/material/AppBar';\nimport Button from '@mui/material/Button';\nimport Container from '@mui/material/Container';\nimport Dialog from '@mui/material/Dialog';\nimport DialogContent from '@mui/material/DialogContent';\nimport Divider from '@mui/material/Divider';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Pages and Components\nimport Gender from '../../user/gender.select.component';\nimport Password from '../../_components/password.generator.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\nimport UserTypeRadios from '../../user/usertype.radio.component';\nimport PermissionsList from '../permission/permissions.list';\nimport RolesList from '../role/roles.list';\n\n// Api\nimport useUserApi from '../../user/api/useUserApi';\nimport useRoleApi from '../role/api/useRoleApi';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\nimport ResellerSelect from '../reseller/reseller.select.component';\n\n\nconst SystemUsersForm = ({ user, open, onClose }) => {\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { useCreateUser, useUpdateUser } = useUserApi();\n const { isLoading: creating, mutate: createUser } = useCreateUser;\n const { isLoading: updating, mutate: updateUser } = useUpdateUser;\n\n const disabled = creating || updating;\n\n const { useFetchPermissionsOfRoleList } = useRoleApi();\n\n const {\n values,\n setValue,\n setValues,\n valid,\n useTextFieldInput,\n useSelectableFieldInput,\n useArrayFieldInput\n } = useForm(user || { UserTypeId: '1' });\n\n let form = {\n UserTypeId: {\n Name: 'UserTypeId',\n Label: t('labels:usertype'),\n Required: true,\n },\n FullName: {\n Name: 'FullName',\n Label: t('labels:namesurname'),\n Required: true,\n },\n Gender: {\n Name: 'Gender',\n Label: t('labels:gender'),\n Required: false,\n },\n ResellerHash: {\n Name: 'ResellerHash',\n Label: t('labels:reseller'),\n Required: values.UserTypeId === '8',\n },\n OpaqueId: {\n Name: 'OpaqueId',\n Label: t('labels:opaqueid'),\n Required: false,\n },\n Birthday: {\n Name: 'Birthday',\n Label: t('labels:birthday'),\n Required: false,\n },\n Phone: {\n Name: 'Phone',\n Label: t('labels:phone'),\n Required: false,\n Type: 'phone'\n },\n Email: {\n Name: 'Email',\n Label: t('labels:email'),\n Required: true,\n },\n Password: {\n Name: 'Password',\n Label: t('labels:password'),\n Required: true,\n },\n Roles: {\n Name: 'Roles',\n },\n Permissions: {\n Name: 'Permissions',\n }\n }\n\n const onSubmit = () => {\n user\n ? updateUser(values, { onSuccess: onClose })\n : createUser(values, { onSuccess: onClose });\n }\n\n const { value: roles, onChange: handleRoleSelect } = useArrayFieldInput(form.Roles)\n const { value: permissions, onChange: handlePermissionSelect } = useArrayFieldInput(form.Permissions)\n const permsofroles = useFetchPermissionsOfRoleList(roles);\n const checkRole = async (roleid, checked) => handleRoleSelect(roleid, checked);\n const checkPermission = async (permissionid, checked) => handlePermissionSelect(permissionid, checked);\n\n useEffect(() => {\n if (parseInt(values.UserTypeId) === 1) setValue(form.Roles.Name, [1]);\n else setValue(form.Roles.Name, [3]);\n }, [values.UserTypeId, form.Roles.Name, setValue])\n\n useEffect(() => {\n if (values.UserTypeId === '1') {\n setValues(prev => ({ ...prev, ResellerHash: null, ResellerBrands: null }));\n }\n }, [values.UserTypeId, setValues])\n\n return (\n \n \n \n \n \n \n {user ? `${t('labels:editinguser')}: ${user.FullName}` : t('labels:newuser')}\n \n \n \n \n \n \n \n \n \n {t('prompts:usertype')} \n {t('prompts:usertypedetailed')} \n \n \n \n } />\n \n \n \n \n \n {t('prompts:generalinfo')} \n {t('prompts:usergeneralinfo')} \n \n \n \n \n \n \n \n \n \n } />\n \n \n \n \n } />\n \n \n \n \n \n {t('prompts:rolesandpermission')} \n {t('prompts:rolesandpermissioninfo')} \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default SystemUsersForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport SystemUsersForm from '../system.users.form';\nimport Action from '../../../_components/navigation/navbar/action.component';\n\nconst SystemUserNewAction = (props) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n permissions={['user:create']}\n {...props} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default SystemUserNewAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport SystemUsersForm from '../system.users.form';\nimport Action from '../../../_components/navigation/navbar/action.component';\n\nconst SystemUserEditAction = (props) => {\n const { user, ...otherProps } = props;\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n permissions={['user:edit']}\n {...otherProps} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default SystemUserEditAction;","import React, { useContext } from 'react'\nimport { useTranslation } from 'react-i18next';\nimport moment from 'moment';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Table from '../../_components/table/table.component';\nimport Badge from '../../_components/badge.component';\nimport SystemUserNewAction from './actions/system.user.new.action';\nimport SystemUserEditAction from './actions/system.user.edit.action';\nimport UserChangePasswordAction from '../../user/actions/user.changepassword.action';\nimport UserChangeStatusAction from '../../user/actions/user.changestatus.action';\n\n// Api\nimport useUserApi from '../../user/api/useUserApi'\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\n\nconst SystemUsers = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { hasPermissions } = useContext(UserContext);\n const { useFetchSystemUsers } = useUserApi();\n const { data, isFetching, isLoading, refetch } = useFetchSystemUsers();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:name'),\n className: 'actions',\n Cell: ({ row }) => {\n return (\n <>\n \n {row.values.FullName}\n \n \n \n \n \n \n \n \n );\n },\n minWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:email'),\n accessor: 'Email',\n width: 300,\n minWidth: 300,\n maxWidth: 400,\n disableFilters: true,\n hidden: !hasPermissions(['user:view']),\n },\n {\n Header: t('labels:password'),\n accessor: 'Password',\n minWidth: 120,\n disableResizing: true,\n disableFilters: true,\n hidden: !hasPermissions(['user:view']),\n },\n {\n Header: t('labels:usertype'),\n accessor: 'UserType',\n width: 200,\n minWidth: 200,\n maxWidth: 200,\n disableResizing: true,\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 6,\n },\n {\n Header: t('labels:createdat'),\n id: 'CreatedAt',\n accessor: (row) => row.CreatedAt && moment(row.CreatedAt),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 2,\n },\n { id: 'Status', Header: t('labels:status'), accessor: (row) => t(`enums:genericstatus.${row.Status}`), disableResizing: true, disableGlobalFilter: true, filter: 'oneof', filterorder: 3, hidden: true },\n { id: 'FullName', accessor: 'FullName', disableResizing: true, disableFilters: true, hidden: true },\n { id: 'Roles', accessor: 'Roles', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'Permissions', accessor: 'Permissions', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'UserTypeId', accessor: 'UserTypeId', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'Gender', accessor: 'Gender', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'Hash', accessor: 'Hash', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'ResellerHash', accessor: 'ResellerHash', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'OpaqueId', accessor: 'OpaqueId', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n { id: 'Phone', accessor: 'Phone', disableGlobalFilter: true, disableResizing: true, disableFilters: true, hidden: true },\n ];\n\n return (\n }\n localization={{\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n refetch: t('labels:refresh'),\n }}\n />\n );\n}\n\n// const SystemUsers = () => {\n// const { hasPermissions } = useContext(UserContext);\n// const { t } = useTranslation(['actions', 'labels']);\n// const { useFetchSpecificUsers } = useUserApi();\n\n// const { data, isLoading, isFetching } = useFetchSpecificUsers(1);\n\n// return (\n//
    \n// {\n// data?.map(user => (\n// \n// \n// {user.FullName}\n// {\n// user.UserType &&\n// {`- ${user.UserType}`}\n// }\n// {\n// user.Merchant &&\n// {`- ${user.Merchant}`}\n// }\n// {\n// hasPermissions(['user:view']) &&\n// <>\n// {`- ${user.Email}`}\n// {`- ${user.Password}`}\n// \n// }\n// \n// \n// \n// \n// \n// \n// \n// \n// ))\n// }\n//
    \n// )\n// }\n\nexport default SystemUsers","import React, { useState, useEffect } from 'react';\nimport { find } from 'lodash';\n\n// Material UI\nimport { Checkbox, TextField, Autocomplete } from '@mui/material';\nimport { createFilterOptions } from '@mui/material';\n\n// Material UI Icons\nimport CheckBoxOutlineBlankIcon from '@mui/icons-material/CheckBoxOutlineBlank';\nimport CheckBoxIcon from '@mui/icons-material/CheckBox';\n\n// Api\nimport useBrandApi from '../../brand/api/useBrandApi';\n\nconst filterOptions = createFilterOptions({\n limit: null,\n});\n\nconst icon = ;\nconst checkedIcon = ;\n\nconst BrandMultiSelect = (props) => {\n const { size, disabled, fullWidth, value, label, error, required, helperText, onChange, onFocus, onBlur } = props;\n\n const [values, setValues] = useState([]);\n\n const { useFetchBrandsRaw } = useBrandApi();\n const { data, isFetching } = useFetchBrandsRaw();\n\n useEffect(() => {\n const getValue = (value) => find(data, ['Hash', value]) || null;\n\n if (value) {\n let _values = [];\n value.forEach(offerhash => {\n let _value = getValue(offerhash);\n if (_value) _values.push(_value)\n });\n setValues(_values);\n }\n }, [value, data])\n\n const handleOptionChange = (option) => {\n if (typeof option === 'string') return option;\n if (option.inputValue) return option.title;\n return `${option.Id} - ${option.Name}` || ''\n }\n\n return (\n handleOptionChange(option)}\n onChange={(_, value) => onChange(value, null, 'Hash')}\n renderOption={(props, option, { selected }) => (\n
  • \n \n {`${option.Id} - ${option.Name}` || ''}\n
  • \n )}\n renderInput={(params) => (\n \n )}\n />\n );\n}\n\nexport default BrandMultiSelect","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\n\n// Components\nimport FormDialog from '../../_components/dialogs/form.dialog';\nimport BrandMultiSelect from './reseller.brands.multiselect.component';\nimport LabeledInputField from '../../_components/labeled.input.component';\n\n// Api\nimport useResellerApi from './api/useResellerApi';\n\n// Utilities and Helpers\nimport useForm from '../../_forms/useForm';\n\nconst ResellerForm = ({ reseller, open, onClose }) => {\n const { t } = useTranslation(['labels', 'prompts', 'errors', 'enums']);\n\n const { useCreateReseller, useUpdateReseller } = useResellerApi();\n const { isLoading: creating, mutate: createReseller } = useCreateReseller;\n const { isLoading: updating, mutate: updateReseller } = useUpdateReseller;\n\n const disabled = creating || updating;\n\n let form = {\n CompanyName: {\n Name: 'CompanyName',\n Label: t('labels:company'),\n Required: true,\n },\n ContactPersonName: {\n Name: 'ContactPersonName',\n Label: t('labels:contactperson'),\n Required: true,\n },\n ContactPersonEmail: {\n Name: 'ContactPersonEmail',\n Label: t('labels:email'),\n Required: true,\n },\n ContactPersonPhone: {\n Name: 'ContactPersonPhone',\n Label: t('labels:phone'),\n Required: true,\n },\n Address: {\n Name: 'Address',\n Label: t('labels:address'),\n Required: false,\n },\n Brands: {\n Name: 'Brands',\n Label: t('labels:brands'),\n Type: 'autocomplete',\n Required: true\n },\n }\n\n const {\n values,\n valid,\n useTextFieldInput,\n useArrayFieldInput\n } = useForm(reseller || {});\n\n const onSubmit = () => {\n reseller\n ? updateReseller(values, { onSuccess: onClose })\n : createReseller(values, { onSuccess: onClose })\n }\n\n return (\n \n \n \n } />\n \n \n \n \n \n \n );\n}\n\nexport default ResellerForm;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI Icons\nimport AddIcon from '@mui/icons-material/Add';\n\n// Components\nimport Action from '../../../_components/navigation/navbar/action.component';\nimport ResellerForm from '../reseller.form';\n\nconst ResellerNewAction = (props) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n return (\n <>\n }\n permissions={['user:create']}\n {...props} />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default ResellerNewAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\n\n// Components\nimport ResellerForm from '../reseller.form';\nimport Action from '../../../_components/navigation/navbar/action.component';\n\nconst ResellerEditAction = ({ reseller, variant, size, disabled }) => {\n const { t } = useTranslation(['actions']);\n\n const [formOpen, setFormOpen] = useState(false);\n const toggleFormOpen = () => setFormOpen(!formOpen);\n\n if (!reseller) return null;\n\n return (\n <>\n }\n permissions={['user:edit']}\n />\n {\n formOpen &&\n \n }\n \n );\n}\n\nexport default ResellerEditAction;","import React from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Badge from '../../_components/badge.component';\nimport Table from '../../_components/table/table.component';\n\n// Api\nimport useResellerApi from './api/useResellerApi';\nimport ResellerNewAction from './actions/reseller.new.action';\nimport ResellerEditAction from './actions/reseller.edit.action';\n\nconst Resellers = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchResellers } = useResellerApi();\n const { data, isFetching, isLoading, refetch } = useFetchResellers();\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableFilters: true,\n },\n {\n Header: t('labels:company'),\n className: 'actions',\n Cell: ({ row }) => {\n return (\n <>\n \n {row.values.CompanyName}\n \n \n \n \n \n \n );\n },\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:contactperson'),\n accessor: 'ContactPersonName',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:email'),\n accessor: 'ContactPersonEmail',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:phone'),\n accessor: 'ContactPersonPhone',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true,\n },\n {\n Header: t('labels:address'),\n accessor: 'Address',\n width: 300,\n minWidth: 300,\n maxWidth: 300,\n disableFilters: true\n },\n { id: 'Status', Header: t('labels:status'), accessor: (row) => t(`enums:genericstatus.${row.Status}`), filter: 'oneof', filterorder: 1, disableGlobalFilter: true, disableSortBy: true, hidden: true },\n { id: 'Hash', accessor: 'Hash', disableGlobalFilter: true, disableSortBy: true, hidden: true },\n { id: 'CompanyName', accessor: 'CompanyName', disableSortBy: true, hidden: true },\n { id: 'Brands', accessor: 'Brands', disableSortBy: true, hidden: true }\n ];\n\n return (\n }\n localization={{\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n refetch: t('labels:refresh'),\n }}\n />\n );\n}\n\nexport default Resellers","import React from 'react'\nimport { useTranslation } from 'react-i18next';\nimport usePreference from '../_helpers/preference.helper';\n\n// MUI\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport SettingsIcon from '@mui/icons-material/Settings';\n\n// Components and Pages\nimport CityDistrict from './country/pages/country-city-district.page';\nimport Permissions from './permission/pages/permissions.page';\nimport Roles from './role/pages/roles.page';\nimport ToolBar from '../_components/toolbar/toolbar.component';\nimport SystemUsers from './users/system.users.page';\nimport Resellers from './reseller/resellers.page';\n\nconst Settings = () => {\n const { t } = useTranslation(['labels']);\n const [selectedTab, setSelectedTab] = usePreference('settings-selected-tab', 1);\n\n const handleChange = (_, newValue) => setSelectedTab(parseInt(newValue));\n\n const renderTab = (value) => {\n switch (value) {\n case 1: return ;\n case 2: return ;\n case 3: return ;\n case 4: return ;\n case 5: return ;\n default: return '';\n }\n }\n\n return (\n \n }\n px\n />\n \n \n \n \n \n \n \n \n {renderTab(selectedTab)}\n \n \n )\n}\n\nexport default Settings;\n\n/*\n\n case 4: return ;\n case 5: return ;\n case 6: return ;\n\n \n \n \n\n*/","import React, { useState, createContext } from 'react';\n\n// RHF\nimport { useForm, FormProvider } from 'react-hook-form';\n\n// Api\nimport usePassApi from '../pass/api/usePassApi';\n\nexport const CampaignAppLayoutContext = createContext();\n\nexport const CampaignAppLayoutProvider = (props) => {\n const { subscriber, children } = props;\n\n // RHF initialization\n const methods = useForm({ mode: 'onChange', reValidateMode: 'onChange' });\n\n // Campaign list and action hooks\n const { useFetchCampaigns, useCustomActionCampaign } = usePassApi();\n const { data, isFetching } = useFetchCampaigns(subscriber.PassHash);\n const { mutate, isLoading, data: actionResponse } = useCustomActionCampaign;\n\n // Dialog state management\n const [dialogOpen, setDialogOpen] = useState(false);\n const [selectedCampaign, setSelectedCampaign] = useState(null);\n const [selectedPageIndex, setSelectedPageIndex] = useState(0);\n\n // Dialog open handler\n const handleOpenDialog = (selectedCampaign) => {\n setSelectedPageIndex(0);\n setSelectedCampaign(selectedCampaign);\n setDialogOpen(true);\n }\n\n // Dialog close handler\n const handleCloseDialog = () => {\n setDialogOpen(false);\n methods.reset();\n }\n\n const checkCondition = (string) => Function(\"return \" + replaceText(string))();\n\n // Regexes for replacing text\n const subscriberRegex = /@Payload+.Subscriber+.[a-zA-Z0-9]+(?!.Value)/g;\n const fieldRegex = /@Fields.[a-zA-Z0-9]+.Value/g;\n const payloadRegex = /@Payload.(?!Subscriber|Fields)[a-zA-Z0-9]+.Value/g;\n\n const replaceText = (text) => {\n if (text && text.includes('@')) {\n const subscriberMatches = text.match(subscriberRegex);\n const fieldMatches = text.match(fieldRegex);\n const payloadMatches = text.match(payloadRegex);\n\n payloadMatches?.forEach(match => {\n text = text.replace(match, actionResponse?.Payload.Items.find(item => item.Key === match.split('.')[1]).Value);\n })\n fieldMatches?.forEach(match => {\n text = text.replace(match, methods.watch(`Payload.Items.${match.split('.')[1]}`));\n })\n subscriberMatches?.forEach(match => {\n text = text.replace(match, subscriber[match.split('.')[2]]);\n })\n }\n text = text.replace(/AND/g, '&&').replace(/OR/g, '||');\n\n return text;\n }\n\n return (\n campaign.CampaignType === 3),\n isFetching,\n mutate,\n isLoading,\n actionResponse,\n goTo: (pageIndex) => setSelectedPageIndex(pageIndex),\n dialogOpen,\n handleOpenDialog,\n handleCloseDialog,\n checkCondition,\n replaceText\n }}>\n \n {children}\n \n \n );\n}","import React, { useState, useContext } from 'react'\nimport { useSnackbar } from 'notistack';\nimport { useQueryClient } from 'react-query';\n\n// MUI\nimport Button from '@mui/material/Button';\n\n// Components\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// RHF\nimport { useFormContext } from 'react-hook-form';\n\n// Contexts\nimport { CampaignAppLayoutContext } from '../campaign.applayout.context';\n\nconst ActionButton = ({ action, fields }) => {\n const { enqueueSnackbar } = useSnackbar();\n const { handleSubmit } = useFormContext();\n const queryClient = useQueryClient();\n\n const { selectedCampaign, mutate, isLoading, handleCloseDialog, replaceText, goTo, subscriber } = useContext(CampaignAppLayoutContext);\n\n const [openConfirm, setOpenConfirm] = useState(false);\n\n const onClick = () => {\n switch (action.Action.toLowerCase()) {\n case 'processtransaction': handleSubmit(payload => onSubmit(payload, 'process-action'))(); break;\n case 'cancelpurchase': handleSubmit(payload => onSubmit(payload, 'cancel-purchase'))(); break;\n case 'canceltransaction': handleCloseDialog(); break;\n case 'close': handleCloseDialog(); break;\n case 'nextscreen': goTo(prev => prev + 1); break;\n default: handleSubmit(payload => onSubmit(payload, 'process-action'))();\n }\n }\n\n const preparePayload = (values) => {\n const newValues = { SubscriberId: subscriber.Id, CampaignId: selectedCampaign.Id, Resolve: true, Payload: { Items: [] } };\n Object.entries(values.Payload.Items).forEach(([key, value]) => {\n newValues.Payload.Items.push({ Key: key, Value: value, Type: fields.find(field => key === field.PayloadField).PayloadFieldType });\n }\n );\n return newValues;\n }\n\n const onSubmit = (payload, actionName) => {\n mutate({ ...preparePayload(payload), endpoint: actionName }, {\n onSuccess: (data) => {\n setOpenConfirm(false);\n queryClient.invalidateQueries([subscriber.Hash]);\n const route = action.CampaignResponse.find(response => response.Response === data.CampaignResponse);\n if (route) goTo(route.GoTo);\n else {\n handleCloseDialog();\n enqueueSnackbar('Page not found.', { variant: 'error' });\n }\n },\n onError: () => {\n if (openConfirm) setOpenConfirm(false);\n handleCloseDialog()\n }\n });\n }\n\n return (\n <>\n setOpenConfirm(true)) : onClick}>\n {action.Text}\n \n {\n action.Confirm &&\n setOpenConfirm(false)}\n handleSubmit={onClick}\n submitting={isLoading}\n title={replaceText(action.Confirm.Caption)}\n confirmmessage={replaceText(action.Confirm.Text)}\n />\n }\n \n )\n}\n\nexport default ActionButton","import React from 'react'\n\n// MUI\nimport { TextField as MuiTextField } from '@mui/material';\n\n// RHF\nimport { useFormContext } from 'react-hook-form';\n\nconst TextField = ({ field }) => {\n const { register, formState: { errors } } = useFormContext();\n\n return (\n \n )\n}\n\n\nexport default TextField","import React from 'react'\n\n// MUI\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport InputAdornment from '@mui/material/InputAdornment';\n\n// MUI Icons\nimport AddIcon from '@mui/icons-material/Add';\nimport RemoveIcon from '@mui/icons-material/Remove';\n\n// RHF\nimport { useFormContext, useController } from 'react-hook-form';\n\nconst StepperField = ({ field, isDisabled }) => {\n const { control } = useFormContext();\n\n const { field: { name, ref, value, onChange, onBlur }, fieldState: { error } } = useController({\n name: `Payload.Items.${field.PayloadField}`,\n control,\n defaultValue: parseInt(field.Stepper.StartFrom || field.Stepper.MinStep),\n rules: {\n required: true,\n max: {\n value: parseInt(field.Stepper.MaxStep),\n message: `Max value is ${field.Stepper.MaxStep}`\n },\n min: {\n value: parseInt(field.Stepper.MinStep),\n message: `Min value is ${field.Stepper.MinStep}`\n }\n }\n })\n\n const onIncrease = () => (value < field.Stepper.MaxStep) && onChange(value + field.Stepper.Increment);\n const onDecrease = () => (value > field.Stepper.MinStep) && onChange(value - field.Stepper.Increment);\n\n return (\n \n \n \n \n ,\n startAdornment:\n \n \n \n \n \n }} />\n )\n}\n\nexport default StepperField","import React from 'react'\n\n// MUI\nimport TextField from '@mui/material/TextField';\n\n// RHF\nimport { useFormContext, useController } from 'react-hook-form';\n\nconst AmountField = ({ field, isDisabled }) => {\n const { control } = useFormContext();\n\n const { field: { name, value, onChange, ref }, fieldState: { error } } = useController({\n name: `Payload.Items.${field.PayloadField}`,\n control,\n defaultValue: null,\n rules: {\n required: {\n value: true,\n message: 'This field is required.'\n },\n pattern: {\n value: /^[-+]?[0-9]*\\.?[0-9]{1,2}$/,\n message: 'The decimal part can be maximum 2 digits.'\n },\n max: {\n value: parseInt(field.NumericInput.Max),\n message: `Max value is ${field.NumericInput.Max}.`\n },\n min: {\n value: parseInt(field.NumericInput.Min),\n message: `Min value is ${field.NumericInput.Min}.`\n },\n },\n })\n\n const handleChange = (e) => {\n let leftSide = e.target.value.split('.')[0];\n let rightSide = e.target.value.split('.')[1];\n if (rightSide) {\n if (rightSide.length > 2) {\n rightSide = rightSide.substring(0, 2);\n }\n onChange(`${leftSide}.${rightSide}`);\n }\n else onChange(leftSide);\n }\n\n const handleKeyDown = (e) => {\n if (e.key === 'e' || e.key === 'E' || e.key === '+') e.preventDefault();\n\n if (field.PayloadFieldType === 'int') {\n if (e.key === ',' || e.key === '.') {\n e.preventDefault();\n }\n }\n }\n return (\n \n )\n}\n\nexport default AmountField","import React, { useContext } from 'react'\n\n// MUI\nimport Stack from '@mui/material/Stack';\n\n// RHF\nimport TextField from './fieldvariants/text.field.component';\nimport StepperField from './fieldvariants/stepper.field.component';\nimport AmountField from './fieldvariants/amount.field.component';\n\n// Contexts\nimport { CampaignAppLayoutContext } from '../campaign.applayout.context';\n\nconst Field = ({ field }) => {\n const { checkCondition } = useContext(CampaignAppLayoutContext);\n\n let isVisible = field.isVisible ? checkCondition(field.isVisible) : true;\n var isDisabled = field.isEnabled ? !checkCondition(field.isEnabled) : false;\n if (!isVisible) return null;\n\n const component = {\n 'Stepper': ,\n 'Amount': ,\n 'Points': ,\n 'Text': ,\n }[field.Type];\n\n return component || null;\n}\nconst AppLayoutFieldList = ({ fields }) => {\n\n return (\n \n {\n fields.map((field, key) => )\n }\n \n )\n}\n\nexport default AppLayoutFieldList","import React, { useContext } from 'react';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport ActionButton from './action.button.component';\nimport AppLayoutFieldList from './applayout.field.list.component';\n\n// Contexts\nimport { CampaignAppLayoutContext } from '../campaign.applayout.context';\n\nconst AppLayoutPage = () => {\n const { page, replaceText } = useContext(CampaignAppLayoutContext);\n\n if (!page) return null;\n\n return (\n \n {\n page.IconUrl &&\n Page Icon\n }\n {\n page.CaptionText &&\n {replaceText(page.CaptionText)}\n }\n {\n page.DescriptionText &&\n {replaceText(page.DescriptionText)}\n }\n {\n page.InputFields?.length > 0 &&\n \n }\n {\n page.Actions.filter(a => a.Type === 'Button').map((action, key) =>\n \n )\n }\n \n );\n}\n\nexport default AppLayoutPage;","import React, { useContext } from 'react';\n\n// Material UI\nimport AppBar from '@mui/material/AppBar';\nimport Dialog from '@mui/material/Dialog';\nimport Toolbar from '@mui/material/Toolbar';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport DialogContent from '@mui/material/DialogContent';\n\n// Material UI icons\nimport CloseIcon from '@mui/icons-material/Close';\n\n// Components\nimport AppLayoutPage from './applayouts/applayout.page';\n\n// Contexts\nimport { CampaignAppLayoutContext } from './campaign.applayout.context';\n\nconst RunCustomCampaign = () => {\n const { selectedCampaign, dialogOpen, handleCloseDialog } = useContext(CampaignAppLayoutContext);\n\n const dialogtitle = selectedCampaign?.CampaignName;\n\n return (\n \n \n \n \n \n \n {dialogtitle}\n \n \n \n \n \n \n );\n}\n\nexport default RunCustomCampaign;","import React, { useState, useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Menu from '@mui/material/Menu';\nimport MenuItem from '@mui/material/MenuItem';\n\n// MUI Icons\nimport AutoFixHighIcon from '@mui/icons-material/AutoFixHigh';\n\n// Components\nimport RunCustomCampaign from '../campaign.run.custom';\nimport TooltipIconButton from '../../_components/buttons/tooltip.icon.button';\n\n// Contexts\nimport { UserContext } from '../../_usercontext/user.context';\nimport { CampaignAppLayoutContext } from '../campaign.applayout.context';\n\nconst RunCustomCampaignAction = (props) => {\n const { size, color, disabled } = props;\n const { t } = useTranslation(['actions']);\n\n const { hasPermissions } = useContext(UserContext);\n const { isFetching, handleOpenDialog, campaigns } = useContext(CampaignAppLayoutContext);\n\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const closeMenu = () => setAnchorEl(null);\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n\n if (isFetching || campaigns.length === 0) return null;\n\n if (!hasPermissions(['subscriber:runcustomcampaign'])) return null\n\n return (\n <>\n } />\n \n {\n campaigns.map(campaign => campaign.CampaignType === 3 &&\n handleOpenDialog(campaign)}>\n {campaign.CampaignName}\n \n )\n }\n \n \n \n );\n}\n\nexport default RunCustomCampaignAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport BlockIcon from '@mui/icons-material/Block';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberVoidAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useVoidSubscriber } = useSubscriberApi();\n const { isLoading: voiding, mutate: voidSubscriber } = useVoidSubscriber;\n\n const handleSubmit = () => voidSubscriber(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:void']}\n onClick={toggleConfirm}\n color='error'\n />\n \n \n );\n}\n\nexport default SubscriberVoidAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport BlockIcon from '@mui/icons-material/Block';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberUnvoidAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useUnvoidSubscriber } = useSubscriberApi();\n const { isLoading: unvoiding, mutate: unvoidSubscriber } = useUnvoidSubscriber;\n\n const handleSubmit = () => unvoidSubscriber(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:unvoid']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberUnvoidAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport DeleteOutlinedIcon from '@mui/icons-material/DeleteOutlined';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberPurgeAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n const history = useHistory();\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { usePurgeSubscriber } = useSubscriberApi();\n const { isLoading: purging, mutate: purgeSubscriber } = usePurgeSubscriber;\n\n const handleSubmit = () => purgeSubscriber(subscriber, { onSuccess: () => history.goBack() })\n\n return (\n <>\n }\n permissions={['subscriber:purge']}\n onClick={toggleConfirm}\n color='error'\n />\n \n \n );\n}\n\nexport default SubscriberPurgeAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport AutorenewIcon from '@mui/icons-material/Autorenew';\n\n// Api\nimport useMessageApi from '../../message/api/useMessageApi';\n\nconst SubscriberUpdatePassAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useSendUpdate } = useMessageApi();\n const { isLoading: updating, mutate: sendUpdate } = useSendUpdate;\n\n const handleSubmit = () => sendUpdate(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:updatepass']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberUpdatePassAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport SyncIcon from '@mui/icons-material/Sync';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberSyncFoodicsAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useSyncSubscriber } = useSubscriberApi();\n const { isLoading: synchronizing, mutate: syncUser } = useSyncSubscriber\n\n const handleSubmit = () => syncUser(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:sync']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberSyncFoodicsAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport SyncIcon from '@mui/icons-material/Sync';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberSyncLoyverseAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useSyncLoyverseSubscriber } = useSubscriberApi();\n const { isLoading: synchronizing, mutate: syncUser } = useSyncLoyverseSubscriber\n\n const handleSubmit = () => syncUser(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:sync']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberSyncLoyverseAction;","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Action from '../../_components/navigation/navbar/action.component';\nimport Confirm from '../../_components/dialogs/confirm.dialog';\n\n// MUI Icons\nimport SyncIcon from '@mui/icons-material/Sync';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\n\nconst SubscriberSyncEDMAction = ({ subscriber, variant, size, disabled }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useSyncEDMSubscriber } = useSubscriberApi();\n const { isLoading: synchronizing, mutate: syncUser } = useSyncEDMSubscriber\n\n const handleSubmit = () => syncUser(subscriber, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:sync']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberSyncEDMAction;","import React, { useState } from 'react';\n\n// MUI\nimport IconButton from '@mui/material/IconButton';\nimport Menu from '@mui/material/Menu';\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\n\n// Components\nimport RunCustomCampaignAction from '../../campaign/actions/campaign.run.custom.action';\nimport SendMessageAction from '../../message/actions/send.message.action'\nimport SubscriberVoidAction from './subscriber.void.action';\nimport SubscriberUnvoidAction from './subscriber.unvoid.action';\nimport SubscriberPurgeAction from './subscriber.purge.action';\nimport SubscriberUpdatePassAction from './subscriber.updatepass.action';\nimport SubscriberSyncFoodicsAction from './subsciber.sync.foodics.aciton';\nimport SubscriberSyncLoyverseAction from './subscriber.sync.loyverse.action';\nimport SubscriberSyncEDMAction from './subscriber.sync.edm.action';\n\n// Contexts\nimport { CampaignAppLayoutProvider } from '../../campaign/campaign.applayout.context';\n\nconst SubscriberActionList = ({ subscriber, canSync, variant, size, disabled }) => {\n\n const [anchorEl, setAnchorEl] = useState(null);\n const open = Boolean(anchorEl);\n\n const openMenu = (event) => setAnchorEl(event.currentTarget);\n const closeMenu = () => setAnchorEl(null);\n\n const syncComponent = {\n 1: ,\n 4: ,\n 3: \n }[canSync];\n\n if (!subscriber)\n return null;\n\n if (variant === 'menu')\n return (\n <>\n \n \n \n \n \n \n );\n else if (variant === 'iconbutton')\n return (\n <>\n \n {\n (subscriber.Status === 1 && subscriber.PushToken) &&\n \n \n \n }\n {\n !!canSync && syncComponent\n }\n {\n (subscriber.Status === 1) && (subscriber.PushToken) &&\n \n }\n {\n (subscriber.Status === 1) &&\n \n }\n {\n (subscriber.Status === -4) &&\n \n }\n {\n (subscriber.Status === 1 || subscriber.Status === -2) &&\n \n }\n \n \n \n );\n}\n\nexport default SubscriberActionList;","import React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\n// Material UI Icons\nimport DeleteIcon from '@mui/icons-material/Delete';\n\n// Components\nimport Confirm from '../../_components/dialogs/confirm.dialog';\nimport Action from '../../_components/navigation/navbar/action.component'\n\n// API\nimport useSubscriberApi from '../api/useSubscriberApi'\n\nconst SubscriberCouponRemoveAction = ({ coupon, variant, disabled, size }) => {\n const { t } = useTranslation(['actions',]);\n\n const [confirmOpen, setConfirmOpen] = useState(false);\n const toggleConfirm = () => setConfirmOpen(!confirmOpen);\n\n const { useRemoveCouponFromSubscriber } = useSubscriberApi();\n const { isLoading: removing, mutate: removeCoupon } = useRemoveCouponFromSubscriber;\n\n const handleSubmit = () => removeCoupon(coupon, { onSuccess: toggleConfirm })\n\n return (\n <>\n }\n permissions={['subscriber:removecoupon']}\n onClick={toggleConfirm}\n />\n \n \n );\n}\n\nexport default SubscriberCouponRemoveAction","import React, { useState } from 'react'\nimport moment from 'moment'\nimport { useTranslation } from 'react-i18next'\nimport { useForm, Controller } from 'react-hook-form'\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport Typography from '@mui/material/Typography';\nimport IconButton from '@mui/material/IconButton';\nimport DateTimePicker from '@mui/lab/DateTimePicker';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\n\n// Material UI Icons\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport UpdateIcon from '@mui/icons-material/Update';\n\n// Components\nimport FormDialog from '../../_components/dialogs/form.dialog';\nimport Action from '../../_components/navigation/navbar/action.component'\n\n// API\nimport useSubscriberApi from '../api/useSubscriberApi'\n\nconst SubscriberCouponUpdateExpirationAction = ({ coupon, variant, disabled, size }) => {\n const { t } = useTranslation(['actions',]);\n\n const [open, setOpen] = useState(false);\n const handleOpen = () => setOpen(true);\n const handleClose = () => setOpen(false);\n\n const { useUpdateCouponExpiration } = useSubscriberApi();\n const { isLoading: updating, mutateAsync: updateCouponExpiration } = useUpdateCouponExpiration;\n\n const onSubmit = async (values) => await updateCouponExpiration({ ...values, Hash: coupon.Hash, Subscriber: coupon.Subscriber }, { onSuccess: handleClose })\n\n const { control, handleSubmit, formState: { isSubmitting, isValid } } = useForm({\n mode: 'onChange',\n defaultValues: coupon ? { ExpireTime: coupon.ExpireTime } : {}\n });\n\n return (\n <>\n }\n permissions={['subscriber:updateexpiration']}\n onClick={handleOpen}\n />\n \n \n \n {t('labels:couponexpiretime')}\n \n \n (\n onChange(moment(value).locale('en-gb').format('YYYY-MM-DDTHH:mm:ss'))}\n InputProps={{\n startAdornment:\n value &&\n onChange(null)}>\n {' '}\n \n {' '}\n \n }}\n InputAdornmentProps={{ position: 'end', style: { order: 2, marginLeft: 0 } }}\n renderInput={params => }\n />\n )}\n />\n \n \n \n \n );\n}\n\nexport default SubscriberCouponUpdateExpirationAction","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Table from '../_components/table/table.component';\nimport SubscriberCouponRemoveAction from './actions/subscriber.coupon.remove.action';\nimport SubscriberCouponUpdateExpirationAction from './actions/subscriber.coupon.update.expiration.action';\n\n// Api\nimport useSubscriberApi from './api/useSubscriberApi';\n\nconst SubscriberInfoRow = ({ row }) => {\n return (\n \n {row.CouponName}\n \n \n \n \n \n );\n};\n\nconst SubscriberCouponsTable = ({ subshash }) => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchSubscriberCoupons } = useSubscriberApi();\n const { data, isFetching, isLoading, refetch } = useFetchSubscriberCoupons(subshash);\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n exportorder: 1,\n },\n {\n Header: t('labels:coupon'),\n className: 'actions',\n Cell: ({ row }) => ,\n width: 300,\n minWidth: 300,\n maxWidth: 400,\n disableGlobalFilter: true,\n disableFilters: true,\n disableExport: true,\n },\n {\n id: 'CouponName',\n Header: t('labels:coupon'),\n accessor: 'CouponName',\n hidden: true,\n exportorder: 2,\n },\n {\n Header: t('labels:issuedat'),\n id: 'IssuedAt',\n accessor: (row) => row.IssuedAt && moment(row.IssuedAt),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 1,\n },\n {\n Header: t('labels:redeemedat'),\n id: 'RedeemedAt',\n accessor: (row) => row.RedeemedAt && moment(row.RedeemedAt),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 2,\n },\n {\n Header: t('labels:expiretime'),\n id: 'Expiretime',\n accessor: (row) => row.ExpireTime && moment(row.ExpireTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 3,\n },\n {\n Header: t('labels:status'),\n id: 'Status',\n accessor: (row) => row.Status && t(`enums:couponstatus.${row.Status}`),\n disableFilters: true,\n },\n ];\n\n return (\n \n );\n};\n\nexport default SubscriberCouponsTable;\n","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../_components/table/table.component';\n\n// Api\nimport useSubscriberApi from './api/useSubscriberApi';\n\nconst SubscriberMessagesTable = ({ subshash, messagetype }) => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchSubscriberMessages } = useSubscriberApi();\n const { data, isFetching, isLoading, refetch } = useFetchSubscriberMessages(subshash, messagetype);\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: 'Notification Text',\n accessor: 'NotificationText',\n width: 500,\n minWidth: 400,\n maxWidth: 600,\n disableGlobalFilter: true,\n disableFilters: true,\n },\n {\n Header: 'Scheduled Time',\n id: 'ScheduledTime',\n accessor: (row) => row.ScheduledTime && moment(row.ScheduledTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 1,\n },\n {\n Header: 'Notification Time',\n id: 'NotificationTime',\n accessor: (row) => row.NotificationTime && moment(row.NotificationTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 2,\n },\n {\n Header: 'Delivery Time',\n id: 'DeliveryTime',\n accessor: (row) => row.DeliveryTime && moment(row.DeliveryTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 3,\n },\n {\n Header: t('labels:user'),\n accessor: 'CreatedByUser',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 4,\n },\n { id: 'Status', accessor: 'Status', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'NotificationTypeId', accessor: 'NotificationTypeId', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'NotificationSourceId', accessor: 'NotificationSourceId', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n ];\n\n return (\n \n );\n}\n\nexport default SubscriberMessagesTable;","import React, { useContext, useState } from 'react'\nimport { useTranslation } from 'react-i18next';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\n// MUI\nimport Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport IconButton from '@mui/material/IconButton';\nimport LoadingButton from '@mui/lab/LoadingButton';\nimport Stack from '@mui/material/Stack';\nimport TextField from '@mui/material/TextField';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport EditIcon from '@mui/icons-material/Edit';\nimport SpeakerNotesOutlinedIcon from '@mui/icons-material/SpeakerNotesOutlined';\n\n// Api\nimport useSubscriberApi from './api/useSubscriberApi';\nimport FormDialog from '../_components/dialogs/form.dialog';\n\nconst SubscriberNote = ({ subscriber }) => {\n const { hasPermissions } = useContext(UserContext);\n const [open, setOpen] = useState(false);\n const [noteText, setNoteText] = useState(subscriber?.Note || '');\n const toggleDialog = () => setOpen(!open);\n\n const { t } = useTranslation(['actions', 'labels']);\n const { useEditSubscriberNote } = useSubscriberApi();\n const { isLoading: editing, mutate: editSubscriberNote } = useEditSubscriberNote;\n\n const handleSubmit = () => editSubscriberNote({ Hash: subscriber.Hash, BrandHash: subscriber.BrandHash, note: noteText }, { onSuccess: toggleDialog })\n\n if (!hasPermissions(['subscriber:editnote']))\n return null\n\n return (subscriber?.Note)\n ? \n \n {subscriber?.Note}\n \n \n {t('labels:editsubscribersnote')}\n \n setNoteText(e.target.value)} />\n \n \n \n {t('actions:update')}\n \n \n \n : <>\n \n \n \n setNoteText(e.target.value)} />\n \n \n \n {t('actions:update')}\n \n \n \n}\n\nexport default SubscriberNote;","import React from 'react';\n\n// Material Ui\nimport Box from '@mui/material/Box';\nimport Typography from '@mui/material/Typography';\nimport Stack from '@mui/material/Stack';\n\nconst getLuma = (code) => {\n if (!code) return 100;\n var c = code.substring(1); // strip #\n var rgb = parseInt(c, 16); // convert rrggbb to decimal\n var r = (rgb >> 16) & 0xff; // extract red\n var g = (rgb >> 8) & 0xff; // extract green\n var b = (rgb >> 0) & 0xff; // extract blue\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b; // per ITU-R BT.709\n}\n\nconst Field = (props) => {\n const { Field, TextColor, LabelColor } = props;\n\n return (\n \n {Field?.Label?.toUpperCase()}\n {Field.Value}\n \n );\n}\n\nconst SubscriberPassPreview = ({ PassPreview, BarcodeValue }) => {\n\n return (\n 240) && { border: 'thin solid #ABB2B9' }),\n }}\n >\n \n {\n PassPreview.HasPassLogo\n ? Pass Logo\n : {PassPreview.LogoText}\n }\n \n {\n PassPreview.PassPreviewFields.filter(f => f.Type === 1).map((f, index) => (\n \n ))\n }\n \n \n 240) ? 258 : 260, height: (getLuma(PassPreview.BgColor) > 240) ? 102 : 104 }}>\n {\n PassPreview.StripImageUrl &&\n 240) ? '258px' : '260px',\n height: 'auto',\n }} alt='Pass Strip' src={PassPreview.StripImageUrl} />\n }\n \n \n {\n PassPreview.PassPreviewFields.filter(f => f.Type === 3).map((f, index) => (\n \n ))\n }\n \n \n \n QR Template\n {BarcodeValue}\n \n \n \n )\n\n}\n\nexport default SubscriberPassPreview;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// Material UI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\nconst TransactionRow = ({ row }) => {\n const transaction = row.values;\n const { t } = useTranslation(['returncodes']);\n\n const rowColors = row?.cells?.[0].column.rowColors;\n const color = rowColors?.colors[transaction[rowColors.fieldid]];\n\n return (\n \n {transaction.TransactionTypeId === 11 && transaction.Point && transaction.ReturnCode === 1 && (\n {`Points: ${transaction.Point}`}\n )}\n {transaction.TransactionTypeId === 1 && transaction.ReturnCode === 1 && (\n {`Stamps: ${transaction.ActionValue}`}\n )}\n {transaction.TransactionTypeId === 5 && transaction.Amount !== undefined && transaction.ReturnCode === 1 && (\n {`Amount: ${transaction.Amount}`}\n )}\n {transaction.TransactionTypeId === 9 && row.original.InsertedCouponCount && (\n {`Inserted coupons: ${row.original.InsertedCouponCount.Value}`}\n )}\n {transaction.TransactionTypeId === 5 && transaction.SpentPoints !== undefined && transaction.SpentPoints > 0 && transaction.ReturnCode === 1 && (\n {`Points Spent: ${transaction.SpentPoints}`}\n )}\n {transaction.TransactionTypeId === 5 && transaction.Point !== undefined && transaction.ReturnCode === 1 && (\n {`Points: ${transaction.Point}`}\n )}\n {transaction.TransactionTypeId === 4 && transaction.ReturnCode === 1 && (\n {`Coupon Code: ${transaction.SubscriberCouponId}`}\n )}\n {transaction.TransactionTypeId === 4 && transaction.ReturnCode === 1 && (\n {`Coupon: ${transaction.Coupon}`}\n )}\n {row.original.InvoiceNumber && (\n {`Invoice number: ${row.original.InvoiceNumber}`}\n )}\n {(transaction.TransactionTypeId === 0 || transaction.ReturnCode !== 1) && (\n \n {t(`returncodes:${transaction.ReturnCode}`)}\n \n )}\n \n );\n};\n\nexport default TransactionRow;\n","import React from 'react';\nimport moment from 'moment';\nimport { useTranslation } from 'react-i18next';\n\n// Components\nimport Table from '../_components/table/table.component';\nimport TransactionRow from '../transaction/transaction.info.row';\n\n// Api\nimport useTransactionApi from '../transaction/api/useTransactionApi';\n\nconst getTransactionType = (row, t) => {\n if (row.TransactionType === '5')\n if (row.SpentPoints) return row.TransactionType && t(`enums:transactiontype.99`);\n else return row.TransactionType && t(`enums:transactiontype.98`);\n else if (row.TransactionType === '8' && row.ActionType) return row.ActionType;\n else return row.TransactionType && t(`enums:transactiontype.${row.TransactionType}`);\n};\nconst SubscriberTransactionsTable = ({ subshash }) => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n\n const { useFetchTransactions } = useTransactionApi();\n const { data, isFetching, isLoading, refetch } = useFetchTransactions('subscriber', subshash);\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n exportorder: 1,\n },\n {\n Header: t('labels:transactiondetails'),\n Cell: ({ row }) => ,\n width: 400,\n minWidth: 400,\n maxWidth: 1000,\n filter: 'oneof',\n filterorder: 1,\n disableExport: true,\n },\n { Header: 'Amount', id: 'Amount', accessor: 'Amount', disableFilters: true, disableSortBy: true, exportorder: 5, filter: 'minmax' },\n {\n Header: t('labels:subscriber'),\n id: 'Subscriber',\n accessor: 'Subscriber',\n disableFilters: true,\n disableSortBy: true,\n hidden: true,\n exportorder: 2,\n },\n {\n Header: t('labels:barcode'),\n accessor: 'CodeValue',\n width: 120,\n minWidth: 100,\n maxWidth: 2000,\n disableFilters: true,\n exportorder: 3,\n },\n {\n Header: t('labels:campaign'),\n id: 'Campaign',\n accessor: 'Campaign',\n width: 250,\n minWidth: 250,\n maxWidth: 500,\n filter: 'oneof',\n filterorder: 7,\n },\n {\n Header: t('labels:transactiontype'),\n id: 'TransactionType',\n accessor: (row) => getTransactionType(row, t),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 2,\n },\n {\n Header: t('labels:transactiontime'),\n id: 'TransactionTime',\n accessor: (row) => row.CompleteTime && moment(row.CompleteTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 2,\n },\n {\n Header: t('labels:merchant'),\n accessor: 'Merchant',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 3,\n },\n {\n Header: t('labels:user'),\n accessor: 'User',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 4,\n },\n { id: 'Hash', accessor: 'Hash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'BrandHash', accessor: 'BrandHash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'SubscriberHash', accessor: 'SubscriberHash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'Status', accessor: 'Status', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n {\n id: 'TransactionTypeId',\n accessor: (row) => row.TransactionType && parseInt(row.TransactionType),\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true,\n },\n { id: 'ReturnCode', accessor: 'ReturnCode', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'SubscriberCouponId', accessor: 'SubscriberCouponId', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n {\n Header: 'Stamps',\n id: 'ActionValue',\n accessor: 'ActionValue',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n hidden: true,\n exportorder: 4,\n },\n { Header: 'Point', id: 'Point', accessor: 'Point', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 6 },\n { Header: 'Spent Points', id: 'SpentPoints', accessor: 'SpentPoints', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 7 },\n { id: 'ActionType', accessor: 'ActionType', disableFilters: true, disableSortBy: true, hidden: true },\n {\n id: 'Coupon',\n accessor: 'Coupon',\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true,\n exportorder: 8,\n filter: 'oneof',\n filterorder: 5,\n },\n ];\n\n return (\n \n );\n};\n\nexport default SubscriberTransactionsTable;\n","import React, { useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router';\nimport { Redirect } from 'react-router-dom';\nimport moment from 'moment';\nimport Enums from '../../enums';\n\n// MUI\nimport Tab from '@mui/material/Tab';\nimport Tabs from '@mui/material/Tabs';\nimport Stack from '@mui/material/Stack';\nimport Tooltip from '@mui/material/Tooltip';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport InfoIcon from '@mui/icons-material/InfoOutlined';\nimport AppleIcon from '@mui/icons-material/Apple';\nimport BlockIcon from '@mui/icons-material/Block';\nimport AndroidIcon from '@mui/icons-material/Android';\n\n// Components\nimport BrandInfoAvatar from '../../brand/brand.info.avatar';\nimport SubscriberActionList from '../actions/subscriber.action.list';\nimport SubscriberCouponsTable from '../subscriber.coupons.table';\nimport SubscriberMessagesTable from '../subscriber.messages.table';\nimport SubscriberNote from '../subscriber.note.box';\nimport SubscriberPassPreview from '../subscriber.pass.preview';\nimport SubscriberTransactionsTable from '../subscriber.transactions.table';\nimport Spinner from '../../_components/spinner.component';\nimport ToolBar from '../../_components/toolbar/toolbar.component';\n\n// Api\nimport useSubscriberApi from '../api/useSubscriberApi';\nimport useBrandApi from '../../brand/api/useBrandApi';\n\nconst SubscriberTitle = ({ subscriber }) => {\n const color =\n subscriber?.Status === 0 ? 'error' : subscriber?.Status === -1 || subscriber?.Status === -2 || subscriber?.Status === -4 ? 'textSecondary' : 'textPrimary';\n const linethrough = subscriber?.Status === 0;\n\n const warningText =\n subscriber?.Status === -1\n ? 'This customer successfully enrolled but did not proceed after the enroll.'\n : subscriber?.Status === -2\n ? \"This customer successfully enrolled and proceeded to the 'Add To Wallet' page but could not add the pass to his wallet due to some reasons; \\n\\n - Wallet Application may not have responded successfully. \\n - If the operating system was iOS, user may not have clicked the 'Add' button in the Wallet application. \\n - User may have clicked the 'Cancel' button in the Wallet application. \\n\"\n : null;\n\n return (\n \n \n {subscriber.NameSurname}{' '}\n \n {warningText && (\n \n {warningText}\n \n }>\n \n \n )}\n {subscriber?.OSType === 1 ? : }\n {subscriber?.LanguageId && (\n \n {Enums.languagecode[subscriber?.LanguageId]}\n \n )}\n {subscriber?.Status === -4 && }\n \n \n );\n};\n\nconst TabPanel = ({ selectedTab, subshash, brandhash }) => {\n return (\n \n {selectedTab === 0 && }\n {selectedTab === 1 && }\n {selectedTab === 2 && }\n {selectedTab === 3 && }\n \n );\n};\n\nconst Subscriber = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n const history = useHistory();\n const { subshash } = useParams();\n\n const { useFetchBrand } = useBrandApi();\n const { useFetchSubscriber, useFetchSubscriberExpireLog } = useSubscriberApi();\n const { data, isLoading: loadingSubscriberInfo, isFetching: fetchingSubscriberInfo, isError: subscriberInfoError } = useFetchSubscriber(subshash);\n const { data: branddata, isLoading: loadingBrandInfo, isFetching: fetchingBrandInfo, isError: brandInfoError } = useFetchBrand(data?.BrandHash);\n const { data: expireLog } = useFetchSubscriberExpireLog(subshash);\n\n const [selectedTab, setSelectedTab] = useState(0);\n const selectTab = (event, newValue) => setSelectedTab(newValue);\n\n // TODO: Check the error type. We must send to 404 page only if the user is not authorized for the given brand\n if (subscriberInfoError) return ;\n\n if (loadingSubscriberInfo || loadingBrandInfo) return ;\n\n return (\n \n }\n beforeActions={\n \n }\n avatar={}\n onClose={() => history.goBack()}\n />\n \n \n \n \n \n \n \n {data?.AuxFields.map((field, index) => (\n \n \n \n {field.Name === 'DateOfBirth'\n ? moment(field.Value).format('LL')\n : field.Name === 'Gender'\n ? t(`enums:gender.${field.Value}`)\n : field.Value}\n \n \n ))}\n {data.OpaqueId && (\n \n \n \n {data.OpaqueId}\n \n \n )}\n {expireLog && (\n \n \n \n Expire Transaction\n \n \n {moment().format('LLL')}\n \n {expireLog?.Point && {`${t('labels:points')}: ${expireLog.Point}`}}\n {expireLog?.StampCount && {`${t('labels:stamps')}: ${expireLog.StampCount}`}}\n \n )}\n \n \n {`${t('labels:membersince')}: ${moment(data.CreatedAt).format('DD MMM YYYY HH:mm')}`}\n {data.UpdatedAt && (\n {`${t('labels:lastupdatedat')}: ${moment(data.UpdatedAt).format('DD MMM YYYY HH:mm')}`}\n )}\n {data.LastPassUpdatedAt && (\n {`${t('labels:passupdatedat')}: ${moment(data.LastPassUpdatedAt).format(\n 'DD MMM YYYY HH:mm'\n )}`}\n )}\n {data.Status === 0 && data.DeletedAt && (\n {`${t('labels:deletedat')}: ${moment(data.DeletedAt).format(\n 'DD MMM YYYY HH:mm'\n )}`}\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default React.memo(Subscriber);\n","import React from 'react';\nimport { useParams } from 'react-router-dom';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport SendMessageAction from '../message/actions/send.message.action';\n\nconst SelectedSubscriberActions = ({ selectedRows, data }) => {\n\tconst { brandhash } = useParams();\n\tconst filteredSelectedRows = selectedRows.filter(row => row.original.Status === 1 && row.original.AcceptsNoti);\n\n\treturn (\n\t\t\n\t\t\t{filteredSelectedRows?.length === data?.length ? 'All selected' : `${filteredSelectedRows?.length} of ${data?.length}`}\n\t\t\t ({\n\t\t\t\t\tid: row.values.Hash,\n\t\t\t\t\ttype: 'SUBSCRIBER',\n\t\t\t\t\tpass: `P-${row.values.PassHash}`,\n\t\t\t\t\tgroup: 'Subscribers',\n\t\t\t\t\tTo: `${row.values.NameSurname} - ${row.values.Id}`,\n\t\t\t\t}))}\n\t\t\t/>\n\t\t\n\t);\n};\n\nexport default SelectedSubscriberActions;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useParams } from 'react-router-dom';\n\n// MUI\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// MUI Icons\nimport AndroidIcon from '@mui/icons-material/Android';\nimport SyncDisabledIcon from '@mui/icons-material/SyncDisabled';\nimport AppleIcon from '@mui/icons-material/Apple';\nimport BlockIcon from '@mui/icons-material/Block';\nimport NotificationsOffOutlinedIcon from '@mui/icons-material/NotificationsOffOutlined';\n\nconst SubscriberRow = ({ row }) => {\n\tconst subscriber = row.values;\n\tconst { brandhash } = useParams();\n\n\tconst rowColors = row?.cells?.[0].column.rowColors;\n\tconst color = rowColors?.colors[subscriber[rowColors.fieldid]];\n\tconst linethrough = rowColors && subscriber[rowColors.fieldid] === 'Deleted';\n\n\tconst to = brandhash ? `/${subscriber?.BrandHash}/sub/${subscriber?.Hash}` : `/sub/${subscriber?.Hash}`;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{subscriber?.NameSurname}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t{subscriber.OpaqueId === 'No' && }\n\t\t\t\t{subscriber?.Status === 'Blocked' && }\n\t\t\t\t{subscriber?.AcceptsNoti === 'No' && }\n\t\t\t\t{subscriber?.OSType === 'iPhone' ? : }\n\t\t\t\t{subscriber?.Language &&\n\t\t\t\t\t\n\t\t\t\t\t\t{subscriber?.Language}\n\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t{subscriber.BarcodeValue?.length <= 10 && (\n\t\t\t\t\t\n\t\t\t\t\t\t{subscriber.BarcodeValue}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\n\t\t\n\t);\n};\n\nexport default SubscriberRow;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\n\n// MUI\nimport Stack from '@mui/material/Stack';\nimport Typography from '@mui/material/Typography';\n\n// Components\nimport Icon from '../_components/icon.component';\n\nconst Item = ({ item, color, linethrough }) => {\n\tconst { t } = useTranslation(['enums', 'returncodes', 'labels', 'prompts']);\n\n\tif (item.type === 'label')\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{`${t(item.label)}:`}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{item.value}\n\t\t\t\t\n\t\t\t\n\t\t);\n\n\tif (item.type === 'icon') return ;\n\n\tif (item.type === 'typography')\n\t\treturn (\n\t\t\t\n\t\t\t\t{t(item.label)}\n\t\t\t\n\t\t);\n\n\tif (item.type === 'error')\n\t\treturn (\n\t\t\t\n\t\t\t\t{t(`returncodes:${item.value}`)}\n\t\t\t\n\t\t);\n\n\treturn null;\n};\n\nconst SubscriberPassInfoRow = ({ row }) => {\n\tconst subscriber = row.values;\n\tconst items = row?.values?.RowItems;\n\n\tconst rowColors = row?.cells?.[0].column.rowColors;\n\tconst color = rowColors?.colors[subscriber[rowColors.fieldid]];\n\tconst linethrough = rowColors && subscriber[rowColors.fieldid] === 'Deleted';\n\n\treturn (\n\t\t\n\t\t\t{items?.map((item, index) => (\n\t\t\t\t\n\t\t\t))}\n\t\t\n\t);\n};\n\nexport default SubscriberPassInfoRow;\n","import React, { useContext, useState, useEffect, useCallback, useMemo } from 'react';\nimport moment from 'moment';\nimport { useHistory } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport _ from 'lodash';\n\n// MUI Icons\nimport AssignmentIndIcon from '@mui/icons-material/AssignmentInd';\n\n// Components\nimport BrandInfoAvatar from '../brand/brand.info.avatar';\nimport SelectedSubscriberActions from './subscriber.selected.actions';\nimport SubscriberRow from './subscriber.info.row';\nimport SubscriberPassInfoRow from './subscriber.pass.info.row';\nimport Table from '../_components/table/table.component';\n\n// Api\nimport useSubscriberApi from './api/useSubscriberApi';\nimport usePassApi from '../pass/api/usePassApi';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\nconst SubscribersTable = () => {\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n const { brandhash } = useParams();\n const {\n user: { BrandHash },\n } = useContext(UserContext);\n const history = useHistory();\n\n const [staticFilters, setStaticFilters] = useState(\n JSON.parse(localStorage.getItem('bw-live-preferences-subscribers-' + brandhash + '-table-static-filters')) || {\n passes: [],\n search: '',\n }\n );\n const { useFetchPasses } = usePassApi();\n const { useFetchSubscribersInfiniteScroll } = useSubscriberApi();\n const { data, fetchNextPage, hasNextPage, refetch, isLoading, isFetching } = useFetchSubscribersInfiniteScroll(250, brandhash || BrandHash, staticFilters);\n\n useEffect(() => {\n localStorage.setItem('bw-live-preferences-subscribers-' + brandhash + '-table-static-filters', JSON.stringify(staticFilters));\n refetch();\n }, [staticFilters, brandhash, refetch]);\n\n const flattenedAuxColumns = useMemo(\n () =>\n _.uniqBy(\n data?.pages\n ?.flat()\n .map((row) => row.auxcolumns)\n .flat(),\n 'accessor'\n ),\n [data]\n );\n\n const flattenedAdditionalColumns = useMemo(\n () =>\n _.uniqBy(\n data?.pages\n ?.flat()\n .map((row) => row.additionalcolumns)\n .flat(),\n 'id'\n ),\n [data]\n );\n\n const flattenedData = useMemo(\n () =>\n data?.pages\n ?.flat()\n .map((row) => row.subscribers)\n .flat(),\n [data]\n );\n\n const fetchMoreOnBottomReached = useCallback(\n (containerRefElement) => {\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < 300 &&\n hasNextPage &&\n !isFetching &&\n flattenedData.length < data?.pages[data.pages.length - 1].SubscriberCount\n )\n fetchNextPage();\n }\n },\n [isFetching, fetchNextPage, data, hasNextPage, flattenedData]\n );\n\n var columns = [\n {\n Header: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n disableFilters: true,\n exportorder: 1,\n },\n {\n Header: t('labels:subscriber'),\n id: 'NameSurname',\n accessor: 'NameSurname',\n Cell: ({ row }) => ,\n width: 360,\n minWidth: 360,\n maxWidth: 500,\n disableFilters: true,\n exportorder: 2,\n },\n {\n Header: t('labels:passdata'),\n id: 'PassInfo',\n Cell: ({ row }) => ,\n width: 360,\n minWidth: 360,\n maxWidth: 1000,\n disableGlobalFilter: true,\n disableSortBy: true,\n disableFilters: true,\n disableExport: true,\n },\n { Header: t('labels:barcode'), id: 'BarcodeValue', accessor: 'BarcodeValue', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 3 },\n { Header: t('labels:phone'), id: 'Phone', accessor: 'Phone', width: 200, minWidth: 140, maxWidth: 300, disableFilters: true, disableSortBy: true },\n { Header: t('labels:email'), id: 'Email', accessor: 'Email', width: 300, minWidth: 200, maxWidth: 400, disableFilters: true, disableSortBy: true },\n {\n Header: t('labels:membersince'),\n id: 'SubscriberTime',\n accessor: (row) => row.SubscriberTime && moment(row.SubscriberTime),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 3,\n },\n {\n Header: t('labels:deletedat'),\n id: 'DeletedAt',\n accessor: (row) => row.DeletedAt && moment(row.DeletedAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterange',\n filterorder: 6,\n },\n {\n Header: t('labels:acceptsnoti'),\n id: 'AcceptsNoti',\n accessor: (row) => (row.AcceptsNoti ? t('labels:yes') : t('labels:no')),\n disableGlobalFilter: true,\n disableSortBy: true,\n filter: 'oneof',\n filterorder: 10,\n },\n {\n Header: t('labels:status'),\n id: 'Status',\n accessor: (row) => t(`enums:subscriberstatus.${row.Status}`),\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 2,\n hidden: true,\n },\n {\n Header: t('labels:language'),\n id: 'Language',\n accessor: (row) => t(`enums:language.${row.LanguageId}`),\n disableGlobalFilter: true,\n filter: 'oneof',\n filterorder: 4,\n hidden: true,\n },\n {\n Header: t('labels:pass'),\n id: 'PassName',\n accessor: 'PassName',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'staticoneof',\n filterorder: 2,\n filterQuery: useFetchPasses(brandhash),\n hideIf: (passes) => passes?.length <= 1,\n filterLabelAccessor: 'Name',\n filterIdAccessor: 'Hash',\n values: staticFilters.passes,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, passes: newValue }));\n },\n },\n {\n Header: t('labels:ostype'),\n id: 'OSType',\n accessor: (row) => (row.OSType === 1 ? 'iPhone' : 'Android'),\n disableGlobalFilter: true,\n filter: 'equals',\n filterorder: 5,\n hidden: true,\n },\n {\n Header: t('labels:latestactivity'),\n id: 'LatestActivity',\n accessor: (row) => row.LastTransactionTime && moment().diff(moment(row.LastTransactionTime), 'days'),\n disableExport: true,\n disableGlobalFilter: true,\n disableResizing: true,\n disableSortBy: true,\n hidden: true,\n },\n {\n Header: t('labels:inactivefor'),\n id: 'InactiveFor',\n accessor: (row) => row.LastTransactionTime && moment(row.LastTransactionTime),\n disableExport: true,\n disableGlobalFilter: true,\n disableSortBy: true,\n filter: 'beforescope',\n filterorder: 9,\n hidden: true,\n },\n { id: 'Hash', accessor: 'Hash', disableExport: true, disableFilters: true, disableSortBy: true, hidden: true },\n { id: 'IsVoided', accessor: 'IsVoided', disableExport: true, disableGlobalFilter: true, disableFilters: true, disableSortBy: true, hidden: true },\n { id: 'BrandHash', accessor: 'BrandHash', disableExport: true, disableGlobalFilter: true, disableFilters: true, disableSortBy: true, hidden: true },\n { id: 'PassHash', accessor: 'PassHash', disableExport: true, disableGlobalFilter: true, disableFilters: true, disableSortBy: true, hidden: true },\n { id: 'RowItems', accessor: 'RowItems', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'Payload', accessor: 'Payload', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n ];\n\n if (flattenedData)\n columns.splice(3, 0, ..._.uniqBy([...flattenedAuxColumns, ...flattenedAdditionalColumns.map((c) => ({ ...c, Header: t(c.Header) }))], 'id'));\n\n return (\n setStaticFilters((prev) => ({ ...prev, search: searchValue }))}\n onSearchValue={staticFilters.search}\n enableSelectIf={(row) => row.original.Status === 1 && row.original.AcceptsNoti}\n totalRowCount={data?.pages[data?.pages.length - 1].SubscriberCount}\n SelectedRowsActions={}\n preference={`bw-live-preferences-subscribers-${brandhash}-table`}\n title={t('labels:subscribers')}\n refetch={refetch}\n fetchMoreOnBottomReached={fetchMoreOnBottomReached}\n isFetching={isFetching}\n isLoading={isLoading}\n onClose={() => history.goBack()}\n avatar={}\n icon={}\n rowColors={{\n fieldid: 'Status',\n colors: {\n Deleted: '#E74C3C',\n 'Pending Enrolled': '#5D6D7E',\n 'Pending ATW Clicked': '#5D6D7E',\n },\n }}\n localization={{\n back: t('labels:goback'),\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n expand: t('labels:seemore'),\n downloadascsv: t('actions:downloadascsv'),\n insights: t('labels:insights'),\n refetch: t('labels:refresh'),\n }}\n />\n );\n};\n\nexport default SubscribersTable;\n\n/* Removed Temporarily\n\n {\n Header: t('labels:transactioncount'),\n accessor: 'TransactionCount',\n width: 170,\n minWidth: 170,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n filter: 'minmaxstatic',\n filterorder: 7,\n exportorder: 9999,\n values: staticFilters.transactionCountFilter,\n onChange: (min, max) => {\n setStaticFilters((prev) => ({ ...prev, transactionCountFilter: [min, max] }));\n },\n },\n {\n Header: t('labels:mintrantime'),\n id: 'FirstTransactionAt',\n accessor: (row) => row.FirstTransactionAt && moment(row.FirstTransactionAt),\n width: 180,\n minWidth: 180,\n maxWidth: 180,\n disableGlobalFilter: true,\n disableResizing: true,\n filter: 'daterangeupdatestate',\n filterorder: 8,\n sortType: 'moment',\n values: staticFilters.firstTransactionDateFilter,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, firstTransactionDateFilter: newValue }));\n },\n disabled: isFetching,\n },\n {\n Header: t('labels:maxtrantime'),\n id: 'LastTransactionAt',\n accessor: (row) => row.LastTransactionAt && moment(row.LastTransactionAt),\n width: 200,\n minWidth: 200,\n maxWidth: 220,\n disableGlobalFilter: true,\n disableResizing: true,\n filter: 'daterangeupdatestate',\n filterorder: 9,\n sortType: 'moment',\n values: staticFilters.lastTransactionDateFilter,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, lastTransactionDateFilter: newValue }));\n },\n disabled: isFetching,\n },\n\n*/\n","import React from 'react';\n\n// Components\nimport SubscribersTable from '../subscribers.table';\n\nconst Subscribers = () => {\n\n return \n}\n\nexport default React.memo(Subscribers);","import React from 'react';\nimport { Link as RouterLink, } from 'react-router-dom';\nimport { useParams } from 'react-router-dom';\n\n// MUI\nimport Chip from '@mui/material/Chip';\nimport Link from '@mui/material/Link';\nimport Stack from '@mui/material/Stack';\n\n// MUI Icons\nimport BlockIcon from '@mui/icons-material/Block';\n\nconst TransactionSubscriberRow = ({ subscriber }) => {\n\tconst { brandhash } = useParams();\n\n\t// const color = subscriber.Status === 'Deleted' && '#E74C3C'\n\tconst linethrough = subscriber.Status === 'Deleted';\n\n\tconst to = brandhash\n\t\t? `/${subscriber?.BrandHash}/sub/${subscriber?.Hash}`\n\t\t: `/sub/${subscriber?.Hash}`\n\n\treturn (\n\t\t\n\t\t\t{subscriber?.NameSurname}\n\t\t\t{\n\t\t\t\t(subscriber?.Status === 'Voided') &&\n\t\t\t\t} />\n\t\t\t}\n\t\t\n\t);\n}\n\nexport default TransactionSubscriberRow;","import { useQuery, useMutation, useQueryClient } from 'react-query';\nimport { useSnackbar } from 'notistack';\nimport _ from 'lodash';\n\n// Api\nimport { get, patch, post, put } from '../../_api/api'\n\nconst useCampaignApi = () => {\n const queryClient = useQueryClient();\n const { enqueueSnackbar } = useSnackbar();\n\n\n const useFetchCampaings = (from, hash) => useQuery([`${from}-campaigns`, hash], async () => {\n const data = await get(`/Campaign?${from}=${hash}`);\n return data;\n }, {\n onError: (error) => enqueueSnackbar(`Kampanyalar yüklenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useCreateCampaign = useMutation(newCampaign => post('/Campaign', newCampaign),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Kampanya başarıyla oluşturuldu', { variant: 'success' });\n queryClient.invalidateQueries(['brand-campaigns', variables.Brand], { refetchInactive: true });\n },\n onError: (error) => enqueueSnackbar(`Kampanya oluşturulurken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useUpdateCampaign = useMutation(Campaign => put('/Campaign', Campaign),\n {\n onSuccess: (_, variables) => {\n enqueueSnackbar('Kampanya başarıyla güncellendi', { variant: 'success' });\n queryClient.setQueryData(['brand-campaigns', variables.Brand], old => {\n const c = old.find(c => c.Hash === variables.Hash);\n old[old.indexOf(c)] = { ...variables };\n return [...old];\n });\n },\n onError: (error) => enqueueSnackbar(`Kampanya güncellenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useArchiveCampaign = useMutation((campaign) => patch(`/Campaign/archive/${campaign.Hash}`),\n {\n onSuccess: (_, variables) => {\n if (_) {\n enqueueSnackbar('Kampanya başarıyla arşivlendi', { variant: 'success' });\n queryClient.setQueryData(['brand-campaigns', variables.Brand], old => {\n const c = old.find(c => c.Hash === variables.Hash);\n old[old.indexOf(c)] = { ...c, Status: 0 };\n return [...old];\n });\n }\n },\n onError: (error) => enqueueSnackbar(`Kampanya arşivlenirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const useActivateCampaign = useMutation((campaign) => patch(`/Campaign/activate/${campaign.Hash}`),\n {\n onSuccess: (_, variables) => {\n if (_) {\n enqueueSnackbar('Kampanya başarıyla aktif edildi', { variant: 'success' });\n queryClient.setQueryData(['brand-campaigns', variables.Brand], old => {\n const c = old.find(c => c.Hash === variables.Hash);\n old[old.indexOf(c)] = { ...c, Status: 1 };\n return [...old];\n });\n }\n },\n onError: (error) => enqueueSnackbar(`Kampanya aktif edilirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n const usePurgeCampaign = useMutation((campaign) => patch(`/Campaign/purge/${campaign.Hash}`),\n {\n onSuccess: (data, variables) => {\n if (data) {\n enqueueSnackbar('Kampanya başarıyla silindi', { variant: 'success' });\n queryClient.setQueryData(['brand-campaigns', variables.Brand], old => {\n _.remove(old, c => c.Hash === variables.Hash);\n return [...old];\n });\n }\n },\n onError: (error) => enqueueSnackbar(`Doğum günü mesajı silinirken hata oluştu - Hata: ${error.status}`, { variant: 'error' })\n });\n\n return {\n useFetchCampaings,\n useCreateCampaign,\n useUpdateCampaign,\n useArchiveCampaign,\n useActivateCampaign,\n usePurgeCampaign\n }\n}\n\nexport default useCampaignApi;\n","import React, { useState, useMemo, useEffect, useContext } from 'react';\nimport moment from 'moment';\nimport { useHistory } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\n\n// Components\nimport BrandInfoAvatar from '../brand/brand.info.avatar';\nimport Table from '../_components/table/table.component';\nimport TransactionRow from './transaction.info.row';\nimport TransactionSubscriberRow from './transaction.subs.info.row';\n\n// MUI Icons\nimport Assignment from '@mui/icons-material/Assignment';\n\n// Api\nimport useUserApi from '../user/api/useUserApi';\nimport usePassApi from '../pass/api/usePassApi';\nimport useTransactionApi from './api/useTransactionApi';\nimport useMerchantApi from '../merchant/api/useMerchantApi';\nimport useCampaignApi from '../campaign/api/useCampaignApi';\nimport useCouponApi from '../brand/settings/coupon/api/useCouponApi';\n\n// Contexts\nimport { UserContext } from '../_usercontext/user.context';\n\nconst getTransactionType = (row, t) => {\n if (row.TransactionType === '5')\n if (row.SpentPoints) return row.TransactionType && t(`enums:transactiontype.99`);\n else return row.TransactionType && t(`enums:transactiontype.98`);\n else return row.TransactionType && t(`enums:transactiontype.${row.TransactionType}`);\n};\n\nconst TransactionsTable = () => {\n const { user } = useContext(UserContext);\n const { t } = useTranslation(['actions', 'labels', 'enums']);\n const { brandhash } = useParams();\n const history = useHistory();\n\n const { useFetchUsers } = useUserApi();\n const { useFetchPasses } = usePassApi();\n const { useFetchCoupons } = useCouponApi();\n const { useFetchCampaings } = useCampaignApi();\n const { useFetchMerchants } = useMerchantApi();\n const { useFetchTransactionsInfiniteScroll } = useTransactionApi();\n\n const [staticFilters, setStaticFilters] = useState(\n JSON.parse(localStorage.getItem('bw-live-preferences-transactions-' + brandhash + '-table-static-filters')) || {\n passes: [],\n merchants: [],\n campaigns: [],\n users: [],\n coupons: [],\n dateFilter: [moment().startOf('month').unix(), moment().endOf('month').unix()],\n }\n );\n\n // const { data, isFetching, isLoading, refetch } = useFetchTransactionsWithDate(brandhash, moment.unix(values[0]).locale('en-gb').format('YYYY-MM-DD'), moment.unix(values[1]).locale('en-gb').format('YYYY-MM-DD'));\n\n const { data, fetchNextPage, hasNextPage, refetch, isLoading, isFetching } = useFetchTransactionsInfiniteScroll(100, brandhash, staticFilters);\n\n useEffect(() => {\n localStorage.setItem('bw-live-preferences-transactions-' + brandhash + '-table-static-filters', JSON.stringify(staticFilters));\n refetch();\n }, [staticFilters, brandhash, refetch]);\n\n const flattenedData = useMemo(\n () =>\n data?.pages\n ?.flat()\n .map((row) => row.TransactionsList)\n .flat(),\n [data]\n );\n\n const fetchMoreOnBottomReached = React.useCallback(\n (containerRefElement) => {\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n if (\n scrollHeight - scrollTop - clientHeight < 300 &&\n hasNextPage &&\n !isFetching &&\n flattenedData.length < data?.pages[data.pages.length - 1].TransactionCount\n )\n fetchNextPage();\n }\n },\n [isFetching, fetchNextPage, data, hasNextPage, flattenedData]\n );\n\n var columns = [\n {\n Header: 'Id',\n id: 'Id',\n accessor: 'Id',\n width: 80,\n minWidth: 80,\n maxWidth: 80,\n disableResizing: true,\n disableGlobalFilter: true,\n disableFilters: true,\n exportorder: 1,\n },\n {\n Header: t('labels:subscriber'),\n id: 'Subscriber',\n accessor: 'Subscriber',\n disableFilters: true,\n disableSortBy: true,\n hidden: true,\n exportorder: 2,\n },\n {\n Header: t('labels:subscriber'),\n id: 'SubscriberInfo',\n accessor: 'SubscriberInfo',\n Cell: ({ row }) => (\n \n ),\n width: 360,\n minWidth: 120,\n maxWidth: 300,\n disableFilters: true,\n disableExport: true,\n },\n {\n Header: t('labels:transaction'),\n accessor: 'Transaction',\n Cell: ({ row }) => ,\n width: 500,\n minWidth: 400,\n maxWidth: 1000,\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n },\n {\n Header: t('labels:barcode'),\n id: 'CodeValue',\n accessor: 'CodeValue',\n width: 120,\n minWidth: 100,\n maxWidth: 300,\n disableFilters: true,\n exportorder: 3,\n },\n {\n Header: t('labels:campaign'),\n id: 'Campaign',\n accessor: 'Campaign',\n width: 250,\n minWidth: 250,\n maxWidth: 500,\n filter: 'staticoneof',\n filterorder: 6,\n filterQuery: useFetchCampaings('brand', brandhash || user.BrandHash),\n filterLabelAccessor: 'CampaignName',\n filterIdAccessor: 'Hash',\n values: staticFilters.campaigns,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, campaigns: newValue }));\n },\n },\n {\n Header: t('labels:transactiontype'),\n id: 'TransactionType',\n accessor: (row) => getTransactionType(row, t),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 7,\n },\n {\n Header: t('labels:transactiontime'),\n id: 'TransactionTime',\n accessor: (row) => row.CompleteTime && moment(row.CompleteTime),\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n disableGlobalFilter: true,\n disableResizing: true,\n sortType: 'moment',\n filter: 'daterangeupdatestate',\n filterorder: 1,\n values: staticFilters.dateFilter,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, dateFilter: newValue }));\n },\n disabled: isFetching,\n },\n {\n Header: t('labels:pass'),\n id: 'Pass',\n accessor: 'Pass',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'staticoneof',\n filterorder: 2,\n filterQuery: useFetchPasses(brandhash),\n filterLabelAccessor: 'Name',\n filterIdAccessor: 'Hash',\n values: staticFilters.passes,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, passes: newValue }));\n },\n },\n {\n Header: t('labels:merchant'),\n id: 'Merchant',\n accessor: 'Merchant',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'staticoneof',\n filterorder: 4,\n filterQuery: useFetchMerchants(brandhash || user.BrandHash),\n filterLabelAccessor: 'Name',\n filterIdAccessor: 'Hash',\n values: staticFilters.merchants,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, merchants: newValue }));\n },\n },\n {\n Header: t('labels:user'),\n id: 'User',\n accessor: 'User',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'staticoneof',\n filterorder: 3,\n filterQuery: useFetchUsers(brandhash || user.BrandHash),\n filterLabelAccessor: 'FullName',\n filterIdAccessor: 'Hash',\n values: staticFilters.users,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, users: newValue }));\n },\n },\n {\n Header: t('labels:channel'),\n id: 'ClientName',\n accessor: 'ClientName',\n width: 200,\n minWidth: 140,\n maxWidth: 300,\n filter: 'oneof',\n filterorder: 9,\n },\n {\n Header: 'Coupon',\n id: 'Coupon',\n accessor: 'Coupon',\n hidden: true,\n exportorder: 8,\n filter: 'staticoneof',\n filterorder: 5,\n filterQuery: useFetchCoupons(brandhash || user.BrandHash),\n filterLabelAccessor: 'Title',\n filterIdAccessor: 'Hash',\n values: staticFilters.coupons,\n onChange: (newValue) => {\n setStaticFilters((prev) => ({ ...prev, coupons: newValue }));\n },\n },\n { id: 'Hash', accessor: 'Hash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'BrandHash', accessor: 'BrandHash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'SubscriberHash', accessor: 'SubscriberHash', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'Status', accessor: 'Status', disableGlobalFilter: true, disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n {\n id: 'TransactionTypeId',\n accessor: (row) => row.TransactionType && parseInt(row.TransactionType),\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n disableExport: true,\n hidden: true,\n },\n { id: 'ReturnCode', accessor: 'ReturnCode', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n { id: 'SubscriberCouponId', accessor: 'SubscriberCouponId', disableFilters: true, disableSortBy: true, disableExport: true, hidden: true },\n {\n Header: 'Stamps',\n id: 'ActionValue',\n accessor: 'ActionValue',\n disableGlobalFilter: true,\n disableFilters: true,\n disableSortBy: true,\n hidden: true,\n exportorder: 4,\n },\n { Header: 'Amount', id: 'Amount', accessor: 'Amount', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 5 },\n { Header: 'Point', id: 'Point', accessor: 'Point', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 6 },\n { Header: 'SpentPoints', id: 'SpentPoints', accessor: 'SpentPoints', disableFilters: true, disableSortBy: true, hidden: true, exportorder: 7 },\n ];\n\n return (\n history.goBack()}\n avatar={}\n icon={}\n refetch={refetch}\n isFetching={isFetching}\n isLoading={isLoading}\n rowColors={{\n fieldid: 'TransactionType',\n colors: {\n Error: '#E74C3C',\n },\n }}\n localization={{\n back: t('labels:goback'),\n search: t('labels:search'),\n columnfilter: t('labels:columnfilter'),\n expand: t('labels:seemore'),\n insights: t('labels:insights'),\n refetch: t('labels:refresh'),\n }}\n />\n );\n};\n\nexport default TransactionsTable;\n","import React from 'react';\n\n// Components\nimport TransactionsTable from '../transactions.table';\n\nconst Transactions = () => \n\nexport default Transactions;","import React from 'react';\n\n// Material Ui\nimport Stack from '@mui/material/Stack';\n\n// Pages and components\nimport UsersTable from '../users.table';\n\nconst Users = ({ brand }) => {\n return (\n \n \n \n );\n}\n\nexport default React.memo(Users);","import { useEffect, useState } from 'react'\nimport ReactGA from 'react-ga4';\n\nimport { useLocation } from 'react-router-dom'\n\nexport const gaEventTracker = (category, action, label, fn) => {\n ReactGA.event({\n category: category,\n action: action,\n label: label\n });\n\n if (fn) return fn();\n}\n\nconst GAPageCollector = ({ children }) => {\n const location = useLocation();\n\n const [gaInitialized, setGaInitialized] = useState(false);\n\n useEffect(() => {\n ReactGA.initialize(process.env.REACT_APP_GA_ID);\n setGaInitialized(true);\n }, []);\n\n useEffect(() => {\n if (gaInitialized) {\n ReactGA.send({ hitType: \"pageview\", page: location.pathname });\n }\n }, [location, gaInitialized])\n\n return children;\n}\n\nexport default GAPageCollector","import React, { useContext } from 'react';\nimport { Switch, BrowserRouter, Route, Redirect } from 'react-router-dom';\nimport { SnackbarProvider } from 'notistack';\n\n// React DND\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\n\n// React Query\nimport { QueryClient } from 'react-query'\nimport { QueryClientProvider } from 'react-query'\nimport { ReactQueryDevtools } from 'react-query/devtools';\nimport { persistWithIndexedDB } from './_helpers/indexdb.persist.helper';\n\n// User Context\nimport { UserProvider, UserContext } from './_usercontext/user.context';\n\n// MUI\nimport CssBaseline from '@mui/material/CssBaseline';\n\n// Components\nimport PageNotFound from './_components/404.component';\nimport Spinner from './_components/spinner.component';\n\n// Pages\nimport Brand from './brand/pages/brand.page';\nimport Brands from './brand/pages/brands.page';\nimport BrandSettings from './brand/settings/brand.settings.page';\nimport Dashboard from './dashboard/pages/dashboard.page';\nimport Insights from './insights/pages/insights.page'\nimport Finances from './finance/pages/finances.page';\nimport Login from './login/pages/login.page';\nimport Page from './_pagebase/page-base.page';\nimport Pass from './pass/pages/pass.page';\nimport Passes from './pass/pages/passes.page';\nimport Products from './product/pages/products.page';\nimport Settings from './settings/settings.page';\nimport Subscriber from './subscriber/pages/subscriber.page';\nimport Subscribers from './subscriber/pages/subscribers.page';\nimport Transactions from './transaction/pages/transactions.page';\nimport Users from './user/pages/users.page';\n\n// Utilities and Helpers\nimport GAPageCollector from './_helpers/ga.collector.helper';\n\nconst PageRoute = ({ children, path, ...rest }) => {\n const { user, token, fetchingUserInfo } = useContext(UserContext);\n\n if (!token) // We do not have a token yet, still mounting, return null to wait\n return null;\n\n if (fetchingUserInfo) // If we are fetching user info, we show the spinner\n return \n\n if (path === '/login') {\n // We are at Login page\n // If we have a token, lets go to home page and see if we can fetch user data. \n // If token is expired, axios interceptors will redirect us to Login \n // If we do not have token, Login is the right place to be, lets render Login page\n if (token?.hastoken)\n return ;\n else\n return {children};\n }\n else {\n if (!token?.hastoken) // If we do not have a token, we should redirect to Login\n return ;\n\n // In order to continue to any page, we need a user fetched and loaded to state\n if (user)\n return {children}} />;\n else\n return ;\n }\n}\n\nconst App = () => {\n // Initialise React Query Client\n // It will be the heighest order component, so every context and component can use the data in it\n\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n cacheTime: 1000 * 60 * 60, // 60 mins\n refetchOnWindowFocus: false,\n refetchOnMount: true,\n retry: false,\n },\n },\n });\n\n persistWithIndexedDB(queryClient,\n {\n IndexedDBKey: 'REACT_QUERY_OFFLINE_CACHE',\n throttleTime: 1000,\n maxAge: 1000 * 60 * 60 * 24 * 7, // 7 days\n buster: window?.App_Version || ''\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\nexport default App;","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport I18nextBrowserLanguageDetector from 'i18next-browser-languagedetector';\n\nimport arLogin from './locales/ar/login.json';\nimport enLogin from './locales/en/login.json';\nimport heLogin from './locales/he/login.json';\nimport arActions from './locales/ar/actions.json';\nimport enActions from './locales/en/actions.json';\nimport heActions from './locales/he/actions.json';\nimport arErrors from './locales/ar/errors.json';\nimport enErrors from './locales/en/errors.json';\nimport heErrors from './locales/he/errors.json';\nimport arEnums from './locales/ar/enums.json';\nimport enEnums from './locales/en/enums.json';\nimport heEnums from './locales/he/enums.json';\nimport arLabels from './locales/ar/labels.json';\nimport enLabels from './locales/en/labels.json';\nimport heLabels from './locales/he/labels.json';\nimport arPrompts from './locales/ar/prompts.json';\nimport enPrompts from './locales/en/prompts.json';\nimport hePrompts from './locales/he/prompts.json';\nimport arReturncodes from './locales/ar/returncodes.json';\nimport enReturncodes from './locales/en/returncodes.json';\nimport heReturncodes from './locales/he/returncodes.json';\ni18n\n .use(initReactI18next)\n .use(I18nextBrowserLanguageDetector)\n .init({\n fallbackLng: 'en',\n whitelist: ['en', 'ar', 'he', 'tr'],\n resources: {\n ar: {\n login: arLogin,\n actions: arActions,\n enums: arEnums,\n errors: arErrors,\n labels: arLabels,\n prompts: arPrompts,\n returncodes: arReturncodes\n },\n he: {\n login: heLogin,\n actions: heActions,\n enums: heEnums,\n errors: heErrors,\n labels: heLabels,\n prompts: hePrompts,\n returncodes: heReturncodes\n },\n en: {\n login: enLogin,\n actions: enActions,\n enums: enEnums,\n errors: enErrors,\n labels: enLabels,\n prompts: enPrompts,\n returncodes: enReturncodes\n }\n }\n });\n\nexport default i18n;","import React, { useState, createContext, useMemo, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nimport 'moment/locale/ar'\nimport 'moment/locale/he'\nimport 'moment/locale/tr'\nimport 'moment/locale/en-gb'\nimport moment from 'moment';\n\n// For RTL support\nimport rtlPlugin from 'stylis-plugin-rtl';\nimport { prefixer } from 'stylis';\n\n// MUI\nimport createCache from '@emotion/cache';\nimport { CacheProvider } from '@emotion/react';\nimport { ThemeProvider, createTheme, responsiveFontSizes } from '@mui/material/styles';\n\nexport const AppThemeContext = createContext({});\n\nexport const AppThemeProvider = ({ children }) => {\n const browserlanguage = (navigator.language || navigator.userLanguage).substring(0, 2);\n\n const [dir, setDir] = useState(browserlanguage === 'ar' || browserlanguage === 'he' ? 'rtl' : 'ltr');\n const [languages, setLanguages] = useState([]);\n const [selectedLanguage, setSelectedLanguage] = useState(browserlanguage);\n\n const muiTheme = useMemo(() => {\n var theme = createTheme({\n direction: dir,\n palette: {\n background: {\n default: '#fafafa',\n paper: '#fff',\n },\n primary: {\n main: '#65449e',\n light: '#f3f0f7',\n },\n secondary: {\n main: '#f72585',\n },\n text: {\n primary: 'rgb(27, 27, 57)',\n secondary: 'rgba(27, 27, 57, 0.7)',\n disabled: 'rgba(27, 27, 57, 0.3)',\n success: '#2F7C31',\n hint: 'rgba(27, 27, 57, 0.25)',\n },\n },\n breakpoints: {\n values: {\n xs: 480,\n sm: 600,\n md: 840,\n lg: 960,\n xl: 1600,\n }\n },\n components: {\n MuiSkeleton: {\n styleOverrides: {\n rounded: {\n borderRadius: '16px'\n }\n }\n }\n }\n }\n );\n theme = responsiveFontSizes(theme);\n return theme;\n }, [dir]);\n\n const toggleLanguage = async language => {\n setSelectedLanguage(language);\n switch (language.Code) {\n case 'ar':\n document.dir = 'rtl';\n setDir('rtl');\n break;\n case 'he':\n document.dir = 'rtl';\n setDir('rtl');\n break;\n default:\n document.dir = 'ltr';\n setDir('ltr');\n break;\n }\n };\n\n useEffect(() => {\n if (dir === 'rtl') document.dir = 'rtl';\n else document.dir = 'ltr';\n moment.locale(selectedLanguage);\n }, [dir, selectedLanguage]);\n\n const cacheRtl = useMemo(() => {\n if (dir === 'rtl') {\n return createCache({\n key: 'muirtl',\n stylisPlugins: [prefixer, rtlPlugin],\n });\n }\n\n return createCache({ key: 'css' });\n }, [dir]);\n\n return (\n \n \n {children}\n \n \n );\n};\n\nAppThemeProvider.propTypes = {\n children: PropTypes.any,\n};\n","import React, { Suspense } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport App from \"./app\";\nimport \"./index.css\";\nimport \"./i18n\";\nimport { AppThemeProvider } from \"./_usercontext/apptheme.context\";\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);"],"sourceRoot":""}