{"version":3,"sources":["resources/logo.png","entities/AppConfig.ts","components/AnalyticsPageTracker.ts","components/PrivateRoute.tsx","services/ServiceHelper.ts","services/AdminService.ts","services/AuthenticationService.ts","withRoot.tsx","entities/SparkSubscription.ts","layout/layout.tsx","services/AccountService.ts","entities/ProSubscription.ts","utilities/CurrencyHelper.ts","pages/account/billingStatements.tsx","pages/account/changeEmail.tsx","pages/account/changePassword.tsx","pages/account/changePhone.tsx","pages/account/components/SparkAccountCard.tsx","pages/account/home.tsx","pages/account/mediaDashboard.tsx","services/ContributionsService.ts","services/MediaProducerService.ts","components/AnimatedNumberLabel.tsx","services/MiscService.ts","entities/FreeProSubscriptionAccess.ts","pages/account/paymentMethods.tsx","pages/admin/freeProAccess.tsx","pages/admin/impersonate.tsx","pages/admin/notes.tsx","pages/authentication/forgotPassword.tsx","pages/authentication/forgotPasswordSuccess.tsx","pages/authentication/register.tsx","pages/authentication/resetPassword.tsx","components/GlooIcon.tsx","components/GlooButton.tsx","entities/Sermon.ts","pages/authentication/signIn.tsx","utilities/ArrayHelper.ts","entities/SermonIllustration.ts","pages/contributions/editSermon.tsx","pages/contributions/editSermonIllustration.tsx","pages/contributions/sermonIllustrations.tsx","pages/contributions/editSermonSeries.tsx","pages/contributions/home.tsx","pages/contributions/sermons.tsx","pages/contributions/sermonSeries.tsx","entities/MediaItem.ts","services/MediaService.ts","pages/media/downloads.tsx","pages/media/activations.tsx","entities/VideoMedia.ts","components/SuccessSnackbar.tsx","components/ErrorSnackbar.tsx","pages/media/media-producer/manageMedia.tsx","services/VideoMediaService.ts","utilities/DateHelper.ts","pages/media/purchases.tsx","components/EditImageDialog.tsx","pages/media/media-producer/video-media/videoMediaUpload.tsx","pages/media/media-producer/video-media/videoMediaDetail.tsx","pages/media/media-producer/video-media/approvedVideoMedia.tsx","pages/media/media-producer/video-media/pendingVideoMedia.tsx","pages/misc/discussionNotifications.tsx","pages/misc/privateMessages.tsx","pages/misc/sermonFolders.tsx","services/ResourceViewingHistory.ts","pages/misc/viewingHistory.tsx","services/PreferencesService.ts","pages/preferences/newsletterSubscriptions.tsx","pages/preferences/notificationsPreferences.tsx","pages/preferences/preferredBibleTranslation.tsx","services/ProfileService.ts","pages/profile/aboutMe.tsx","pages/profile/myChurch.tsx","pages/profile/myStory.tsx","pages/profile/profileImage.tsx","pages/profile/sharedLinks.tsx","services/AppConfigService.ts","app.tsx","index.tsx"],"names":["module","exports","AppConfigEnvironment","AnalyticsPageTracker","window","dataLayer","gtag","push","arguments","this","props","config","googleAnalytics","isEnabled","script","document","createElement","type","async","src","trackingId","getElementsByTagName","appendChild","Date","location","pathname","search","history","listen","children","React","withRouter","PrivateRoute","Component","component","rest","user","render","routeProps","redirectProps","to","state","from","ServerError","model","undefined","message","statusCode","ServerResponse","data","object","valid","errors","ServerModelValidationResponse","FieldValidationError","fieldName","map","error","field","indexOf","retVal","filter","forEach","str","serializeAxiosError","errorResponse","serverError","response","status","path","redirect","encodeURIComponent","replace","WebClient","url","axios","get","headers","Pragma","method","file","onUploadProgress","put","p","progress","Math","round","loaded","total","AdminService","userId","Post","Get","isServerResponse","noteText","text","startDate","endDate","id","queryText","skip","take","orderBy","sortOrder","queryString","AuthenticationService","email","firstName","lastName","password","newsletterIds","confirmPassword","code","rememberMe","theme","createMuiTheme","palette","primary","blue","secondary","main","overrides","MuiCssBaseline","fontFamily","withRoot","SparkSubscriptionStatus","SparkSubscriptionTerm","CssBaseline","Layout","anchorEl","mobileDrawerOpen","myAccountOpen","roles","r","length","myProMembershipOpen","myMediaOpen","myContributionsOpen","myProfileOpen","myPreferencesOpen","myMediaProducerDashboardOpen","event","preventDefault","stopImpersonation","setState","onSignIn","reload","inAdminImpersonationMode","signOut","windowLocation","onSignOut","clickEvent","href","classes","List","dense","isAdmin","onClick","className","link","ListItem","button","ListItemIcon","listItemIcon","ListItemText","e","handleStopImpersonationClick","Divider","Collapse","in","timeout","unmountOnExit","disablePadding","nested","inset","some","listItem","mainSiteUrl","listItemNested","ListItemSecondaryAction","IconButton","navigateTo","open","Boolean","root","AppBar","position","appBar","Toolbar","color","aria-label","navIconHide","Hidden","mdUp","Typography","variant","grow","smDown","profileImageUrl","Avatar","currentTarget","avatar","charAt","Menu","anchorOrigin","vertical","horizontal","transformOrigin","onClose","MenuItem","handleSignOutClick","Drawer","anchor","paper","drawerPaper","ModalProps","keepMounted","renderMediaProducerNav","renderNav","toolbar","content","withStyles","createStyles","left","right","bottom","top","zIndex","overflow","flexGrow","display","drawer","width","backgroundColor","light","textDecoration","paddingRight","marginRight","paddingLeft","spacing","breakpoints","up","background","default","padding","minWidth","overflowY","mixins","ProSubscriptionTier","ProSubscriptionTerm","ProSubscriptionStatus","ProSubscriptionSourceType","AccountService","newEmail","appConfig","changeEmailResponse","Put","makerSiteUrl","currentPassword","newPassword","confirmNewPassword","newPhone","sparkSiteUrl","Active","cardId","CreditCardId","Delete","cardName","cardNumber","expiryMonth","expiryYear","cvv","zip","country","CardHolderName","CardNumber","SecurityCode","ExpirationMonth","ExpirationYear","PostalCode","Country","paymentsSiteUrl","paymentMethodId","PaymentMethodId","CurrencyHelper","GetCurrencySymbol","currency","BillingStatements","loading","billingStatements","visibleBillingStatementCount","anchorSort","title","getBillingStatements","updateBillingStatements","sortGreaterThanValue","sortLessThanValue","toLowerCase","sort","s1","s2","s1FieldValue","s2FieldValue","String","prototype","value","localeCompare","visibleBillingStatements","slice","Snackbar","hasGenericError","SnackbarContent","errorSnackbarContent","aria-describedby","snackBarText","errorSnackbarMessage","errorSnackbarContentIcon","dangerouslySetInnerHTML","__html","getGenericErrorSummary","style","fontStyle","marginBottom","spacer","Button","sortButton","aria-haspopup","aria-owns","getContentAnchorEl","menuItem","sortColumn","menuListItemIcon","fontSize","Grid","container","direction","justify","alignItems","textAlign","CircularProgress","marginTop","height","isGlooLogin","proSubscription","source","Gloo","infiniteScroll","pageStart","threshold","loadMore","hasMore","useWindow","getScrollParent","getElementById","loader","key","billingStatement","Card","cardContainer","invoiceId","CardContent","cardTitle","gutterBottom","invoiceDate","toLocaleDateString","invoiceNumber","invoiceAmount","toLocaleString","minimumFractionDigits","paymentAmount","refundAmount","balance","CardActions","marginLeft","header","flex","cardStatus","float","pos","opacity","whiteSpace","cardImage","flexWrap","dark","down","filterContainer","margin","maxWidth","clear","ChangeEmail","enableSubmit","currentEmail","showSuccessMessage","successMessage","changeEmail","isServerModelValidationResponse","console","log","autoHideDuration","successSnackbarContent","successSnackbarMessage","successSnackbarContentIcon","item","Paper","onSubmit","handleFormSubmit","form","TextField","isFieldInError","required","autoFocus","fullWidth","label","onChange","target","helperText","getFieldErrorSummary","size","disabled","submitButton","paddingTop","paddingBottom","green","ChangePassword","changePassword","ChangePhone","currentPhone","phoneNumber","changePhone","SparkAccountCard","useState","hasSubscription","setHasSubscription","useEffect","a","getHasSermonSparkSubscription","card","secondaryAction","Months","MapFilters","ChartYears","ChartViewingTypes","Home","showSendResetPasswordEmailDialog","showResetPasswordEmailSentMessage","showCloseAccountDialog","hasPaypal","hasPayPal","getMediaStatistics","mediaStatistics","getHasSermonMakerSubscription","then","hasMakerSubscription","tier","Plus","getPremiumSermonSeriesKitAccess","premiumSskAccess","Basic","getPlusMediaAccess","plusMediaAccess","v","getSermonStatistics","sermonStatistics","getSermonIllustrationStatistics","sermonIllustrationStatistics","nextBillDate","Cancelled","canChangeProSubscription","Premium","planName","match","dateString","date","getTime","makeAdmin","unmakeAdmin","sendResetPasswordEmail","closeAccount","getPlanName","inTrial","canUpgradeProSubscription","dateCreated","dangerButton","glooUserProfileUrl","repeat","Dialog","aria-labelledby","DialogTitle","DialogContent","DialogContentText","DialogActions","rel","paypalUrl","serviceStopDate","term","toString","nextBillPrice","planPrice","showUpgradeButton","alt","totalDownloadCount","totalPurchaseCount","approvedCount","pendingCount","totalViewCount","lastActivatedName","lastActivatedUrl","nextActivationDate","getNextActivationDate","activationCount","periodStart","periodEnd","actualBackgroundImageDownloads","allowedBackgroundImageDownloads","actualCountdownVideoDownloads","allowedCountdownVideoDownloads","actualMotionBackgroundDownloads","allowedMotionBackgroundDownloads","actualPreachingSlidesDownloads","allowedPreachingSlidesDownloads","actualWorshipLyricSlideDownloads","allowedWorshipLyricSlideDownloads","actualVideoIllustrationDownloads","allowedVideoIllustrationDownloads","actualComedyVideoDownloads","allowedComedyVideoDownloads","actualInspirationalVideoDownloads","allowedInspirationalVideoDownloads","actualSmallGroupStudyVideoDownloads","allowedSmallGroupStudyVideoDownloads","actualSocialGraphicDownloads","allowedSocialGraphicDownloads","snackbarContent","snackbarMessage","snackbarContentIcon","welcome","mdDown","renderMyAccount","renderMyPRO","renderMyMedia","renderSermonMakerStatus","renderMyContributions","renderPremiumSermonSeriesKitAccess","renderPROMediaDownloads","lgUp","xs","cardShort","transform","ContributionsService","timeframe","sermonId","sermonSeriesId","sermonSeriesName","description","body","language","targetAudience","sermonType","topics","scriptureReferences","sermonIllustrationId","category","summary","MediaProducerService","year","month","isSuccess","intervalId","incrementCount","currentValue","prevProps","prevState","clearInterval","incrementBy","setInterval","minDecimalPlaces","maximumFractionDigits","maxDecimalPlaces","MiscService","sermonFolderId","name","notes","FreeProSubscriptionAccessStatus","PieColors","today","years","getFullYear","MediaDashboard","mapRef","getMapData","filterByYear","filterByMonth","GetMediaProducersDownloadsAndViewsCount","mapDownloadAndViewData","updateUSMap","getPathDataBasedOnMapData","geo","filterByData","colorNumber","downloads","views","tooltipText","Views","Downloads","onYearBarClick","activeLabel","letMonthsString","typedAsMonths","chartViewing","Month","filterChartMonth","anchorChartMenu","updateChartData","loadingMap","usMapData","usStates","getMonth","All","totalDownloads","totalViews","Year","filterChartYear","producerPayoutData","filteredChartData","monthData","totalChart","getUSStates","allData","m","find","revenueShare","salesFromMedia","salesFromSSK","objects","states","geometries","geometry","usState","c","postalAbbreviation","dataByRegion","s","region","viewCount","downloadCount","rangeArray","d3","domain","range","svg","html","projection","attr","stateMap","append","selectAll","topojson","features","enter","d","datum","b","getProducerPayoutByYear","massageProducerPayoutDate","anchorChartYearMenu","anchorChartMonthMenu","producerPayoutCard","filterButtons","filterButton","Object","values","viewing","x","barSize","barGap","barChart","strokeDasharray","dataKey","tickFormatter","Intl","NumberFormat","format","formatter","filterNull","stackId","legendType","fill","stroke","every","noData","outerRadius","innerRadius","entry","index","anchorYearMenu","anchorMonthMenu","anchorByData","mapCard","totalBox","mapContainer","ref","input","Container","renderMapCard","maxHeight","verticalAlign","strokeLinejoin","strokeLinecap","strokeWidth","transition","fillOpacity","borderRadius","justifyContent","minHeight","PaymentMethods","handleAddPaymentMethodFormSubmit","disableAction","addCreditCardErrors","editCreditCardErrors","addPaymentMethod","addPaymentMethodCardHolderName","addPaymentMethodCreditCardNumber","addPaymentMethodCreditCardExpirationMonth","addPaymentMethodCreditCardExpirationYear","addPaymentMethodCreditCardSecurityCode","addPaymentMethodCreditCardPostalCode","selectedCountryShortCode","newCard","creditCards","showAddPaymentMethodDialog","isServerError","isModelValidation","findIndex","showCountries","handleUpdatePaymentMethodFormSubmit","updatePaymentMethod","updatePaymentMethodId","updatePaymentMethodCreditCardExpirationMonth","updatePaymentMethodCreditCardExpirationYear","updatePaymentMethodCreditCardSecurityCode","updatePaymentMethodCreditCardPostalCode","updatedCard","showUpdatePaymentMethodDialog","handleUpdateDefaultPaymentMethod","defaultCardId","changeDefaultCreditCard","defaultCard","cc","useCardByDefault","showChangePreferenceDialog","handleDeleteCardMethod","cardForDeletion","deleteCreditCard","showDeleteCardConfirmation","visibleCreditCardCount","countries","Promise","all","getCreditCards","getCountries","responses","expirationYear","expirationMonth","sortedCreditCards","Table","TableHead","TableRow","TableCell","align","TableBody","creditCard","ccTypeIcon","icon","getFontAwesomePaymentMethodType","tableCard","lastFour","classNames","tableExpiry","isExpired","Checkbox","checked","sortCreditCards","defaultCreditCard","action","close","glooSubscriptionsUrl","cardHolderName","postalCode","ExpansionPanel","ExpansionPanelSummary","expandIcon","expansionCardStatus","ExpansionPanelDetails","Fab","fab","extendedFab","addPaymentMethodDialogContent","sm","FormControl","formControl","InputLabel","htmlFor","Select","native","OutlinedInput","labelWidth","i","FormHelperText","twoCharCode","threeCharCode","renderPreferences","FreeProAccess","showAddAccessDialog","addAccessStartDate","getDateFormatDisplay","addAccessEndDate","setFullYear","showAddAccessSuccessMessage","showDisableDialog","getFreeProSubscriptionAccess","items","dateParts","split","substring","disableFreeProSubscriptionAccess","addFreeProSubscriptionAccess","access","Expired","Pending","Disabled","selectedItemId","handleAddAccessFormSubmit","dateField","InputLabelProps","shrink","disableFreeProAccess","badState","divider","Impersonate","impersonate","searchUsers","searchResult","trim","regexp","RegExp","handleSearchFormSubmit","searchIcon","InputBase","placeholder","inputRoot","inputInput","highlightText","TablePagination","count","totalCount","rowsPerPage","page","backIconButtonProps","nextIconButtonProps","onChangePage","onChangeRowsPerPage","parseInt","shape","fade","pointerEvents","transitions","create","Notes","handleAddNoteFormSubmit","addNoteText","addAdministratorNote","unshift","visibleNotes","showAddNoteDialog","getAdministratorNotes","n","multiline","rows","addNoteDialog","ForgotPassword","forgotPasswordContainer","snackbartMessage","forgotPasswordPaper","Logo","logoImage","buttonContainer","textButton","submitButtonMobile","ForgotPasswordSuccess","Register","toggleNewsletterSelection","selectedList","selectedNewsletterIds","splice","newsletters","getSignUpNewsletters","register","registerContainer","registerPaper","newsletter","FormControlLabel","control","ResetPassword","encodedEmail","params","resetPassword","resetPasswordContainer","resetPasswordPaper","textLink","GlooIcon","SvgIcon","viewBox","xmlns","y","rx","useStyles","makeStyles","glooButton","borderColor","borderWidth","textTransform","glooIcon","disabledLink","cursor","GlooButton","SermonStatus","SignIn","redirectToReferrer","signIn","glooRedirectUrl","accountSiteUrl","glooUrl","signInContainer","signInPaper","Box","SermonIllustrationStatus","ArrayHelper","stringToAdd","stringArray","separatedStrings","strings","stringPart","stringToRemove","EditSermon","originalSermonSeriesId","originalSermonSeriesName","intro","scriptures","addScriptureReferenceText","tags","addTopicText","updateSuccessMessage","showUpdateSuccessMessage","languages","types","targetAudiences","sermonSeries","URLSearchParams","getSermon","sermon","rejectionNotes","getChurchServiceLanguages","getSermonTypes","getChurchServiceTargetAudiences","getAllSermonSeries","saveSermon","scrollIntoView","updatedScriptures","scriptureReference","updatedTags","topic","elevation","mainToolbar","goBack","viewButton","onSeriesChange","inputProps","selected","sermonSeriesTitle","noWrap","Input","onBlur","addScriptureReference","onKeyPress","endAdornment","InputAdornment","Chip","onDelete","removeScriptureReference","chip","addTopic","removeTopic","formButton","gutters","FilterValue","EditSermonIllustration","categories","getSermonIllustration","sermonIllustration","getSermonIllustrationCategories","saveSermonIllustration","EditSeriesSermon","sermonsInSeries","showDeleteDialog","selectedSermonIdToDelete","showAddExistingDialog","sermons","unassignedSermons","loadingSermons","getSermonSeries","getSermonSeriesSermons","getSermons","saveSermonSeries","removeSermonSeriesSermon","l","currentIndex","f","updateSermonSeriesSermon","addSermonSeriesSermon","sermonActions","moveSermon","deleteSermon","addExistingDialogContent","addExistingDialogList","addSermonToSeries","anchorRegion","anchorTimeframe","sermonIllustrations","topRegions","topRegionsQueryText","topRegionsOrderBy","topRegionsOrder","topRegionsRowsPerPage","topRegionsPage","topContributions","topContributionsQueryText","topContributionsOrderBy","topContributionsOrder","topContributionsRowsPerPage","topContributionsPage","sermonRegionViewSummaries","sermonIllustrationRegionViewSummaries","worldMapData","updateMap","getSermonIllustrations","updateRegion","updateTopRegions","updateTopContributions","getSermonRegionViewSummaries","getSermonIllustrationRegionViewSummaries","updateWorldMap","updateTopStates","updateTopCountries","filteredUSStates","query","includes","grandTotalViews","getTotalViews","topUSStates","filteredSermonViews","countryCode","regionName","reduce","currentViews","filteredSermonIllustrationViews","percent","toFixed","c1","c2","c1FieldValue","c2FieldValue","filteredCountries","topCountries","filteredSermons","topSermons","filteredSermonIllustrations","topSermonIllustrations","concat","Number","feature","d3GeoProjection","worldMap","on","properties","self","sermonRegions","sermonIllustrationRegions","getTimeframeDisplayName","sermonsViewed","getSermonsViewed","regionsReached","getRegionsReached","mapLoader","tableToolbar","tableWrapper","sortDirection","TableSortLabel","active","sortTopRegionsColumn","rowsPerPageOptions","sortTopContributionsColumn","regionContainer","timeframeContainer","gridContainer","lg","xl","renderTotalViewsCard","renderSermonsViewedCard","renderRegionsReachedCard","renderTopCountriesCard","renderTopContributionsCard","withWidth","grid","overflowX","SermonIllustrations","renderStars","rating","val","ratingStar","ceil","visibleSermonIllustrationCount","anchorFilter","filterValue","Rejected","Approved","updateFilteredSermonIllustrations","selectedSermonIllustrationIdToDelete","deleteSermonIllustration","sr","tg","visibleSermonIllustrations","unselectedListItem","illustration","ratingCount","ratingStarContainer","tagsAndScriptures","join","textOverflow","borderTop","SermonSeriesPage","filteredSermonSeries","visibleSermonSeriesCount","selectedSermonSeriesIdToDelete","deleteSermonSeries","updateFilteredSermonSeries","visibleSermonSeries","series","sermonCount","MediaType","MediaItemStatus","Sermons","visibleSermonCount","updateFilteredSermons","visibleSermons","MediaService","request","translatedResponse","dateAvailable","Activations","mediaItems","filteredMediaItems","visibleMediaItemCount","getActivationHistory","updateFilteredMediaItems","visibleMediaItems","mediaItem","CardMedia","image","imageUrl","MediaStatus","VideoMediaType","getDownloadHistory","StillBackground","CountdownVideo","MotionBackground","PreachingSlide","WorshipLyricSlide","VideoIllustration","SocialGraphic","Comedy","Inspirational","SmallGroupStudy","ChurchMediaSet","htmlRegex","node","test","kitDownloadUrl","publiclyAvailable","shareLink","shareableUrl","shareableUrlName","backgroundSize","ManageMedia","onChangeShowDisabledMedia","showDisabledMedia","searchMediaItems","reset","filterMediaType","sortBy","sortDescending","filterStatus","filterNeedsAttention","searchRequest","includeDisabled","needsAttention","mediaItemsResult","onDisable","mediaItemToDisable","disableReason","reason","requestDisable","errorMessage","onEnable","mediaItemToEnable","enableReason","requestEnable","showSelectProducerDialog","openSpeedDial","filterBy","anchorFilterMenu","anchorFilterStatusMenu","anchorSortMenu","filterNeedsaAttentionMenu","Countdown_Video","Motion_Background","Video_Illustration","Switch","onFilterNeedsAttention","onChangeFilterBy","onChangeItemStatusBy","onChangeSortBy","CardHeader","cardHeader","mediaProducer","previewImageUrl","subheader","getEditLink","removeBorderRadius","styles","genres","SpeedDial","ariaLabel","SpeedDialIcon","SpeedDialAction","tooltipTitle","tooltipOpen","defaultValue","ErrorSnackbar","SuccessSnackbar","switch","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","VideoMediaService","translateSingleResponse","videoMediaId","fileName","uploadUrl","PutFile","jobId","videoMedia","translateVideoMediaType","DateHelper","getDateStringFormattedForInput","day","getDate","EditImageDialog","cropperRef","onAcceptEdit","editorWidth","editorHeight","exportJpgQuality","exportConfigurations","avatarEditor","exportedImages","exportJpg","onImageEdited","exportedImage","jpgQuality","canvas","getImage","getContext","drawImage","exportQuality","base64ImageData","toDataURL","cropScale","imageToEdit","PaperProps","cropDialog","cropper","border","rotate","scale","Slider","slider","min","max","VideoMediaUpload","onSavePreviewImage","disableSubmit","onChangeDisableSubmit","thumbnail","poster","onError","base64ThumbnailImage","base64PosterImage","saveVideoMediaPreviewImage","onUpdate","uploadedPreviewImage","newPreviewImage","onSuccess","monitorEncodingJob","encodeJobId","interval","getEncodingJobStatus","isComplete","encodeVideoPercentage","onVideoEncodingComplete","completionPercentage","preview","previewVideoPath","downloadDetails","extension","quality","duration","saveVideoMediaVideoMedia","onEncodingSuccess","getPendingVideoMediaAvailableVideoDownloads","videoDownloadResponse","videoDownloads","uploadVideoEnabled","onDownload","videoDownload","sourceVideoQuality","previewVideoUrl","getVideoMediaAvailableVideoDownloads","downloadResponse","activeReadOnlyPrompt","files","readFileAsDataUrl","dataUrl","loadImage","uploadedFileNameSplit","generateVideoUploadUrl","uploadUrlResponse","isError","uploadSourceVideo","uploadVideoPercentage","uploadResponse","encodingJobRequest","videoMediaType","sourceFileName","sourceQuality","createEncodingJob","encodeJobResponse","resolve","reject","img","Image","onload","onerror","reader","FileReader","result","onabort","readAsDataURL","thumbnailImageUrl","accept","handlePreviewImageUpload","controls","controlsList","preload","toUpperCase","handleVideoUpload","LinearProgress","VideoMediaDetail","setVideoMediaToState","onCompletion","dateAvailableValue","listPrice","discountedPrice","hasDiscount","serviceGenres","audiences","serviceStyles","onPageClose","onPathChange","onSaveRequested","validateStatus","showSaveConfirmationDialog","onSaveVideoMedia","parentId","adminComment","producerComment","saveVideoMedia","onPathReplace","styleIsSelected","toggleStyle","audienceIsSelected","audience","toggleAudience","genreIsSelected","genre","toggleGenre","g","newTopics","topicInput","t","topicToRemove","newScriptureReferences","scriptureReferenceInput","scriptureReferenceToRemove","showEnable","onCancel","requestCancel","showCancel","setTimeout","showDisable","deleteReason","requestDelete","showDelete","onConfirmEditInReadOnly","reasonForUpdate","createPendingItemFromApproved","creatingPending","activateReadOnlyPrompt","changeRejectedToPending","addType","getAddType","showAddProducerDialog","readonly","getPendingVideoMedia","getVideoMedia","videoMediaResponse","listingPrice","isNaN","maxLength","rowsMax","FormLabel","FormGroup","row","focused","getPriceStatus","step","parseFloat","startAdornment","formButtonsWrapper","submitDisabled","weightedTopicChip","buttonProgress","Purchases","getPurchaseHistory","SermonSeriesKit","PremiumSermonKit","DiscussionNotifications","deleteDialogOpen","getDiscussionNotifications","discussionNotifications","selectedType","selectedId","unsubscribeFromDiscussionNotification","subscription","dateSubscribed","toDateString","cardType","introText","PrivateMessagesPage","messages","getPrivateMessages","fromUserFirstName","fromUserLastName","dateSent","fromUserImageUrl","SermonFolders","sermonFolders","selectedSermonFolderId","selectedSermonFolderIdToMove","favorites","selectedFavoriteId","showEditDialog","editSermonFolderName","editSermonFolderNotes","showEditFavoriteDialog","editFavoriteNotes","showAddDialog","addSermonFolderName","addSermonFolderNotes","showDeleteFavoriteDialog","showMoveFavoriteDialog","getSermonFolders","updateSelectedSermonFolder","selectedSermonFolder","updateFavorites","getFavorites","deleteSermonFolder","deleteFavorite","favoriteId","favorite","saveFavorite","moveToSermonFolderId","saveSermonFolder","selectedFavorite","sermonFolder","imageUri","moveFavorite","uri","cancelEditSermonFolder","handleEditFormSubmit","handleEditFavoriteFormSubmit","cancelAddSermonFolder","handleAddFormSubmit","RadioGroup","folder","Radio","radioBox","moveFavoriteFolder","ResourceViewingHistoryService","ViewingHistory","resources","showDeleteAllDialog","historyEnabled","selectedResourceIdToDelete","getResourceViewingHistory","isRecordingHistory","deleteResourceViewingHistory","deleteResourceViewingHistories","disableResourceViewingHistory","enableResourceViewingHistory","toggleRecording","resource","dateViewed","resourceType","cardHeaderContent","resourceUserName","resourceImageUri","titleLink","contributorLink","resourceUserUri","deleteResource","deleteAllResources","PreferencesService","translationId","receiveFeedbackMessageNotifications","receiveSermonCommentNotifications","NewsletterSubscriptions","getNewsletterSubscriptions","newsletterSubscriptions","updateNewsletterSubscriptions","proUsersOnly","checkBox","saveButton","NotificationPreferences","getNotificationPreferences","notificationPreferences","updateNotificationPreferences","BibleTranslationPage","bibleTranslations","preferredTranslationId","getBibleTranslations","getPreferredBibleTranslation","preferredBibleTranslation","updatePreferredBibleTranslation","translation","ProfileService","base64ImageUrl","education","experience","jobPosition","denomination","age","attendance","medianAudienceAge","primaryEthnicity","serviceStyle","emailAddress","website","streetAddress","city","family","hobbies","bestAdvice","sermonDifference","favoriteIllustration","bookImpact","somethingFunny","parentsThink","spouseThink","ifICould","tombstone","comment","AboutMePage","getAboutMe","aboutMe","savedAboutMe","updateAboutMe","editForm","publicProfileUrl","renderEditMode","MyChurchPage","religiousConsentChecked","denominations","churchAges","churchAttendances","churchMedianAudienceAges","churchPrimaryEthnicities","churchServiceStyles","canadianProvinces","getMyChurch","myChurch","savedMyChurch","getDenominations","getChurchAges","getChurchAttendances","getChurchMedianAudienceAges","getChurchPrimaryEthnicities","getChurchServiceStyles","getCanadianProvinces","updateMyChurch","lineWrapper","churchAge","defaultChecked","province","MyStoryPage","getMyStory","myStory","savedMyStory","updateMyStory","ProfileImage","uploadedFileData","showCropDialog","handleFileUpload","dataTransfer","changeProfileImage","ctx","onDragOver","onDrop","handleFileUploadDrop","removeProfileImage","handleFileUploadChange","updateProfileImage","SharedLinks","showAddLinkDialog","showDeleteLinkDialog","showTooManyLinksDialog","addLinkText","addLinkUrl","getSharedLinks","links","selectedLinkToDelete","deleteSharedLink","startsWith","addSharedLink","dialogContent","deleteLink","onAddUrl","AppConfigService","library","add","faCcAmex","faCcDiscover","faCcMastercard","faCcVisa","faCcPaypal","App","environment","Production","getAppConfig","getAuthenticatedUser","catch","basename","baseUrl","handleUpdateUser","exact","ContributorDashboard","SermonSeries","AddEditSeries","PrivateMessages","BibleTranslation","Notifications","defaults","withCredentials","getAttribute","ReactDOM","querySelector","renderApp"],"mappings":"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","file":"static/js/main.1ef6eb1a.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","export enum AppConfigEnvironment {\r\n Development = \"Development\",\r\n Staging = \"Staging\",\r\n Production = \"Production\"\r\n}\r\n\r\nexport default interface AppConfig {\r\n environment: AppConfigEnvironment;\r\n googleAnalytics: { isEnabled: boolean, trackingId: string };\r\n paypalUrl: string;\r\n mainSiteUrl: string;\r\n paymentsSiteUrl: string;\r\n makerSiteUrl: string;\r\n sparkSiteUrl: string;\r\n accountSiteUrl: string;\r\n glooSubscriptionsUrl: string;\r\n glooUserProfileUrl: string;\r\n}\r\n","import * as React from 'react';\r\nimport { withRouter, RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../entities/AppConfig';\r\n\r\ndeclare const gtag: (command: string, commandParameters?: any, additionalConfigInfo?: any) => any;\r\n\r\ninterface Props extends RouteComponentProps {\r\n config: AppConfig;\r\n children?: React.ReactNode;\r\n}\r\n\r\nclass AnalyticsPageTracker extends React.Component {\r\n\r\n componentDidMount() {\r\n\r\n (window as any).dataLayer = (window as any).dataLayer || [];\r\n (window as any).gtag = function () { (window as any).dataLayer.push(arguments); };\r\n\r\n if (this.props.config.googleAnalytics.isEnabled) {\r\n\r\n let script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.async = true;\r\n script.src = `https://www.googletagmanager.com/gtag/js?id=${this.props.config.googleAnalytics.trackingId}`;\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n\r\n gtag('js', new Date());\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'send_page_view': false });\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'page_path': this.props.location.pathname + this.props.location.search });\r\n\r\n this.props.history.listen(location => {\r\n gtag('config', this.props.config.googleAnalytics.trackingId, { 'page_path': location.pathname + location.search });\r\n });\r\n }\r\n\r\n render() {\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default withRouter(AnalyticsPageTracker);","import * as React from \"react\";\r\nimport { Redirect, Route, RouteComponentProps, RouteProps } from \"react-router-dom\";\r\nimport ApplicationUser from \"../entities/ApplicationUser\";\r\n\r\ntype RouteComponent = React.StatelessComponent> | React.ComponentClass;\r\n\r\ninterface PrivateRouteProps extends RouteProps {\r\n user: ApplicationUser | null;\r\n}\r\n\r\nexport const PrivateRoute: React.StatelessComponent = ({ component, ...rest }) => {\r\n\r\n const renderComponent = (Component: RouteComponent) => (props: RouteComponentProps) => {\r\n\r\n return ;\r\n };\r\n\r\n if (!rest.user) {\r\n\r\n return (\r\n {\r\n\r\n const redirectProps = {\r\n to: {\r\n pathname: \"/auth/sign-in\",\r\n state: { from: routeProps.location },\r\n },\r\n };\r\n\r\n return ;\r\n }}\r\n />\r\n );\r\n }\r\n else if (component) {\r\n return ;\r\n }\r\n else if (rest.render) {\r\n return ;\r\n }\r\n else {\r\n return null;\r\n }\r\n};","import axios, { AxiosError } from 'axios';\r\n\r\nexport interface ServerError {\r\n message: string;\r\n statusCode: number;\r\n}\r\n\r\nexport class ServerError {\r\n public static isServerError(model: any): model is ServerError {\r\n return model.message !== undefined && model.statusCode !== undefined;\r\n }\r\n}\r\n\r\nexport interface ServerResponse {\r\n data: T;\r\n message: string;\r\n}\r\n\r\nexport class ServerResponse {\r\n public static isServerResponse(model: any): model is ServerResponse {\r\n return model.data !== undefined && model.message !== undefined;\r\n }\r\n static isSuccess(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerResponse {\r\n let object: any = model;\r\n return object.data !== undefined && object.message !== undefined;\r\n }\r\n static isError(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerError {\r\n let object: any = model;\r\n return object.message !== undefined && object.statusCode !== undefined;\r\n }\r\n static isModelValidation(model: ServerResponse | ServerError | ServerModelValidationResponse): model is ServerModelValidationResponse {\r\n let object: any = model;\r\n return object.valid !== undefined && object.errors !== undefined;\r\n }\r\n}\r\n\r\nexport interface ServerModelValidationResponse {\r\n valid: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nexport class ServerModelValidationResponse {\r\n public static isServerModelValidationResponse(model: any): model is ServerModelValidationResponse {\r\n return model.valid !== undefined && model.errors !== undefined;\r\n }\r\n}\r\n\r\nexport interface FieldValidationError {\r\n field: string;\r\n errors: string[];\r\n}\r\n\r\nexport class FieldValidationError {\r\n public static isFieldInError(errors: FieldValidationError[], fieldName: string): boolean {\r\n return errors.map(error => error.field).indexOf(fieldName) > -1;\r\n }\r\n public static getFieldErrorSummary(errors: FieldValidationError[], fieldName: string): string {\r\n var retVal = '';\r\n errors.filter(error => error.field === fieldName).forEach(error => {\r\n error.errors.forEach(str => retVal += str + ' ');\r\n });\r\n return retVal;\r\n }\r\n public static hasGenericError(errors: FieldValidationError[]): boolean {\r\n\r\n return errors.map(error => error.field).indexOf('') > -1;\r\n }\r\n public static getGenericErrorSummary(errors: FieldValidationError[]): string {\r\n var retVal = '';\r\n errors.filter(error => error.field === '').forEach(error => {\r\n error.errors.forEach(str => retVal += str + ' ');\r\n });\r\n return retVal;\r\n }\r\n}\r\n\r\nconst serializeAxiosError = (errorResponse: AxiosError) => {\r\n let serverError: ServerError;\r\n let response = errorResponse.response;\r\n\r\n // Happens if the http request gets killed mid request\r\n if (!response) {\r\n serverError = { message: \"An error occurred while processing your request. Please try again.\", statusCode: 500 };\r\n }\r\n else if (response.status === 404) {\r\n serverError = { message: \"An error occurred while processing your request. Please try again.\", statusCode: response.status };\r\n }\r\n // Redirect to sign in page\r\n else if (response.status === 401) {\r\n let path = window.location.pathname;\r\n let redirect = \"?returnUrl=\" + encodeURIComponent(path);\r\n window.location.replace(\"/sign-in\" + redirect);\r\n let standardServerResponse: ServerResponse = response.data;\r\n serverError = { message: standardServerResponse.message, statusCode: response.status };\r\n }\r\n else {\r\n let standardServerResponse: ServerResponse = response.data;\r\n serverError = { message: standardServerResponse.message, statusCode: response.status };\r\n }\r\n\r\n return serverError;\r\n};\r\n\r\nconst uploadProgressPercent = (progress: ProgressEvent) => {\r\n return Math.round((progress.loaded * 100) / progress.total);\r\n};\r\n\r\n\r\nexport class WebClient {\r\n public static async Get(url: string) {\r\n try {\r\n const response = await axios.get(url, { headers: { Pragma: 'no-cache' } });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError((errorResult));\r\n }\r\n }\r\n\r\n public static async Post(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"post\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async Put(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"put\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async Delete(url: string, data: any) {\r\n try {\r\n const response = await axios(url, {\r\n method: \"delete\",\r\n data: data,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n return response.data as (ServerResponse | ServerModelValidationResponse);\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n public static async PutFile(url: string, file: File, onUploadProgress?: (percent: number) => void) {\r\n try {\r\n await axios.put(url, file, {\r\n onUploadProgress: onUploadProgress ? p => onUploadProgress(uploadProgressPercent(p)) : undefined,\r\n headers: { Pragma: 'no-cache' }\r\n });\r\n let response: ServerResponse = {\r\n data: true,\r\n message: \"\"\r\n };\r\n return response;\r\n }\r\n catch (errorResult) {\r\n return serializeAxiosError(errorResult);\r\n }\r\n }\r\n\r\n}\r\n","import AdministratorNote from '../entities/AdministratorNote';\r\nimport ApplicationUser from '../entities/ApplicationUser';\r\nimport FreeProSubscriptionAccess from '../entities/FreeProSubscriptionAccess';\r\nimport SearchResult from '../entities/SearchResult';\r\nimport User from '../entities/User';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class AdminService {\r\n\r\n public static makeAdmin(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/MakeAdmin\", { userId: userId });\r\n }\r\n\r\n public static unmakeAdmin(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/UnmakeAdmin\", { userId: userId });\r\n }\r\n\r\n public static impersonate(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/Impersonate\", { userId: userId });\r\n }\r\n\r\n public static sendResetPasswordEmail(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/SendResetPasswordEmail\", { userId: userId });\r\n }\r\n\r\n public static closeAccount(userId: number) {\r\n\r\n return WebClient.Post(\"api/Admin/CloseAccount\", { userId: userId });\r\n }\r\n\r\n public static async getAdministratorNotes() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/GetAdministratorNotes\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addAdministratorNote(noteText: string) {\r\n\r\n return WebClient.Post(\"api/Admin/AddAdministratorNote\", { text: noteText });\r\n }\r\n\r\n public static async getFreeProSubscriptionAccess() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/GetFreeProSubscriptionAccess\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addFreeProSubscriptionAccess(startDate: string, endDate: string) {\r\n\r\n return WebClient.Post(\"api/Admin/AddFreeProSubscriptionAccess\", { startDate, endDate });\r\n }\r\n\r\n public static async disableFreeProSubscriptionAccess(id: number) {\r\n\r\n return WebClient.Post(\"api/Admin/DisableFreeProSubscriptionAccess\", { id });\r\n }\r\n\r\n public static async stopImpersonation() {\r\n\r\n var response = await WebClient.Get(\"api/Admin/StopImpersonation\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async searchUsers(queryText: string, skip: number, take: number, orderBy: string, sortOrder: string) {\r\n\r\n var queryString = '?queryText=' + encodeURIComponent(queryText) + '&skip=' + skip + '&take=' + take + '&orderBy=' + orderBy + '&sortOrder=' + sortOrder;\r\n var response = await WebClient.Get>(\"api/Admin/SearchUsers\" + queryString);\r\n if (ServerResponse.isServerResponse>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import ApplicationUser from '../entities/ApplicationUser';\r\nimport Newsletter from '../entities/Newsletter';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class AuthenticationService {\r\n\r\n public static decodeResetPasswordEmail(email: string) {\r\n\r\n return WebClient.Post(\"api/Authentication/DecodeResetPasswordEmail\", { email: email });\r\n }\r\n\r\n public static async getAuthenticatedUser() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/GetAuthenticatedUser\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSignUpNewsletters() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/GetSignUpNewsletters\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return [];\r\n }\r\n }\r\n\r\n public static register(firstName: string, lastName: string, email: string, password: string, newsletterIds: number[]) {\r\n return WebClient.Post(\"api/Authentication/Register\", { firstName: firstName, lastName: lastName, email: email, password: password, newsletterIds: newsletterIds });\r\n }\r\n\r\n public static resetPassword(email: string, password: string, confirmPassword: string, code: string) {\r\n return WebClient.Post(\"api/Authentication/ResetPassword\", { email: email, password: password, confirmPassword: confirmPassword, code: code });\r\n }\r\n\r\n public static sendResetPasswordEmail(email: string) {\r\n return WebClient.Post(\"api/Authentication/SendResetPasswordEmail\", { email: email });\r\n }\r\n\r\n public static signIn(email: string, password: string, rememberMe: boolean) {\r\n return WebClient.Post(\"api/Authentication/SignIn\", { email: email, password: password, rememberMe: rememberMe });\r\n }\r\n\r\n public static async signOut() {\r\n\r\n var response = await WebClient.Get(\"api/Authentication/SignOut\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return '';\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport { MuiThemeProvider, createMuiTheme } from '@material-ui/core/styles';\r\nimport blue from '@material-ui/core/colors/blue';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\n\r\n// A theme with custom primary and secondary color.\r\n// It's optional.\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: blue,\r\n secondary: {\r\n main: '#d90000',\r\n }\r\n },\r\n overrides: {\r\n MuiCssBaseline: {\r\n '@global': {\r\n '@font-face': { fontFamily: 'Poppins' },\r\n }\r\n }\r\n }\r\n});\r\n\r\nfunction withRoot

(Component: React.ComponentType

) {\r\n function WithRoot(props: P) {\r\n // MuiThemeProvider makes the theme available down the React tree\r\n // thanks to React context.\r\n return (\r\n \r\n {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return WithRoot;\r\n}\r\n\r\nexport default withRoot;","export enum SparkSubscriptionStatus {\r\n Unknown = 0,\r\n Incomplete = 1,\r\n IncompleteExpired = 2,\r\n Trialing = 3,\r\n Active = 4,\r\n PastDue = 5,\r\n Cancelled = 6,\r\n Unpaid = 7,\r\n}\r\n\r\nexport enum SparkSubscriptionTerm {\r\n Unknown = 0,\r\n Monthly = 1,\r\n Yearly = 2,\r\n}\r\n\r\nexport default interface SparkSubscription {\r\n id: number;\r\n userId: number;\r\n stripeSubscriptionId: string;\r\n stripeCustomerId: string;\r\n status: SparkSubscriptionStatus;\r\n startDate: Date;\r\n endDate?: Date;\r\n cancelOn?: Date;\r\n isCancelled: boolean;\r\n term: SparkSubscriptionTerm;\r\n price: number;\r\n expirationDate?: Date;\r\n renewalDate?: Date;\r\n}","import AppBar from '@material-ui/core/AppBar';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport AccountBoxIcon from '@material-ui/icons/AccountBox';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport BlockIcon from '@material-ui/icons/Block';\r\nimport CardGiftcardIcon from '@material-ui/icons/CardGiftcard';\r\nimport ChatIcon from '@material-ui/icons/Chat';\r\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport FaceIcon from '@material-ui/icons/Face';\r\nimport FavoriteIcon from '@material-ui/icons/Favorite';\r\nimport HelpIcon from '@material-ui/icons/Help';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport HomeIcon from '@material-ui/icons/Home';\r\nimport LanguageIcon from '@material-ui/icons/Language';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport MovieIcon from '@material-ui/icons/Movie';\r\nimport NotesIcon from '@material-ui/icons/Notes';\r\nimport NotificationsIcon from '@material-ui/icons/Notifications';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport SupervisorAccountIcon from '@material-ui/icons/SupervisorAccount';\r\nimport * as React from 'react';\r\nimport { Link, RouteComponentProps, withRouter } from 'react-router-dom';\r\nimport AppConfig from '../entities/AppConfig';\r\nimport ApplicationUser from '../entities/ApplicationUser';\r\nimport { AdminService } from '../services/AdminService';\r\nimport { AuthenticationService } from '../services/AuthenticationService';\r\nimport withRoot from '../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n position: 'absolute',\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n top: 0,\r\n zIndex: 1,\r\n overflow: 'hidden',\r\n flexGrow: 1,\r\n display: 'flex',\r\n },\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n },\r\n drawerPaper: {\r\n position: 'relative',\r\n width: 250,\r\n },\r\n avatar: {\r\n backgroundColor: theme.palette.primary.light\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n listItem: {\r\n paddingRight: 0,\r\n },\r\n listItemIcon: {\r\n marginRight: 0,\r\n },\r\n nested: {\r\n paddingLeft: theme.spacing() * 3,\r\n paddingRight: 0,\r\n },\r\n navIconHide: {\r\n [theme.breakpoints.up('md')]: {\r\n display: 'none',\r\n },\r\n },\r\n content: {\r\n flexGrow: 1,\r\n backgroundColor: theme.palette.background.default,\r\n padding: theme.spacing() * 3,\r\n minWidth: 0, // So the Typography noWrap works\r\n overflowY: \"auto\"\r\n },\r\n toolbar: theme.mixins.toolbar,\r\n listItemNested: {\r\n paddingLeft: 40\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n user: ApplicationUser | null;\r\n config: AppConfig;\r\n onSignIn: (user: ApplicationUser) => void;\r\n onSignOut: () => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\ntype State = {\r\n anchorEl: HTMLElement | null;\r\n mobileDrawerOpen: boolean;\r\n myAccountOpen: boolean;\r\n myProMembershipOpen: boolean;\r\n myMediaOpen: boolean;\r\n myContributionsOpen: boolean;\r\n myProfileOpen: boolean;\r\n myPreferencesOpen: boolean;\r\n myMediaProducerDashboardOpen: boolean;\r\n};\r\n\r\nclass Layout extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n anchorEl: null,\r\n mobileDrawerOpen: false,\r\n myAccountOpen: this.props.user ? this.props.user.roles.filter((r) => r === 'Admin').length === 0 : false,\r\n myProMembershipOpen: false,\r\n myMediaOpen: false,\r\n myContributionsOpen: false,\r\n myProfileOpen: false,\r\n myPreferencesOpen: false,\r\n myMediaProducerDashboardOpen: this.props.user ? this.props.user.roles.filter((r) => r === 'MediaProducer').length > 0 : false,\r\n };\r\n }\r\n\r\n async handleStopImpersonationClick(event: React.MouseEvent) {\r\n\r\n event.preventDefault();\r\n const user = await AdminService.stopImpersonation();\r\n if (user) {\r\n this.setState({ mobileDrawerOpen: false });\r\n this.props.onSignIn(user);\r\n this.props.history.push('/admin/impersonate');\r\n }\r\n else {\r\n window.location.reload();\r\n }\r\n }\r\n\r\n async handleSignOutClick() {\r\n\r\n if (this.props.user && this.props.user.inAdminImpersonationMode) {\r\n\r\n const user = await AdminService.stopImpersonation();\r\n if (user) {\r\n this.setState({ mobileDrawerOpen: false });\r\n this.props.onSignIn(user);\r\n this.props.history.push('/admin/impersonate');\r\n }\r\n else {\r\n window.location.reload();\r\n }\r\n }\r\n else {\r\n\r\n const windowLocation = await AuthenticationService.signOut();\r\n\r\n this.setState({ anchorEl: null });\r\n this.props.onSignOut();\r\n if (windowLocation) {\r\n window.location.replace(windowLocation);\r\n }\r\n }\r\n }\r\n\r\n navigateTo(clickEvent: React.MouseEvent, href: string) {\r\n this.setState({ mobileDrawerOpen: false });\r\n clickEvent.preventDefault();\r\n this.props.history.push(href);\r\n }\r\n\r\n renderNav() {\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n\r\n return (\r\n \r\n \r\n\r\n {this.props.user.isAdmin &&\r\n \r\n {!this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/impersonate'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/notes'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/free-pro-access'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.handleStopImpersonationClick(e)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n\r\n this.setState({ myAccountOpen: !this.state.myAccountOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myAccountOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/change-email'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/change-password'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/change-phone'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/payment-methods'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/billing-statements'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ myMediaOpen: !this.state.myMediaOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myMediaOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/downloads'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/purchases'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/activations'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ myContributionsOpen: !this.state.myContributionsOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myContributionsOpen ? : }\r\n \r\n \r\n \r\n {this.props.user.roles.some(r => r === 'Contributor') &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/contributions'>\r\n \r\n \r\n \r\n \r\n }\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/contributions/sermons'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/contributions/sermon-illustrations'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/contributions/sermon-series'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ myProfileOpen: !this.state.myProfileOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myProfileOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/profile/about-me'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/profile/profile-image'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/profile/my-church'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/profile/my-story'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/profile/shared-links'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ myPreferencesOpen: !this.state.myPreferencesOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myPreferencesOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/preferences/notifications'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/preferences/bible-translation'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/preferences/newsletter-subscriptions'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/discussion-notifications'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/sermon-folders'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/private-messages'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/viewing-history'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}/content/learning-library`}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}`}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n renderMediaProducerNav() {\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n\r\n return (\r\n \r\n \r\n\r\n {this.props.user.isAdmin &&\r\n \r\n {!this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/impersonate'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/notes'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/admin/free-pro-access'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.inAdminImpersonationMode &&\r\n this.handleStopImpersonationClick(e)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n }\r\n\r\n this.setState({ myMediaProducerDashboardOpen: !this.state.myMediaProducerDashboardOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myMediaProducerDashboardOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media-dashboard'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/change-email'>\r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/account/change-password'>\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ myMediaOpen: !this.state.myMediaOpen })}>\r\n \r\n \r\n \r\n \r\n {this.state.myMediaOpen ? : }\r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/manage/all'>\r\n \r\n \r\n \r\n \r\n {this.props.user.roles.filter((r) => r === 'HasVideoIllustrationAccess').length > 0 &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/manage/video-illustrations'>\r\n \r\n \r\n \r\n this.navigateTo(e, \"/media/video-media/pending/add/video-illustration\")}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasMotionBackgroundAccess').length > 0 &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/manage/motion-backgrounds'>\r\n \r\n \r\n \r\n this.navigateTo(e, \"/media/video-media/pending/add/motion-background\")}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasCountdownVideoAccess').length > 0 &&\r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} to='/media/manage/countdown-videos'>\r\n \r\n \r\n \r\n this.navigateTo(e, \"/media/video-media/pending/add/countdown-video\")}>\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}/content/learning-library`}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ mobileDrawerOpen: false })} className={classes.link} href={`${this.props.config.mainSiteUrl}`}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const { anchorEl } = this.state;\r\n const open = Boolean(anchorEl);\r\n \r\n if (this.props.user) {\r\n return (\r\n

\r\n \r\n \r\n this.setState({ mobileDrawerOpen: !this.state.mobileDrawerOpen })}\r\n className={classes.navIconHide}\r\n >\r\n \r\n \r\n \r\n \r\n SC Account\r\n \r\n \r\n \r\n {!this.props.user.inAdminImpersonationMode ?\r\n \r\n SermonCentral Account\r\n \r\n :\r\n \r\n SermonCentral Account\r\n \r\n Impersonating User #{this.props.user.id} ({this.props.user.firstName} {this.props.user.lastName} - {this.props.user.email})\r\n \r\n \r\n }\r\n\r\n \r\n
\r\n {this.props.user.profileImageUrl ?\r\n this.setState({ anchorEl: e.currentTarget })} className={classes.avatar} src={this.props.user.profileImageUrl} /> :\r\n this.setState({ anchorEl: e.currentTarget })} className={classes.avatar}>{this.props.user.firstName.charAt(0)}{this.props.user.lastName.charAt(0)}\r\n }\r\n this.setState({ anchorEl: null })}\r\n >\r\n this.handleSignOutClick()}>Sign Out\r\n \r\n
\r\n
\r\n
\r\n \r\n this.setState({ mobileDrawerOpen: !this.state.mobileDrawerOpen })}\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n ModalProps={{\r\n keepMounted: true, // Better open performance on mobile.\r\n }}\r\n >\r\n {this.props.user.roles.filter((r) => r === 'MediaProducer').length > 0 ?\r\n this.renderMediaProducerNav() :\r\n this.renderNav()\r\n }\r\n \r\n \r\n \r\n \r\n
\r\n {this.props.user.roles.filter((r) => r === 'MediaProducer').length > 0 ?\r\n this.renderMediaProducerNav() :\r\n this.renderNav()\r\n }\r\n \r\n \r\n\r\n
\r\n
\r\n {this.props.children}\r\n
\r\n\r\n
\r\n );\r\n }\r\n else {\r\n return this.props.children;\r\n }\r\n }\r\n}\r\n\r\nexport default withRouter(withRoot(withStyles(styles)(Layout)));","import AppConfig from \"../entities/AppConfig\";\r\nimport ApplicationUser from \"../entities/ApplicationUser\";\r\nimport BillingStatement from \"../entities/BillingStatement\";\r\nimport Country from \"../entities/Country\";\r\nimport CreditCard from \"../entities/CreditCard\";\r\nimport SparkSubscription, { SparkSubscriptionStatus } from \"../entities/SparkSubscription\";\r\nimport { ServerResponse, WebClient } from \"../services/ServiceHelper\";\r\n\r\nexport interface MediaStatistics {\r\n totalDownloadCount: number;\r\n totalPurchaseCount: number;\r\n}\r\nexport interface PremiumSermonSeriesKitAccess {\r\n lastActivatedName: string;\r\n lastActivatedDate: string;\r\n lastActivatedUrl: string;\r\n nextActivationDate: string;\r\n activationCount: number;\r\n canActivate: boolean;\r\n}\r\n\r\nexport interface PlusMediaAccess {\r\n periodStart: string;\r\n periodEnd: string;\r\n actualBackgroundImageDownloads: number;\r\n allowedBackgroundImageDownloads?: number;\r\n actualCountdownVideoDownloads: number;\r\n allowedCountdownVideoDownloads?: number;\r\n actualMotionBackgroundDownloads: number;\r\n allowedMotionBackgroundDownloads?: number;\r\n actualPreachingSlidesDownloads: number;\r\n allowedPreachingSlidesDownloads?: number;\r\n actualWorshipLyricSlideDownloads: number;\r\n allowedWorshipLyricSlideDownloads?: number;\r\n actualVideoIllustrationDownloads: number;\r\n allowedVideoIllustrationDownloads?: number;\r\n actualWorshipMusicVideoDownloads: number;\r\n allowedWorshipMusicVideoDownloads?: number;\r\n actualSocialGraphicDownloads: number;\r\n allowedSocialGraphicDownloads?: number;\r\n actualComedyVideoDownloads: number;\r\n allowedComedyVideoDownloads?: number;\r\n actualInspirationalVideoDownloads: number;\r\n allowedInspirationalVideoDownloads?: number;\r\n actualSmallGroupStudyVideoDownloads: number;\r\n allowedSmallGroupStudyVideoDownloads?: number;\r\n}\r\n\r\nexport interface SermonStatistics {\r\n approvedCount: number;\r\n pendingCount: number;\r\n totalViewCount: number;\r\n}\r\n\r\nexport interface SermonIllustrationStatistics {\r\n approvedCount: number;\r\n pendingCount: number;\r\n totalViewCount: number;\r\n}\r\n\r\nexport class AccountService {\r\n public static async changeEmail(newEmail: string, appConfig: AppConfig) {\r\n let changeEmailResponse = await WebClient.Post(\r\n \"api/Account/ChangeEmail\",\r\n { newEmail: newEmail }\r\n );\r\n if (ServerResponse.isServerResponse(changeEmailResponse)) {\r\n await WebClient.Put(\r\n appConfig.makerSiteUrl + \"/api/Account/UpdateSermonMakerUser\",\r\n {}\r\n );\r\n }\r\n return changeEmailResponse;\r\n }\r\n\r\n public static changePassword(\r\n currentPassword: string,\r\n newPassword: string,\r\n confirmNewPassword: string\r\n ) {\r\n return WebClient.Post(\"api/Account/ChangePassword\", {\r\n currentPassword: currentPassword,\r\n newPassword: newPassword,\r\n confirmNewPassword: confirmNewPassword,\r\n });\r\n }\r\n\r\n \r\n public static changePhone(newPhone: string) {\r\n return WebClient.Post(\"api/Account/ChangePhone\", { newPhone });\r\n }\r\n\r\n public static async getMediaStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetMediaStatistics\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPremiumSermonSeriesKitAccess() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetPremiumSermonSeriesKitAccess\"\r\n );\r\n if (\r\n ServerResponse.isServerResponse(response)\r\n ) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPlusMediaAccess() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetPlusMediaAccess\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetSermonStatistics\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationStatistics() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetSermonIllustrationStatistics\"\r\n );\r\n if (\r\n ServerResponse.isServerResponse(response)\r\n ) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getHasSermonMakerSubscription(appConfig: AppConfig) {\r\n var response = await WebClient.Get<{ makerSubscription?: any }>(\r\n appConfig.makerSiteUrl + \"/api/Subscription\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data != null;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n public static async getHasSermonSparkSubscription(sparkSiteUrl: string): Promise {\r\n var response = await WebClient.Get(\r\n sparkSiteUrl + \"/api/Account/Subscription\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data == null\r\n ? false\r\n : response.data.status === SparkSubscriptionStatus.Active;\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n public static async getBillingStatements() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetBillingStatements\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async hasPayPal() {\r\n var response = await WebClient.Get(\"api/Account/HasPayPal\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n static async getCountries() {\r\n var response = await WebClient.Get(\"api/Account/GetCountries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCreditCards() {\r\n var response = await WebClient.Get(\r\n \"api/Account/GetCreditCards\"\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async changeDefaultCreditCard(cardId: string) {\r\n let response = await WebClient.Post(\r\n \"api/Account/SetDefaultCreditCard\",\r\n { CreditCardId: cardId }\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async deleteCreditCard(cardId: string) {\r\n let response = await WebClient.Delete(\r\n \"api/Account/DeleteCreditCard\",\r\n { CreditCardId: cardId }\r\n );\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async addPaymentMethod(\r\n appConfig: AppConfig,\r\n cardName: string,\r\n cardNumber: string,\r\n expiryMonth: string,\r\n expiryYear: string,\r\n cvv: string,\r\n zip: string,\r\n country?: string\r\n ) {\r\n let model = {\r\n CardHolderName: cardName,\r\n CardNumber: cardNumber.replace(/[^0-9]/gi, \"\"),\r\n SecurityCode: cvv,\r\n ExpirationMonth: expiryMonth,\r\n ExpirationYear: expiryYear,\r\n PostalCode: zip,\r\n Country: country,\r\n };\r\n\r\n let response = await WebClient.Post(\r\n appConfig.paymentsSiteUrl + \"/api/CreditCards/AddCreditCard\",\r\n model\r\n );\r\n\r\n return response;\r\n }\r\n\r\n public static async updatePaymentMethod(\r\n appConfig: AppConfig,\r\n paymentMethodId: string,\r\n expiryMonth: string,\r\n expiryYear: string,\r\n cvv: string,\r\n zip: string,\r\n country?: string\r\n ) {\r\n let model = {\r\n PaymentMethodId: paymentMethodId,\r\n SecurityCode: cvv,\r\n ExpirationMonth: expiryMonth,\r\n ExpirationYear: expiryYear,\r\n PostalCode: zip,\r\n Country: country,\r\n };\r\n\r\n let response = await WebClient.Post(\r\n appConfig.paymentsSiteUrl + \"/api/CreditCards/UpdateCreditCard\",\r\n model\r\n );\r\n return response;\r\n }\r\n}\r\n","export enum ProSubscriptionTier {\r\n None = 0,\r\n Basic = 1,\r\n Plus = 2,\r\n Premium = 3\r\n}\r\n\r\nexport enum ProSubscriptionTerm {\r\n None = 0,\r\n Monthly = 1,\r\n Annual = 12,\r\n Biennial = 24\r\n}\r\n\r\nexport enum ProSubscriptionStatus {\r\n None,\r\n Draft,\r\n PendingActivation,\r\n PendingAcceptance,\r\n Active,\r\n Cancelled,\r\n Expired,\r\n Suspended\r\n}\r\nexport enum ProSubscriptionSourceType\r\n{\r\n Zuora = 1,\r\n Gloo = 2,\r\n Employee = 3\r\n}\r\nexport default interface ProSubscription {\r\n cancelledDate?: string;\r\n inTrial: boolean;\r\n nextBillDate?: string;\r\n nextBillPrice?: number;\r\n planName: string;\r\n planPrice?: number;\r\n serviceStopDate?: string;\r\n source: ProSubscriptionSourceType;\r\n status: ProSubscriptionStatus;\r\n subscriptionStartDate?: string;\r\n term: ProSubscriptionTerm;\r\n tier: ProSubscriptionTier;\r\n}","import { Currencies } from '../entities/Currencies';\r\nexport class CurrencyHelper {\r\n public static GetCurrencySymbol = (currency: Currencies) => {\r\n switch (currency) {\r\n case \"PHP\":\r\n return '₱';\r\n case \"ZAR\":\r\n return 'R';\r\n case \"NGN\":\r\n return '₦';\r\n case \"KES\":\r\n return 'KSh';\r\n case \"GHS\":\r\n return 'GH₵';\r\n default:\r\n return '$';\r\n }\r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport BillingStatement from '../../entities/BillingStatement';\r\nimport { AccountService } from '../../services/AccountService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { CurrencyHelper } from '../../utilities/CurrencyHelper';\r\nimport {ProSubscriptionSourceType} from \"../../entities/ProSubscription\";\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 250,\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: '100%'\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n },\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loading: boolean;\r\n billingStatements: BillingStatement[];\r\n visibleBillingStatementCount: number;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass BillingStatements extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n billingStatements: [],\r\n visibleBillingStatementCount: 10,\r\n sortOrder: 'Descending',\r\n orderBy: 'InvoiceDate',\r\n anchorSort: undefined,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Billing Statements\";\r\n\r\n try {\r\n const billingStatements = await AccountService.getBillingStatements();\r\n\r\n if (billingStatements) {\r\n this.setState({ billingStatements, loading: false }, this.updateBillingStatements);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateBillingStatements);\r\n }\r\n\r\n updateBillingStatements() {\r\n\r\n let billingStatements = this.state.billingStatements;\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase() === 'invoicedate' ? 'invoiceDate' : this.state.orderBy.toLowerCase();\r\n\r\n billingStatements.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ billingStatements });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleBillingStatements = this.state.billingStatements.slice(0, this.state.visibleBillingStatementCount);\r\n var currency = this.props.user.currency\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Billing Statements\r\n \r\n {!this.state.loading && this.state.billingStatements.length > 0 &&\r\n \r\n {this.state.billingStatements.length} billing statement{this.state.billingStatements.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('InvoiceDate')}>\r\n \r\n {this.state.orderBy === 'InvoiceDate' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Balance')}>\r\n \r\n {this.state.orderBy === 'Balance' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.billingStatements.length === 0 &&\r\n \r\n \r\n
\r\n You have no billing statements.\r\n
\r\n }\r\n\r\n { (this.props.user.isGlooLogin || this.props.user.proSubscription?.source == ProSubscriptionSourceType.Gloo) &&\r\n \r\n
\r\n Visit Gloo for more billing statements.\r\n
\r\n }\r\n \r\n {!this.state.loading && visibleBillingStatements.length > 0 &&\r\n this.setState({ visibleBillingStatementCount: this.state.visibleBillingStatementCount + 10 })}\r\n hasMore={visibleBillingStatements.length < this.state.billingStatements.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleBillingStatements.map(billingStatement =>\r\n \r\n \r\n \r\n {new Date(billingStatement.invoiceDate).toLocaleDateString()}\r\n \r\n {billingStatement.invoiceNumber}\r\n {billingStatement.invoiceAmount !== 0 &&\r\n Amount Invoiced: {CurrencyHelper.GetCurrencySymbol(currency)}{billingStatement.invoiceAmount.toLocaleString(undefined, { minimumFractionDigits: 2 })}\r\n }\r\n {billingStatement.paymentAmount !== 0 &&\r\n Amount Paid: {CurrencyHelper.GetCurrencySymbol(currency)}{billingStatement.paymentAmount.toLocaleString(undefined, { minimumFractionDigits: 2 })}\r\n }\r\n {billingStatement.refundAmount !== 0 &&\r\n Amount Refunded: {CurrencyHelper.GetCurrencySymbol(currency)}{billingStatement.refundAmount.toLocaleString(undefined, { minimumFractionDigits: 2 })}\r\n }\r\n Balance: {CurrencyHelper.GetCurrencySymbol(currency)}{billingStatement.balance.toLocaleString(undefined, { minimumFractionDigits: 2 })}\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(BillingStatements));","import Button from '@material-ui/core/Button';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { AccountService } from '../../services/AccountService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n config: AppConfig;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean,\r\n currentEmail: string;\r\n newEmail: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangeEmail extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentEmail: props.user.email,\r\n newEmail: '',\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: ''\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Email\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.newEmail) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changeEmail(this.state.newEmail, this.props.config);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], newEmail: '', currentEmail: response.data.email, enableSubmit: true, showSuccessMessage: true, successMessage: response.message });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n \r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n console.log(response.errors);\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Change Email\r\n \r\n \r\n
this.handleFormSubmit(e)} className={classes.form}>\r\n\r\n \r\n Current Email\r\n \r\n \r\n {this.state.currentEmail}\r\n \r\n\r\n this.setState({ newEmail: e.target.value })}\r\n value={this.state.newEmail}\r\n helperText={}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangeEmail));","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\n\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\nimport { AccountService } from '../../services/AccountService';\r\n\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean,\r\n currentPassword: string;\r\n newPassword: string;\r\n confirmNewPassword: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangePassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentPassword: '',\r\n newPassword: '',\r\n confirmNewPassword: '',\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: '',\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if ((this.state.currentPassword || this.props.user.inAdminImpersonationMode) && this.state.newPassword && this.state.confirmNewPassword) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changePassword(this.state.currentPassword, this.state.newPassword, this.state.confirmNewPassword);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ errors: [], currentPassword: '', newPassword: '', confirmNewPassword: '', enableSubmit: true, showSuccessMessage: true, successMessage: response.message });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n if (this.props.user.isGlooLogin){\r\n return (\r\n \r\n Visit Gloo to change your password.\r\n \r\n )\r\n }\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Change Password\r\n \r\n \r\n\r\n
this.handleFormSubmit(e)}>\r\n\r\n {!this.props.user.inAdminImpersonationMode &&\r\n this.setState({ currentPassword: e.target.value })}\r\n value={this.state.currentPassword}\r\n helperText={}\r\n />\r\n }\r\n this.setState({ newPassword: e.target.value })}\r\n value={this.state.newPassword}\r\n helperText={}\r\n />\r\n this.setState({ confirmNewPassword: e.target.value })}\r\n value={this.state.confirmNewPassword}\r\n helperText={}\r\n />\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangePassword));","import Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport green from \"@material-ui/core/colors/green\";\r\nimport { Theme } from \"@material-ui/core/styles/createMuiTheme\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport withStyles, { WithStyles } from \"@material-ui/core/styles/withStyles\";\r\nimport SuccessIcon from \"@material-ui/icons/CheckCircle\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport * as React from \"react\";\r\nimport ApplicationUser from \"../../entities/ApplicationUser\";\r\nimport { AccountService } from \"../../services/AccountService\";\r\nimport {\r\n FieldValidationError,\r\n ServerModelValidationResponse,\r\n ServerResponse,\r\n} from \"../../services/ServiceHelper\";\r\nimport withRoot from \"../../withRoot\";\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 450,\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: \"auto\",\r\n minWidth: \"150px\",\r\n display: \"block\",\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: \"nowrap\",\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n root: {\r\n alignItems: \"normal\",\r\n },\r\n paper: {\r\n width: \"100%\",\r\n },\r\n },\r\n snackBarText: {\r\n overflow: \"hidden\",\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n currentPhone: string;\r\n newPhone: string;\r\n errors: FieldValidationError[];\r\n showSuccessMessage: boolean;\r\n successMessage: string;\r\n};\r\n\r\nclass ChangePhone extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n currentPhone: props.user.phoneNumber ?? \"\",\r\n newPhone: \"\",\r\n errors: [],\r\n showSuccessMessage: false,\r\n successMessage: \"\",\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Change Phone\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.newPhone) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AccountService.changePhone(this.state.newPhone);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({\r\n errors: [],\r\n newPhone: \"\",\r\n currentPhone: response.data.phoneNumber ?? \"\",\r\n enableSubmit: true,\r\n showSuccessMessage: true,\r\n successMessage: response.message,\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.successMessage}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Change Phone\r\n \r\n this.handleFormSubmit(e)}\r\n className={classes.form}\r\n >\r\n Current Phone\r\n {this.state.currentPhone}\r\n\r\n this.setState({ newPhone: e.target.value })}\r\n value={this.state.newPhone}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n Change Phone\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ChangePhone));\r\n","import {\r\n Button,\r\n Card,\r\n CardContent,\r\n List,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { AccountService } from \"../../../services/AccountService\";\r\n\r\ninterface Props {\r\n classes: any;\r\n sparkSiteUrl: string;\r\n}\r\n\r\nexport function SparkAccountCard(props: Props) {\r\n const { classes, sparkSiteUrl } = props;\r\n const [hasSubscription, setHasSubscription] = useState(false);\r\n\r\n useEffect(() => {\r\n async function getHasSparkSubscription() {\r\n setHasSubscription(await AccountService.getHasSermonSparkSubscription(props.sparkSiteUrl));\r\n }\r\n\r\n getHasSparkSubscription();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n Sermon Research\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemSecondaryAction from '@material-ui/core/ListItemSecondaryAction';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport green from '@material-ui/core/colors/green';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport {\r\n ProSubscriptionSourceType,\r\n ProSubscriptionStatus,\r\n ProSubscriptionTerm,\r\n ProSubscriptionTier\r\n} from '../../entities/ProSubscription';\r\nimport { AccountService, MediaStatistics, PlusMediaAccess, PremiumSermonSeriesKitAccess, SermonIllustrationStatistics, SermonStatistics } from '../../services/AccountService';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport { CurrencyHelper } from '../../utilities/CurrencyHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { SparkAccountCard } from './components/SparkAccountCard';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n backgroundColor: theme.palette.primary.light,\r\n width: 100,\r\n height: 100,\r\n fontSize: '40px',\r\n marginBottom: theme.spacing(),\r\n },\r\n welcome: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(),\r\n },\r\n title: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing() * 2,\r\n },\r\n card: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 550\r\n },\r\n cardShort: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 350\r\n },\r\n dangerButton: {\r\n color: theme.palette.error.dark\r\n },\r\n secondaryAction: {\r\n\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n card: {\r\n minWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n }\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n secondaryAction: {\r\n position: 'static',\r\n transform: 'none',\r\n right: 'inherit',\r\n top: 'inherit',\r\n paddingLeft: theme.spacing() * 2\r\n }\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n secondaryAction: {\r\n paddingLeft: theme.spacing()\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n showSendResetPasswordEmailDialog: boolean;\r\n showResetPasswordEmailSentMessage: boolean;\r\n showCloseAccountDialog: boolean;\r\n user: ApplicationUser;\r\n mediaStatistics?: MediaStatistics;\r\n premiumSskAccess?: PremiumSermonSeriesKitAccess;\r\n plusMediaAccess?: PlusMediaAccess;\r\n sermonStatistics?: SermonStatistics;\r\n hasMakerSubscription?: boolean;\r\n sermonIllustrationStatistics?: SermonIllustrationStatistics;\r\n errors: FieldValidationError[];\r\n hasPaypal: boolean;\r\n};\r\n\r\nclass Home extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n showSendResetPasswordEmailDialog: false,\r\n showResetPasswordEmailSentMessage: false,\r\n showCloseAccountDialog: false,\r\n user: props.user,\r\n errors: [],\r\n hasPaypal: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Account Dashboard\";\r\n\r\n\r\n const hasPayPal = await AccountService.hasPayPal();\r\n this.setState({ hasPaypal: hasPayPal || false });\r\n\r\n const mediaStatistics = await AccountService.getMediaStatistics();\r\n if (mediaStatistics) {\r\n this.setState({ mediaStatistics });\r\n }\r\n\r\n AccountService.getHasSermonMakerSubscription(this.props.config)\r\n .then(hasMakerSubscription => this.setState({ hasMakerSubscription }));\r\n\r\n if (this.state.user.proSubscription) {\r\n\r\n if (this.state.user.proSubscription.tier > ProSubscriptionTier.Plus) {\r\n const premiumSskAccess = await AccountService.getPremiumSermonSeriesKitAccess();\r\n if (premiumSskAccess) {\r\n this.setState({ premiumSskAccess });\r\n }\r\n }\r\n\r\n if (this.state.user.proSubscription.tier > ProSubscriptionTier.Basic) {\r\n const plusMediaAccess = await AccountService.getPlusMediaAccess();\r\n if (plusMediaAccess) {\r\n this.setState({ plusMediaAccess });\r\n }\r\n }\r\n }\r\n\r\n if (this.state.user.roles.filter((v) => v === 'Contributor').length > 0) {\r\n\r\n const sermonStatistics = await AccountService.getSermonStatistics();\r\n if (sermonStatistics) {\r\n this.setState({ sermonStatistics });\r\n }\r\n\r\n const sermonIllustrationStatistics = await AccountService.getSermonIllustrationStatistics();\r\n if (sermonIllustrationStatistics) {\r\n this.setState({ sermonIllustrationStatistics });\r\n }\r\n }\r\n }\r\n\r\n canChangeProSubscription(user: ApplicationUser) {\r\n\r\n return user.proSubscription && user.proSubscription.nextBillDate && user.proSubscription.status !== ProSubscriptionStatus.Cancelled;\r\n }\r\n\r\n canUpgradeProSubscription(user: ApplicationUser) {\r\n\r\n return this.canChangeProSubscription(user) && user.proSubscription!.tier < ProSubscriptionTier.Premium;\r\n }\r\n\r\n getPlanName(user: ApplicationUser) {\r\n if (user.proSubscription != null) {\r\n if (user.proSubscription.planName.match(/employee/i)) {\r\n return \"Site Administrator\";\r\n }\r\n if (user.proSubscription.planName.match(/basic/i)) {\r\n return \"PRO Basic\";\r\n }\r\n if (user.proSubscription.planName.match(/premium/i)) {\r\n if (user.proSubscription.source == ProSubscriptionSourceType.Gloo){\r\n return \"Gloo PRO Premium\";\r\n }\r\n return \"PRO Premium\";\r\n }\r\n if (user.proSubscription.planName.match(/free pro/i)) {\r\n return \"Free Contributor PRO\";\r\n }\r\n\r\n return \"PRO Plus\";\r\n }\r\n\r\n return \"Free Account\";\r\n }\r\n\r\n getNextActivationDate(dateString: string) {\r\n\r\n const date = new Date(dateString);\r\n const current = new Date();\r\n\r\n if (current.getTime() > date.getTime()) {\r\n return 'Activate Today!';\r\n }\r\n else {\r\n return date.toLocaleDateString();\r\n }\r\n }\r\n\r\n async makeAdmin(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.makeAdmin(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], user: response.data, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async unmakeAdmin(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.unmakeAdmin(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.setState({ errors: [], user: response.data, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async sendResetPasswordEmail(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.sendResetPasswordEmail(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ errors: [], showSendResetPasswordEmailDialog: false, showResetPasswordEmailSentMessage: true, enableSubmit: true });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n async closeAccount(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.closeAccount(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n (window as any).location = '/admin/impersonate';\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], showSendResetPasswordEmailDialog: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n renderMyAccount() {\r\n var classes = this.props.classes;\r\n var user = this.state.user;\r\n var proSubscription = this.state.user.proSubscription;\r\n return (\r\n \r\n \r\n \r\n My Account\r\n \r\n \r\n \r\n \r\n {!this.props.user.proSubscription &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.canUpgradeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n {!this.state.user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n }\r\n {this.state.user.inAdminImpersonationMode &&\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {user.isGlooLogin &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n {user.inAdminImpersonationMode &&\r\n this.setState({ showCloseAccountDialog: !this.state.showCloseAccountDialog })}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n Close Account?\r\n \r\n \r\n Closing a user's account only affects the user's ability to log into their account - this does not delete their contributions, and it does not close their Zuora account.\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n {user.inAdminImpersonationMode &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(!user.proSubscription || !user.proSubscription.planName.match(/employee/i)) &&\r\n \r\n }\r\n {(user.proSubscription && user.proSubscription.planName.match(/employee/i)) &&\r\n \r\n }\r\n \r\n this.setState({ showSendResetPasswordEmailDialog: !this.state.showSendResetPasswordEmailDialog })}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n Send Reset Password Email?\r\n \r\n \r\n The user will receive an email with a link to reset their own password, so that you don't have to set one for them.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n }\r\n\r\n renderMyPRO() {\r\n var classes = this.props.classes;\r\n var user = this.state.user;\r\n var proSubscription = this.state.user.proSubscription;\r\n var currency = user.currency;\r\n\r\n if (!proSubscription) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n My PRO\r\n \r\n \r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n {this.state.hasPaypal ?\r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {proSubscription.serviceStopDate && proSubscription.status === ProSubscriptionStatus.Cancelled &&\r\n Benefits end {new Date(proSubscription.serviceStopDate).toLocaleDateString()}\r\n }\r\n \r\n {proSubscription.status === ProSubscriptionStatus.Active &&\r\n \r\n \r\n {ProSubscriptionTerm[proSubscription.term].toString()}\r\n {proSubscription.nextBillPrice && proSubscription.planPrice ?\r\n {proSubscription.nextBillPrice < proSubscription.planPrice ?\r\n ({CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.nextBillPrice.toString(10)}{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"} | {CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.planPrice.toString(10)}{proSubscription.term === 1 ? \" / mth\" : proSubscription.term === 12 ? \" / yr\" : \" / 2 years\"})\r\n : ({CurrencyHelper.GetCurrencySymbol(currency)}{proSubscription.planPrice.toString(10)}{proSubscription.term === 1 ? \" / month\" : proSubscription.term === 12 ? \" / year\" : \"/ 2 years\"})}\r\n : ''\r\n }\r\n {this.getPlanName(user) === 'Free Contributor PRO' ? ' (Free Contributor PRO)' : ''}\r\n {this.getPlanName(user) === 'Site Administrator' ? ' (Site Administrator PRO)' : ''}\r\n \r\n }\r\n secondary=\"Payment option\"\r\n />\r\n {this.canUpgradeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {proSubscription.nextBillDate && proSubscription.status === ProSubscriptionStatus.Active &&\r\n \r\n \r\n {this.canChangeProSubscription(user) &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSermonMakerStatus() {\r\n const classes = this.props.classes;\r\n const hasMakerSubscription = this.state.hasMakerSubscription;\r\n const showUpgradeButton = hasMakerSubscription != null && !hasMakerSubscription;\r\n\r\n return (\r\n \r\n \r\n \"Sermon\r\n \r\n \r\n \r\n {\r\n showUpgradeButton\r\n ?\r\n \r\n \r\n \r\n \r\n \r\n :\r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMyMedia() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n My Media\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMyContributions() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.state.user.roles.some(r => r === 'Contributor')) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n My Contributions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderPremiumSermonSeriesKitAccess() {\r\n\r\n var classes = this.props.classes;\r\n var proSubscription = this.state.user.proSubscription;\r\n\r\n if (!proSubscription || proSubscription.tier <= ProSubscriptionTier.Plus) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Premium Sermon Series Kit Access\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderPROMediaDownloads() {\r\n\r\n var classes = this.props.classes;\r\n var proSubscription = this.state.user.proSubscription;\r\n\r\n if (!proSubscription || proSubscription.tier <= ProSubscriptionTier.Basic) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n PRO Media Downloads\r\n \r\n {this.state.plusMediaAccess && this.state.plusMediaAccess.periodStart && this.state.plusMediaAccess.periodEnd &&\r\n \r\n Between {new Date(this.state.plusMediaAccess.periodStart).toLocaleDateString()} and {new Date(this.state.plusMediaAccess.periodEnd).toLocaleDateString()}\r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showResetPasswordEmailSentMessage: false })}\r\n >\r\n \r\n \r\n Reset password email sent\r\n }\r\n />\r\n \r\n\r\n {this.props.user.profileImageUrl ?\r\n :\r\n {this.props.user.firstName.charAt(0)}{this.props.user.lastName.charAt(0)}\r\n }\r\n\r\n \r\n Welcome back, {this.props.user.firstName}!\r\n \r\n\r\n \r\n Control your account, access your PRO benefits, and manage your contributions\r\n \r\n\r\n \r\n \r\n \r\n {this.renderMyAccount()}\r\n \r\n {this.props.user.proSubscription &&\r\n \r\n {this.renderMyPRO()}\r\n \r\n }\r\n \r\n {this.renderMyMedia()}\r\n \r\n \r\n {this.renderSermonMakerStatus()}\r\n \r\n \r\n \r\n \r\n {this.renderMyContributions() &&\r\n \r\n {this.renderMyContributions()}\r\n \r\n }\r\n {this.renderPremiumSermonSeriesKitAccess() &&\r\n \r\n {this.renderPremiumSermonSeriesKitAccess()}\r\n \r\n }\r\n {this.renderPROMediaDownloads() &&\r\n \r\n {this.renderPROMediaDownloads()}\r\n \r\n }\r\n \r\n \r\n\r\n \r\n \r\n \r\n {this.renderMyAccount()}\r\n \r\n {this.props.user.proSubscription &&\r\n \r\n {this.renderMyPRO()}\r\n \r\n }\r\n \r\n {this.renderMyMedia()}\r\n \r\n \r\n {this.renderSermonMakerStatus()}\r\n \r\n \r\n \r\n \r\n {this.renderMyContributions() &&\r\n \r\n {this.renderMyContributions()}\r\n \r\n }\r\n {this.renderPremiumSermonSeriesKitAccess() &&\r\n \r\n {this.renderPremiumSermonSeriesKitAccess()}\r\n \r\n }\r\n {this.renderPROMediaDownloads() &&\r\n \r\n {this.renderPROMediaDownloads()}\r\n \r\n }\r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Home));\r\n","import Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Container from '@material-ui/core/Container';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport axios from 'axios';\r\nimport * as d3 from 'd3';\r\nimport * as React from 'react';\r\nimport * as topojson from \"topojson-client\";\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { FieldValidationError, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport USState from '../../entities/USState';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { MediaProducerService } from '../../services/MediaProducerService';\r\nimport DownloadAndViewCountByRegion from '../../entities/DownloadAndViewCountByRegion';\r\nimport Button from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport AnimatedNumberLabel from '../../components/AnimatedNumberLabel';\r\nimport { BarChart, CartesianGrid, XAxis, YAxis, Tooltip, Legend, Bar, ResponsiveContainer, Label, Line, ReferenceLine, ComposedChart, Brush, PieChart, Pie, Cell, RechartsFunction } from 'recharts';\r\nimport { MiscService } from '../../services/MiscService';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n backgroundColor: theme.palette.primary.light,\r\n width: 100,\r\n height: 100,\r\n fontSize: '40px',\r\n marginBottom: theme.spacing(),\r\n },\r\n welcome: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing(),\r\n },\r\n title: {\r\n textAlign: 'center',\r\n marginBottom: theme.spacing() * 2,\r\n },\r\n card: {\r\n padding: theme.spacing(),\r\n width: 450,\r\n height: 550\r\n },\r\n dangerButton: {\r\n color: theme.palette.error.dark\r\n },\r\n secondaryAction: {\r\n\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n card: {\r\n minWidth: '100%',\r\n width: 'auto',\r\n height: 'auto',\r\n }\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n secondaryAction: {\r\n position: 'static',\r\n transform: 'none',\r\n right: 'inherit',\r\n top: 'inherit',\r\n paddingLeft: theme.spacing() * 2\r\n }\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n secondaryAction: {\r\n paddingLeft: theme.spacing()\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n mapCard: {\r\n maxHeight: '75vh',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n maxHeight: '70vh',\r\n }\r\n },\r\n mapContainer: {\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingBottom: '100%',\r\n verticalAlign: 'top',\r\n overflow: 'hidden',\r\n height: \"100%\",\r\n width: '100%',\r\n marginTop: 0\r\n },\r\n stateMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"black\",\r\n strokeWidth: \".5px\",\r\n transition: 'all 0.2s ease',\r\n \"&:hover\": {\r\n fillOpacity: .7,\r\n transition: 'all 0.2s ease',\r\n }\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n \"& title\": {\r\n fontSize: 15,\r\n borderRadius: 5\r\n }\r\n },\r\n filterButtons: {\r\n padding: 10,\r\n justifyContent: 'space-between',\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n filterButton: {\r\n marginLeft: 10\r\n },\r\n totalBox: {\r\n minHeight: 72\r\n },\r\n barChart: {\r\n marginTop: 30\r\n },\r\n producerPayoutCard: {\r\n marginBottom: 30\r\n },\r\n pieLabels: {\r\n fontSize: 20,\r\n },\r\n noData: {\r\n paddingTop: '15%'\r\n }\r\n });\r\n\r\nenum Months {\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n}\r\n\r\nenum MapFilters {\r\n All = \"All\",\r\n Views = \"Views\",\r\n Downloads = \"Downloads\"\r\n}\r\n\r\nexport enum ChartYears {\r\n Y2019 = 2019,\r\n Y2020 = 2020,\r\n Y2021 = 2021\r\n}\r\n\r\ninterface Props extends WithStyles {\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loadingMap: boolean;\r\n errors: FieldValidationError[];\r\n usMapData: any;\r\n usStates: USState[] | undefined;\r\n mapDownloadAndViewData: DownloadAndViewCountByRegion[] | null;\r\n anchorYearMenu?: HTMLElement;\r\n anchorMonthMenu?: HTMLElement;\r\n anchorByData?: HTMLElement;\r\n filterByYear: number;\r\n filterByMonth: Months;\r\n filterByData: MapFilters;\r\n totalViews: number;\r\n totalDownloads: number;\r\n producerPayoutData: ProducerPayoutData[];\r\n chartViewing: ChartViewingTypes;\r\n anchorChartMenu?: HTMLElement;\r\n anchorChartYearMenu?: HTMLElement;\r\n anchorChartMonthMenu?: HTMLElement;\r\n filteredChartData: ProducerPayoutData[];\r\n filterChartYear: ChartYears,\r\n filterChartMonth: Months,\r\n monthData: MonthData[];\r\n totalChart: number;\r\n};\r\n\r\nexport interface ProducerPayoutData {\r\n revenueShare: number | null;\r\n salesFromMedia: number | null;\r\n salesFromSSK: number | null;\r\n total: number | null;\r\n month: string;\r\n year: ChartYears;\r\n}\r\n\r\ninterface MonthData {\r\n name: string;\r\n total: number | null;\r\n}\r\n\r\nenum ChartViewingTypes {\r\n Year = \"Year\",\r\n Month = \"Month\"\r\n}\r\n\r\nconst PieColors = ['#2196f3', '#61b9ff', '#7bc5ff'];\r\n\r\nconst today = new Date();\r\n\r\nconst years = [today.getFullYear(), today.getFullYear() - 1, today.getFullYear() - 2]\r\n\r\nclass MediaDashboard extends React.Component {\r\n\r\n private mapRef: SVGGElement | null = null;\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loadingMap: false,\r\n errors: [],\r\n usMapData: undefined,\r\n usStates: undefined,\r\n mapDownloadAndViewData: null,\r\n filterByYear: years[0],\r\n filterByMonth: Months[Months[(new Date().getMonth() + 1)]],\r\n filterByData: MapFilters.All,\r\n totalDownloads: 0,\r\n totalViews: 0,\r\n chartViewing: ChartViewingTypes.Year,\r\n filterChartYear: years[0],\r\n filterChartMonth: Months[Months[(new Date().getMonth() + 1)].toString()],\r\n producerPayoutData: [],\r\n filteredChartData: [],\r\n monthData: [],\r\n totalChart: 0\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Media Dashboard\";\r\n\r\n this.setState({ loadingMap: true });\r\n ContributionsService.getUSStates()\r\n .then((usStates) => {\r\n this.setState({ usStates: usStates || [] });\r\n });\r\n\r\n axios.get('/data/usStates-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n this.setState({ usMapData: response.data }, async () => await this.getMapData());\r\n });\r\n\r\n // Matt isn't ready to give this to producers, so hide for now 3/27\r\n // var response = await MiscService.getProducerPayoutByYear(+this.state.filterChartYear);\r\n\r\n // if (response != null) {\r\n // this.massageProducerPayoutDate(response);\r\n // }\r\n\r\n\r\n this.updateChartData();\r\n }\r\n\r\n massageProducerPayoutDate(data: ProducerPayoutData[]) {\r\n let allData: ProducerPayoutData[] = [];\r\n\r\n for (let m = 1; m < 13; m++) {\r\n let monthData = data.find(a => a.month === Months[Months[m]]);\r\n\r\n if (monthData) {\r\n allData.push({\r\n ...monthData,\r\n month: Months[monthData.month],\r\n })\r\n } else {\r\n allData.push({\r\n month: Months[m],\r\n year: this.state.filterChartYear,\r\n revenueShare: null,\r\n salesFromMedia: null,\r\n salesFromSSK: null,\r\n total: null,\r\n });\r\n\r\n }\r\n }\r\n this.setState({ producerPayoutData: allData })\r\n }\r\n\r\n getMapData = async () => {\r\n const { filterByYear, filterByMonth } = this.state;\r\n const mapDownloadAndViewData = await MediaProducerService.GetMediaProducersDownloadsAndViewsCount(filterByYear, filterByMonth);\r\n this.setState({ mapDownloadAndViewData }, () => this.updateUSMap());\r\n }\r\n\r\n updateUSMap() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (!this.state.usMapData || !this.state.mapDownloadAndViewData) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n\r\n let totalViews = 0;\r\n let totalDownloads = 0;\r\n\r\n\r\n this.state.usMapData.objects.states.geometries.forEach((geometry: any) => {\r\n\r\n let views: number = 0;\r\n let downloads: number = 0;\r\n const usState = this.state.usStates!.filter(c => c.postalAbbreviation === geometry.code)[0];\r\n if (!usState) {\r\n geometry.views = views;\r\n geometry.downloads = downloads;\r\n return;\r\n }\r\n\r\n const dataByRegion = this.state.mapDownloadAndViewData!.find(s => s.region === usState.postalAbbreviation);\r\n\r\n if (dataByRegion) {\r\n views = dataByRegion.viewCount;\r\n downloads = dataByRegion.downloadCount;\r\n }\r\n\r\n geometry.views = views;\r\n geometry.downloads = downloads;\r\n totalViews += views;\r\n totalDownloads += downloads;\r\n });\r\n\r\n this.setState({ totalViews, totalDownloads });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3.geoAlbersUsa();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"-100 0 1100 800\")\r\n .attr('class', classes.stateMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(topojson.feature(this.state.usMapData, this.state.usMapData.objects.states).features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n const colorNumber = +this.getPathDataBasedOnMapData(geometry)![0];\r\n return color(colorNumber);\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n const geometry = this.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n const text = this.getPathDataBasedOnMapData(geometry)![1]\r\n return text;\r\n })\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.usMapData, this.state.usMapData.objects.states, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n getPathDataBasedOnMapData = (geo: any) => {\r\n const { filterByData } = this.state;\r\n let colorNumber: Number = geo.downloads + geo.views;\r\n let tooltipText: string = `${geo.name}\\nViews: ${geo.views}\\nDownloads: ${geo.downloads}`;\r\n switch (filterByData) {\r\n case MapFilters.Views:\r\n colorNumber = geo.views;\r\n tooltipText = `${geo.name}\\nViews: ${geo.views}`;\r\n break;\r\n case MapFilters.Downloads:\r\n colorNumber = geo.downloads;\r\n tooltipText = `${geo.name}\\nDownloads: ${geo.downloads}`;\r\n break;\r\n default:\r\n break;\r\n }\r\n return [colorNumber.toString(), tooltipText];\r\n }\r\n\r\n async updateChartData() {\r\n const { chartViewing, filterChartYear, filterChartMonth } = this.state;\r\n\r\n\r\n var response = await MiscService.getProducerPayoutByYear(+this.state.filterChartYear);\r\n\r\n if (response != null) {\r\n this.massageProducerPayoutDate(response);\r\n }\r\n\r\n let filteredChartData = [...this.state.filteredChartData];\r\n let producerPayoutData = [...this.state.producerPayoutData];\r\n let monthData = [...this.state.monthData];\r\n let totalChart = 0;\r\n\r\n switch (chartViewing) {\r\n case ChartViewingTypes.Year:\r\n filteredChartData = producerPayoutData.filter(data => data.year === filterChartYear);\r\n break;\r\n case ChartViewingTypes.Month:\r\n filteredChartData = producerPayoutData.filter(data => data.year === filterChartYear && Months[data.month] === filterChartMonth);\r\n monthData = [{\r\n name: 'Media',\r\n total: filteredChartData[0].salesFromMedia\r\n },\r\n {\r\n name: 'Sermon Series Kit',\r\n total: filteredChartData[0].salesFromSSK\r\n },\r\n {\r\n name: 'Revenue Share',\r\n total: filteredChartData[0].revenueShare\r\n }];\r\n break;\r\n }\r\n\r\n filteredChartData.map(s => {\r\n if (s.total) {\r\n totalChart += s.total\r\n }\r\n });\r\n\r\n this.setState({ filteredChartData, monthData, totalChart });\r\n }\r\n\r\n onYearBarClick = (e: any) => {\r\n if (!e) {\r\n return;\r\n }\r\n var month = e.activeLabel;\r\n if (!e.activeLabel) {\r\n return;\r\n }\r\n\r\n let letMonthsString : string = Months[Months[month]];\r\n let typedMonthsString: keyof typeof Months = letMonthsString as keyof typeof Months;\r\n let typedAsMonths : Months = Months[typedMonthsString];\r\n\r\n this.setState({ chartViewing: ChartViewingTypes.Month, filterChartMonth: typedAsMonths, anchorChartMenu: undefined }, () => this.updateChartData())\r\n\r\n }\r\n\r\n renderProducerPayoutCard() {\r\n var classes = this.props.classes;\r\n var { filteredChartData, anchorChartMenu, chartViewing, anchorChartYearMenu, anchorChartMonthMenu, filterChartYear, filterChartMonth, monthData, totalChart } = this.state;\r\n\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n {chartViewing === ChartViewingTypes.Month && `${Months[filterChartMonth].toString()}, `}{filterChartYear} Producer Payout\r\n \r\n \r\n Total: $\r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorChartMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(ChartViewingTypes).map(viewing => {\r\n return (\r\n this.setState({ chartViewing: viewing as ChartViewingTypes, anchorChartMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n this.setState({ anchorChartYearMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(ChartYears).filter(x => typeof x === \"number\").map(year => {\r\n return (\r\n this.setState({ filterChartYear: year as ChartYears, anchorChartYearMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n {chartViewing === ChartViewingTypes.Month &&\r\n <>\r\n \r\n this.setState({ anchorChartMonthMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(Months).filter(x => typeof x === \"number\").map(month => {\r\n return (\r\n this.setState({ filterChartMonth: month as Months, anchorChartMonthMenu: undefined }, () => this.updateChartData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n {chartViewing === ChartViewingTypes.Year ?\r\n this.onYearBarClick(e)} barSize={60} barGap={30} className={classes.barChart} data={filteredChartData} margin={{ top: 20, right: 60, bottom: 20, left: 20 }}>\r\n \r\n \r\n `$${new Intl.NumberFormat('en').format(+value)}`} />\r\n `$${new Intl.NumberFormat('en').format(+value)}`} filterNull={true} />\r\n \r\n \r\n \r\n value > 0 ? `$${new Intl.NumberFormat('en').format(+value)}` : '', position: \"top\" }} />\r\n \r\n \r\n \r\n :\r\n monthData.every(month => month.total === null) ?\r\n
\r\n \r\n\r\n No Data for {Months[filterChartMonth].toString()}, {filterChartYear}.\r\n \r\n
\r\n :\r\n \r\n `${value.name}: $${new Intl.NumberFormat('en').format(+value.total)}`}\r\n outerRadius=\"80%\"\r\n innerRadius=\"50%\"\r\n dataKey=\"total\"\r\n >\r\n {\r\n monthData.map((entry, index) => )\r\n }\r\n \r\n \r\n `$${new Intl.NumberFormat('en').format(+value)}`} filterNull={true} />\r\n \r\n }\r\n\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderMapCard() {\r\n var classes = this.props.classes;\r\n var { anchorYearMenu, anchorMonthMenu, loadingMap, filterByMonth, filterByYear, anchorByData, filterByData, totalViews, totalDownloads } = this.state;\r\n\r\n return (\r\n \r\n
\r\n
\r\n \r\n {Months[filterByMonth]}, {filterByYear}\r\n \r\n {(filterByData === MapFilters.All || filterByData === MapFilters.Views) &&\r\n \r\n Total views: \r\n \r\n }\r\n {(filterByData === MapFilters.All || filterByData === MapFilters.Downloads) &&\r\n \r\n Total downloads: \r\n \r\n }\r\n
\r\n
\r\n \r\n this.setState({ anchorByData: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(MapFilters).map(filter => {\r\n return (\r\n this.setState({ filterByData: filter, anchorByData: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n this.setState({ anchorYearMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {years.map(year => {\r\n return (\r\n this.setState({ filterByYear: year, anchorYearMenu: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n\r\n \r\n this.setState({ anchorMonthMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n {Object.values(Months).filter(x => typeof x === \"number\").map(month => {\r\n return (\r\n this.setState({ filterByMonth: month as Months, anchorMonthMenu: undefined }, async () => await this.getMapData())}>\r\n \r\n \r\n );\r\n })}\r\n \r\n\r\n
\r\n
\r\n {\r\n loadingMap &&\r\n
\r\n
\r\n
\r\n \r\n Loading Map...\r\n \r\n
\r\n }\r\n
\r\n { this.mapRef = input; }} />\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n {/* {this.renderProducerPayoutCard()} */}\r\n {this.renderMapCard()}\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MediaDashboard));\r\n","import Country from \"../entities/Country\";\r\nimport Sermon from \"../entities/Sermon\";\r\nimport SermonIllustration from \"../entities/SermonIllustration\";\r\nimport SermonSeries from \"../entities/SermonSeries\";\r\nimport USState from \"../entities/USState\";\r\nimport { ServerResponse, WebClient } from \"./ServiceHelper\";\r\n\r\nexport interface SermonRegionViewSummary {\r\n countryCode: string;\r\n endDate: Date;\r\n regionName: string;\r\n sermonId: number;\r\n startDate: Date;\r\n viewCount: number;\r\n}\r\n\r\nexport interface SermonIllustrationRegionViewSummary {\r\n countryCode: string;\r\n endDate: Date;\r\n regionName: string;\r\n sermonIllustrationId: number;\r\n startDate: Date;\r\n viewCount: number;\r\n}\r\n\r\nexport class ContributionsService {\r\n\r\n public static async getChurchServiceLanguages() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetChurchServiceLanguages\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationCategories() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetSermonIllustrationCategories\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchServiceTargetAudiences() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Contributions/GetChurchServiceTargetAudiences\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonTypes() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Contributions/GetSermonTypes\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCountries() {\r\n const response = await WebClient.Get(\"api/Contributions/GetCountries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getUSStates() {\r\n const response = await WebClient.Get(\"api/Contributions/GetUSStates\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermons() {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermons\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermon(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermon/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonRegionViewSummaries(timeframe: string) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonRegionViewSummaries/\" + timeframe);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermon(sermonId: number, sermonSeriesId: number | undefined) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static saveSermon(id: number | undefined, sermonSeriesId: number | undefined, sermonSeriesName: string, title: string, description: string, body: string, language: string, targetAudience: string, sermonType: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermon\", { id, sermonSeriesId, sermonSeriesName, title, description, body, language, targetAudience, sermonType, topics, scriptureReferences });\r\n }\r\n\r\n public static async getSermonIllustrations() {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustrations\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustration(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustration/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonIllustrationRegionViewSummaries(timeframe: string) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonIllustrationRegionViewSummaries/\" + timeframe);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonIllustration(sermonIllustrationId: number) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermonIllustration\", { sermonIllustrationId });\r\n }\r\n\r\n public static saveSermonIllustration(id: number | undefined, title: string, body: string, language: string, category: string, targetAudience: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermonIllustration\", { id, title, body, language, category, targetAudience, topics, scriptureReferences });\r\n }\r\n\r\n public static async getAllSermonSeries() {\r\n\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeries\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getSermonSeries(id: number | undefined) {\r\n\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeries/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonSeries(sermonSeriesId: number) {\r\n return WebClient.Delete(\"api/Contributions/DeleteSermonSeries\", { sermonSeriesId });\r\n }\r\n\r\n public static saveSermonSeries(id: number | undefined, title: string, summary: string, topics: string[], scriptureReferences: string[]) {\r\n return WebClient.Post(\"api/Contributions/SaveSermonSeries\", { id, title, summary, topics, scriptureReferences });\r\n }\r\n\r\n public static async getSermonSeriesSermons(id: number) {\r\n const response = await WebClient.Get(\"api/Contributions/GetSermonSeriesSermons/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static addSermonSeriesSermon(sermonId: number, sermonSeriesId: number) {\r\n return WebClient.Post(\"api/Contributions/AddSermonSeriesSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static removeSermonSeriesSermon(sermonId: number, sermonSeriesId: number) {\r\n return WebClient.Delete(\"api/Contributions/RemoveSermonSeriesSermon\", { sermonId, sermonSeriesId });\r\n }\r\n\r\n public static updateSermonSeriesSermon(sermonId: number, sermonSeriesId: number, sortOrder: number) {\r\n return WebClient.Post(\"api/Contributions/UpdateSermonSeriesSermon\", { sermonId, sermonSeriesId, sortOrder });\r\n }\r\n}","import { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport DownloadAndViewCountByRegion from '../entities/DownloadAndViewCountByRegion';\r\n\r\nexport class MediaProducerService {\r\n public static async GetMediaProducersDownloadsAndViewsCount(year: number, month: number) {\r\n const response = await WebClient.Get(`api/MediaProducer/GetMediaProducersDownloadsAndViewsCount/${year}/${month}`);\r\n if (ServerResponse.isSuccess(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}","import * as React from 'react';\r\nimport withRoot from '../withRoot';\r\n\r\ninterface Props {\r\n value: number;\r\n minDecimalPlaces: number;\r\n maxDecimalPlaces: number;\r\n}\r\n\r\ntype State = {\r\n currentValue: number;\r\n value: number;\r\n};\r\n\r\nclass AnimatedNumberLabel extends React.Component {\r\n\r\n intervalId: number = 0;\r\n incrementCount: number = 0;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n currentValue: props.value,\r\n value: props.value\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps: Props, prevState: State) {\r\n\r\n if (this.props.value !== prevProps.value) {\r\n\r\n this.incrementCount = 0;\r\n if (this.intervalId) {\r\n clearInterval(this.intervalId);\r\n this.intervalId = 0;\r\n }\r\n\r\n this.setState({ value: this.props.value, currentValue: prevProps.value }, () => {\r\n\r\n const incrementBy = (this.state.value - this.state.currentValue) / 10;\r\n this.intervalId = setInterval(() => {\r\n if (this.incrementCount < 9) {\r\n this.setState({ currentValue: this.state.currentValue + incrementBy });\r\n this.incrementCount++;\r\n }\r\n else {\r\n this.setState({ currentValue: this.state.value });\r\n clearInterval(this.intervalId);\r\n }\r\n }, 50) as unknown as number;\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n <>\r\n {this.state.currentValue.toLocaleString(undefined, { minimumFractionDigits: this.props.minDecimalPlaces, maximumFractionDigits: this.props.maxDecimalPlaces })}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(AnimatedNumberLabel);","import DiscussionNotification from '../entities/DiscussionNotification';\r\nimport Favorite from '../entities/Favorite';\r\nimport PrivateMessage from '../entities/PrivateMessage';\r\nimport SermonFolder from '../entities/SermonFolder';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport { ProducerPayoutData } from '../pages/account/mediaDashboard';\r\n\r\nexport class MiscService {\r\n\r\n public static async getPrivateMessages() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetPrivateMessages\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getDiscussionNotifications() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetDiscussionNotifications\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static unsubscribeFromDiscussionNotification(id: number, type: string) {\r\n return WebClient.Delete(\"api/Misc/DeleteDiscussionNotification\", { id, type });\r\n }\r\n\r\n public static async getSermonFolders() {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetSermonFolders\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getFavorites(sermonFolderId: number) {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetFavorites/\" + sermonFolderId);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteSermonFolder(id: number) {\r\n return WebClient.Delete(\"api/Misc/DeleteSermonFolder\", { id });\r\n }\r\n\r\n public static async saveSermonFolder(id: number | undefined, name: string, notes: string) {\r\n\r\n return WebClient.Post(\"api/Misc/SaveSermonFolder\", { id, name, notes });\r\n }\r\n\r\n public static deleteFavorite(id: number) {\r\n return WebClient.Delete(\"api/Misc/DeleteFavorite\", { id });\r\n }\r\n\r\n public static async saveFavorite(id: number, sermonFolderId: number, sortOrder: number, notes: string) {\r\n\r\n return WebClient.Post(\"api/Misc/SaveFavorite\", { id, sermonFolderId, sortOrder, notes });\r\n }\r\n\r\n public static async getProducerPayoutByYear(year: number) {\r\n\r\n var response = await WebClient.Get(\"api/Misc/GetProducerPayout/\" + year);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n}","export enum FreeProSubscriptionAccessStatus {\r\n Active = 0,\r\n Pending = 1,\r\n Expired = 2,\r\n Disabled = 3\r\n}\r\n\r\nexport default interface FreeProSubscriptionAccess {\r\n id: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n status: FreeProSubscriptionAccessStatus;\r\n dateDisabled?: Date;\r\n}","import { IconProp } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Card from \"@material-ui/core/Card\";\r\nimport CardActions from \"@material-ui/core/CardActions\";\r\nimport CardContent from \"@material-ui/core/CardContent\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\nimport CircularProgress from \"@material-ui/core/CircularProgress\";\r\nimport { green } from \"@material-ui/core/colors\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport DialogActions from \"@material-ui/core/DialogActions\";\r\nimport DialogContent from \"@material-ui/core/DialogContent\";\r\nimport DialogContentText from \"@material-ui/core/DialogContentText\";\r\nimport DialogTitle from \"@material-ui/core/DialogTitle\";\r\nimport ExpansionPanel from \"@material-ui/core/ExpansionPanel\";\r\nimport ExpansionPanelDetails from \"@material-ui/core/ExpansionPanelDetails\";\r\nimport ExpansionPanelSummary from \"@material-ui/core/ExpansionPanelSummary\";\r\nimport Fab from \"@material-ui/core/Fab\";\r\nimport FormControl from \"@material-ui/core/FormControl\";\r\nimport FormHelperText from \"@material-ui/core/FormHelperText\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Hidden from \"@material-ui/core/Hidden\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport InputLabel from \"@material-ui/core/InputLabel\";\r\nimport OutlinedInput from \"@material-ui/core/OutlinedInput\";\r\nimport Select from \"@material-ui/core/Select\";\r\nimport Snackbar from \"@material-ui/core/Snackbar\";\r\nimport SnackbarContent from \"@material-ui/core/SnackbarContent\";\r\nimport { Theme } from \"@material-ui/core/styles/createMuiTheme\";\r\nimport createStyles from \"@material-ui/core/styles/createStyles\";\r\nimport withStyles, { WithStyles } from \"@material-ui/core/styles/withStyles\";\r\nimport Table from \"@material-ui/core/Table\";\r\nimport TableBody from \"@material-ui/core/TableBody\";\r\nimport TableCell from \"@material-ui/core/TableCell\";\r\nimport TableHead from \"@material-ui/core/TableHead\";\r\nimport TableRow from \"@material-ui/core/TableRow\";\r\nimport TextField from \"@material-ui/core/TextField\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport AddIcon from \"@material-ui/icons/Add\";\r\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CreditCardIcon from \"@material-ui/icons/CreditCard\";\r\nimport ErrorIcon from \"@material-ui/icons/Error\";\r\nimport ExpandMoreIcon from \"@material-ui/icons/ExpandMore\";\r\nimport classNames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport AppConfig from \"../../entities/AppConfig\";\r\nimport ApplicationUser from \"../../entities/ApplicationUser\";\r\nimport Country from \"../../entities/Country\";\r\nimport CreditCard from \"../../entities/CreditCard\";\r\nimport { AccountService } from \"../../services/AccountService\";\r\nimport {\r\n FieldValidationError,\r\n ServerError,\r\n ServerModelValidationResponse,\r\n ServerResponse,\r\n} from \"../../services/ServiceHelper\";\r\nimport withRoot from \"../../withRoot\";\r\nimport {ProSubscriptionSourceType} from \"../../entities/ProSubscription\";\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {},\r\n fab: {\r\n position: \"absolute\",\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing(),\r\n },\r\n header: {},\r\n title: {\r\n flex: \"0 0 auto\",\r\n },\r\n spacer: {\r\n flex: \"1 1 100%\",\r\n },\r\n ccTypeIcon: {\r\n width: \"40px !important\",\r\n height: \"40px !important\",\r\n color: theme.palette.text.secondary,\r\n marginRight: \"10px\",\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\",\r\n verticalAlign: \"top\",\r\n },\r\n cardStatus: {\r\n float: \"right\",\r\n },\r\n expansionCardStatus: {\r\n marginLeft: \"auto\",\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\",\r\n borderRadius: \"4px\",\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: \"nowrap\",\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: \"block\",\r\n padding: 0,\r\n },\r\n title: {\r\n float: \"left\",\r\n },\r\n },\r\n snackBarText: {\r\n overflow: \"hidden\",\r\n },\r\n addPaymentMethodDialogContent: {\r\n width: \"500px\",\r\n [theme.breakpoints.down(\"xs\")]: {\r\n width: \"auto\",\r\n },\r\n },\r\n tableCard: {\r\n display: \"inline-block\",\r\n fontSize: 14,\r\n verticalAlign: \"top\",\r\n paddingTop: 8,\r\n },\r\n tableExpiry: {\r\n padding: 0,\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loading: boolean;\r\n creditCards: CreditCard[];\r\n visibleCreditCardCount: number;\r\n errors: FieldValidationError[];\r\n addCreditCardErrors: FieldValidationError[];\r\n editCreditCardErrors: FieldValidationError[];\r\n showAddPaymentMethodDialog: boolean;\r\n addPaymentMethodCardHolderName: string;\r\n addPaymentMethodCreditCardNumber: string;\r\n addPaymentMethodCreditCardSecurityCode: string;\r\n addPaymentMethodCreditCardExpirationMonth: string;\r\n addPaymentMethodCreditCardExpirationYear: string;\r\n addPaymentMethodCreditCardPostalCode: string;\r\n showUpdatePaymentMethodDialog: boolean;\r\n updatePaymentMethodId: string;\r\n updatePaymentMethodCreditCardSecurityCode: string;\r\n updatePaymentMethodCreditCardExpirationMonth: string;\r\n updatePaymentMethodCreditCardExpirationYear: string;\r\n updatePaymentMethodCreditCardPostalCode: string;\r\n showChangePreferenceDialog: boolean;\r\n defaultCardId: string;\r\n disableAction: boolean;\r\n successMessage?: string;\r\n showDeleteCardConfirmation: boolean;\r\n cardForDeletion?: CreditCard;\r\n hasPayPal: boolean;\r\n countries: Country[];\r\n showCountries: boolean;\r\n selectedCountryShortCode?: string;\r\n};\r\n\r\nclass PaymentMethods extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n creditCards: [],\r\n visibleCreditCardCount: 10,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n showAddPaymentMethodDialog: false,\r\n addPaymentMethodCardHolderName: \"\",\r\n addPaymentMethodCreditCardExpirationMonth: \"\",\r\n addPaymentMethodCreditCardExpirationYear: \"\",\r\n addPaymentMethodCreditCardNumber: \"\",\r\n addPaymentMethodCreditCardPostalCode: \"\",\r\n addPaymentMethodCreditCardSecurityCode: \"\",\r\n showUpdatePaymentMethodDialog: false,\r\n updatePaymentMethodId: \"\",\r\n updatePaymentMethodCreditCardExpirationMonth: \"\",\r\n updatePaymentMethodCreditCardExpirationYear: \"\",\r\n updatePaymentMethodCreditCardPostalCode: \"\",\r\n updatePaymentMethodCreditCardSecurityCode: \"\",\r\n showChangePreferenceDialog: false,\r\n defaultCardId: \"\",\r\n disableAction: false,\r\n showDeleteCardConfirmation: false,\r\n hasPayPal: false,\r\n countries: [],\r\n showCountries: false,\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Payment Methods\";\r\n\r\n try {\r\n const responses = await Promise.all([\r\n AccountService.getCreditCards(),\r\n AccountService.hasPayPal(),\r\n AccountService.getCountries(),\r\n ]);\r\n\r\n const [creditCards, hasPayPal, countries] = responses;\r\n this.setState({ loading: false });\r\n\r\n if (creditCards) {\r\n let defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n hasPayPal: hasPayPal === true,\r\n loading: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n\r\n if (countries) {\r\n this.setState({\r\n countries: countries.data,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"Unable to retrieve location. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n sortCreditCards(s1: CreditCard, s2: CreditCard): number {\r\n if (!s1.expirationYear) {\r\n return -1;\r\n }\r\n\r\n if (!s2.expirationYear) {\r\n return 1;\r\n }\r\n\r\n if (s1.expirationYear > s2.expirationYear) {\r\n return -1;\r\n }\r\n\r\n if (s2.expirationYear > s1.expirationYear) {\r\n return 1;\r\n }\r\n\r\n if (!s1.expirationMonth) {\r\n return -1;\r\n }\r\n\r\n if (!s2.expirationMonth) {\r\n return 1;\r\n }\r\n\r\n if (s1.expirationMonth > s2.expirationMonth) {\r\n return -1;\r\n }\r\n\r\n if (s2.expirationMonth > s1.expirationMonth) {\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n getFontAwesomePaymentMethodType(type: string): IconProp {\r\n if (type === \"AmericanExpress\") {\r\n return [\"fab\", \"cc-amex\"];\r\n } else if (type === \"Discover\") {\r\n return [\"fab\", \"cc-discover\"];\r\n } else if (type === \"MasterCard\") {\r\n return [\"fab\", \"cc-mastercard\"];\r\n } else if (type === \"Visa\") {\r\n return [\"fab\", \"cc-visa\"];\r\n } else if (type === \"PayPal\") {\r\n return [\"fab\", \"cc-paypal\"];\r\n } else {\r\n return [\"fas\", \"credit-card\"];\r\n }\r\n }\r\n\r\n handleAddPaymentMethodFormSubmit = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n disableAction: true,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n });\r\n\r\n try {\r\n const response = await AccountService.addPaymentMethod(\r\n this.props.config,\r\n this.state.addPaymentMethodCardHolderName,\r\n this.state.addPaymentMethodCreditCardNumber,\r\n this.state.addPaymentMethodCreditCardExpirationMonth,\r\n this.state.addPaymentMethodCreditCardExpirationYear,\r\n this.state.addPaymentMethodCreditCardSecurityCode,\r\n this.state.addPaymentMethodCreditCardPostalCode,\r\n this.state.selectedCountryShortCode\r\n );\r\n this.setState({ disableAction: false });\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n let newCard = response.data;\r\n\r\n this.setState({\r\n creditCards: [...this.state.creditCards, newCard],\r\n showAddPaymentMethodDialog: false,\r\n disableAction: false,\r\n addPaymentMethodCardHolderName: \"\",\r\n addPaymentMethodCreditCardNumber: \"\",\r\n addPaymentMethodCreditCardExpirationMonth: \"\",\r\n addPaymentMethodCreditCardExpirationYear: \"\",\r\n addPaymentMethodCreditCardPostalCode: \"\",\r\n addPaymentMethodCreditCardSecurityCode: \"\",\r\n selectedCountryShortCode: undefined,\r\n successMessage: `New ${newCard.type} added.`,\r\n });\r\n } else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [response.message],\r\n };\r\n this.setState({\r\n addCreditCardErrors: [serverError],\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n if (response.errors.findIndex((a) => a.field === \"PostalCode\") > -1) {\r\n this.setState({ showCountries: true });\r\n }\r\n this.setState({\r\n errors: response.errors,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showAddPaymentMethodDialog: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showAddPaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleUpdatePaymentMethodFormSubmit = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n this.setState({\r\n disableAction: true,\r\n errors: [],\r\n addCreditCardErrors: [],\r\n editCreditCardErrors: [],\r\n });\r\n\r\n try {\r\n const response = await AccountService.updatePaymentMethod(\r\n this.props.config,\r\n this.state.updatePaymentMethodId,\r\n this.state.updatePaymentMethodCreditCardExpirationMonth,\r\n this.state.updatePaymentMethodCreditCardExpirationYear,\r\n this.state.updatePaymentMethodCreditCardSecurityCode,\r\n this.state.updatePaymentMethodCreditCardPostalCode,\r\n this.state.selectedCountryShortCode\r\n );\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n let updatedCard = response.data;\r\n\r\n const creditCards = this.state.creditCards.map((c) => {\r\n if (c.id === updatedCard.id) {\r\n return updatedCard;\r\n }\r\n return updatedCard;\r\n });\r\n\r\n this.setState({\r\n creditCards,\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n updatePaymentMethodId: \"\",\r\n updatePaymentMethodCreditCardExpirationMonth: \"\",\r\n updatePaymentMethodCreditCardExpirationYear: \"\",\r\n updatePaymentMethodCreditCardPostalCode: \"\",\r\n updatePaymentMethodCreditCardSecurityCode: \"\",\r\n selectedCountryShortCode: undefined,\r\n successMessage: `Updated ${updatedCard.type}.`,\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n if (response.errors.findIndex((a) => a.field === \"PostalCode\") > -1) {\r\n this.setState({ showCountries: true });\r\n }\r\n this.setState({\r\n errors: response.errors,\r\n disableAction: false,\r\n });\r\n } else if (\r\n ServerModelValidationResponse.isServerModelValidationResponse(response)\r\n ) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({ errors: [serverError], disableAction: false });\r\n } else {\r\n this.setState({ errors: response.errors, disableAction: false });\r\n }\r\n } else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [response.message],\r\n };\r\n this.setState({\r\n editCreditCardErrors: [serverError],\r\n disableAction: false,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showUpdatePaymentMethodDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleUpdateDefaultPaymentMethod = async (\r\n e: React.FormEvent\r\n ) => {\r\n e.preventDefault();\r\n\r\n if (this.state.defaultCardId.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ disableAction: true });\r\n\r\n try {\r\n const creditCards = await AccountService.changeDefaultCreditCard(\r\n this.state.defaultCardId\r\n );\r\n\r\n if (creditCards) {\r\n var defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n showChangePreferenceDialog: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n disableAction: false,\r\n successMessage: \"Default card updated.\",\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showChangePreferenceDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showChangePreferenceDialog: false,\r\n disableAction: false,\r\n });\r\n }\r\n };\r\n\r\n handleDeleteCardMethod = async (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n if (\r\n !this.state.cardForDeletion ||\r\n this.state.cardForDeletion.useCardByDefault\r\n || this.state.disableAction\r\n ) {\r\n return;\r\n }\r\n\r\n this.setState({ disableAction: true });\r\n\r\n try {\r\n const creditCards = await AccountService.deleteCreditCard(\r\n this.state.cardForDeletion.id\r\n );\r\n\r\n if (creditCards) {\r\n var defaultCard = creditCards.find((cc) => cc.useCardByDefault);\r\n this.setState({\r\n creditCards,\r\n showDeleteCardConfirmation: false,\r\n defaultCardId: defaultCard ? defaultCard.id : \"\",\r\n disableAction: false,\r\n successMessage: \"Credit card deleted\",\r\n cardForDeletion: undefined,\r\n });\r\n } else {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showDeleteCardConfirmation: false,\r\n disableAction: false,\r\n cardForDeletion: undefined,\r\n });\r\n }\r\n } catch (errorResult) {\r\n const serverError: FieldValidationError = {\r\n field: \"\",\r\n errors: [\"An unknown error occurred. Please try again.\"],\r\n };\r\n this.setState({\r\n errors: [serverError],\r\n showDeleteCardConfirmation: false,\r\n disableAction: false,\r\n cardForDeletion: undefined,\r\n });\r\n }\r\n };\r\n\r\n renderPreferences(sortedCreditCards: CreditCard[]) {\r\n \r\n const classes = this.props.classes;\r\n\r\n if (sortedCreditCards.length === 0) {\r\n return (\r\n \r\n {\" \"}\r\n You do not have any cards on file{\" \"}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Card\r\n \r\n Default\r\n \r\n \r\n \r\n {sortedCreditCards.map((creditCard) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {creditCard.type} ending in {creditCard.lastFour}\r\n \r\n \r\n \r\n \r\n \r\n {creditCard.expirationMonth}/{creditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ defaultCardId: creditCard.id })\r\n }\r\n />\r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n \r\n const classes = this.props.classes;\r\n const sortedCreditCards = this.state.creditCards.sort(this.sortCreditCards);\r\n var defaultCreditCard = this.state.creditCards.find(\r\n (cc) => cc.useCardByDefault\r\n );\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n }\r\n action={[\r\n \r\n this.setState({\r\n errors: this.state.errors.filter((a) => a.field !== \"\"),\r\n })\r\n }\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n this.setState({ successMessage: undefined })}\r\n >\r\n \r\n \r\n {this.state.successMessage ? this.state.successMessage : \"\"}\r\n \r\n }\r\n action={[\r\n this.setState({ successMessage: undefined })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Payment Methods\r\n \r\n {!this.state.loading && this.state.creditCards.length > 0 && (\r\n \r\n {this.state.creditCards.length} payment method\r\n {this.state.creditCards.length === 1 ? \"\" : \"s\"}\r\n \r\n )}\r\n
\r\n
\r\n \r\n\r\n \r\n {this.state.loading ? (\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n ) : (\r\n <>\r\n {(this.props.user.isGlooLogin && this.props.user.proSubscription?.source === ProSubscriptionSourceType.Gloo) &&\r\n \r\n Visit Gloo for your Gloo PRO payment method.\r\n \r\n }\r\n {this.state.hasPayPal ? (\r\n <>\r\n \r\n Your payment method\r\n \r\n (Manage)\r\n \r\n \r\n \r\n \r\n \r\n \r\n Paying with PayPal\r\n \r\n \r\n Expires: Never\r\n \r\n {this.props.user.proSubscription &&\r\n this.props.user.proSubscription.nextBillDate && (\r\n \r\n \r\n Disclaimer: If you cancel your subscription, you\r\n will still be able to access it until{\" \"}\r\n {new Date(\r\n this.props.user.proSubscription.nextBillDate\r\n ).toLocaleDateString()}\r\n .\r\n \r\n \r\n )}\r\n \r\n \r\n
\r\n \r\n Manage\r\n \r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n {this.state.creditCards.length === 0 && (\r\n \r\n \r\n
\r\n You have no credit cards. Add one below.\r\n \r\n )}\r\n {sortedCreditCards.length > 0 && (\r\n \r\n {defaultCreditCard && (\r\n \r\n \r\n Your default payment method\r\n {\r\n e.preventDefault();\r\n this.setState({\r\n showChangePreferenceDialog: true,\r\n });\r\n }}\r\n >\r\n (change preference)\r\n \r\n \r\n \r\n \r\n \r\n \r\n {defaultCreditCard.type} ending in{\" \"}\r\n {defaultCreditCard.lastFour}\r\n \r\n \r\n {defaultCreditCard.expirationMonth}/\r\n {defaultCreditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n Name on Card\r\n
\r\n {defaultCreditCard.cardHolderName}\r\n
\r\n
\r\n \r\n \r\n Postal Code\r\n
\r\n {defaultCreditCard.postalCode}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n this.setState({\r\n updatePaymentMethodId:\r\n defaultCreditCard!.id,\r\n showUpdatePaymentMethodDialog: true,\r\n })\r\n }\r\n >\r\n Edit\r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n {sortedCreditCards\r\n .filter((cc) => !cc.useCardByDefault)\r\n .map((creditCard) => (\r\n \r\n }\r\n >\r\n \r\n \r\n {creditCard.type} ending in{\" \"}\r\n {creditCard.lastFour}\r\n \r\n \r\n {creditCard.expirationMonth}/\r\n {creditCard.expirationYear}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name on Card\r\n
\r\n {creditCard.cardHolderName}\r\n
\r\n
\r\n \r\n \r\n Postal Code\r\n
\r\n {creditCard.postalCode}\r\n
\r\n
\r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: true,\r\n cardForDeletion: creditCard,\r\n })\r\n }\r\n color=\"secondary\"\r\n style={{\r\n marginLeft: \"-10px\",\r\n marginTop: \"20px\",\r\n marginBottom: \"-15px\",\r\n }}\r\n >\r\n Remove\r\n \r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodId: creditCard.id,\r\n showUpdatePaymentMethodDialog: true,\r\n })\r\n }\r\n >\r\n Edit\r\n \r\n \r\n
\r\n
\r\n \r\n ))}\r\n
\r\n )}\r\n \r\n )}\r\n \r\n )}\r\n
\r\n {!this.state.hasPayPal && !this.state.loading && (\r\n this.setState({ showAddPaymentMethodDialog: true })}\r\n >\r\n \r\n Add Payment Method\r\n \r\n )}\r\n \r\n this.setState({\r\n showAddPaymentMethodDialog:\r\n !this.state.showAddPaymentMethodDialog,\r\n })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddPaymentMethodFormSubmit(e)}>\r\n \r\n Add a new credit card\r\n \r\n \r\n {this.state.addCreditCardErrors.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n this.setState({\r\n addPaymentMethodCardHolderName: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CardHolderName\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n this.setState({\r\n addPaymentMethodCreditCardNumber: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardNumber\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n\r\n \r\n \r\n \r\n \r\n Expiration Month\r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardExpirationMonth: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Expiration Year\r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardExpirationYear: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardSecurityCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardSecurityCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n this.setState({\r\n addPaymentMethodCreditCardPostalCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardPostalCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n {this.state.showCountries && (\r\n \r\n \r\n \r\n \r\n Country\r\n \r\n \r\n this.setState({\r\n selectedCountryShortCode: e.target.value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n {this.state.countries.map((c) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n this.setState({\r\n showAddPaymentMethodDialog:\r\n !this.state.showAddPaymentMethodDialog,\r\n })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Add\r\n \r\n \r\n
\r\n \r\n \r\n this.setState({ showUpdatePaymentMethodDialog: false })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleUpdatePaymentMethodFormSubmit(e)}>\r\n Edit credit card\r\n \r\n {this.state.editCreditCardErrors.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n \r\n \r\n \r\n Expiration Month\r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardExpirationMonth: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Expiration Year\r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardExpirationYear: e.target\r\n .value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardSecurityCode:\r\n e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardSecurityCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n this.setState({\r\n updatePaymentMethodCreditCardPostalCode: e.target.value,\r\n })\r\n }\r\n error={FieldValidationError.isFieldInError(\r\n this.state.errors,\r\n \"CreditCardPostalCode\"\r\n )}\r\n helperText={\r\n \r\n }\r\n />\r\n \r\n \r\n {this.state.showCountries && (\r\n \r\n \r\n \r\n \r\n Country\r\n \r\n \r\n this.setState({\r\n selectedCountryShortCode: e.target.value as string,\r\n })\r\n }\r\n input={\r\n \r\n }\r\n >\r\n {this.state.countries.map((c) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n this.setState({ showUpdatePaymentMethodDialog: false })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Save\r\n \r\n \r\n \r\n \r\n this.setState({ showChangePreferenceDialog: false })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
\r\n \r\n {\"Change default payment preference\"}\r\n \r\n \r\n {this.renderPreferences(sortedCreditCards)}\r\n \r\n \r\n \r\n this.setState({ showChangePreferenceDialog: false })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Update\r\n \r\n \r\n
\r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: false,\r\n cardForDeletion: undefined,\r\n })\r\n }\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
\r\n Confirm deletion\r\n \r\n \r\n This will remove the credit card from your account. Are you sure\r\n you wish to continue?\r\n \r\n \r\n \r\n \r\n this.setState({\r\n showDeleteCardConfirmation: false,\r\n cardForDeletion: undefined,\r\n })\r\n }\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n Confirm\r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(PaymentMethods));\r\n","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport CardMembershipIcon from '@material-ui/icons/CardMembership';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport FreeProSubscriptionAccess, { FreeProSubscriptionAccessStatus } from '../../entities/FreeProSubscriptionAccess';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n badState: {\r\n padding: theme.spacing() * 10\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n dateField: {\r\n width: '45%',\r\n margin: '10px'\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n cardContainer: {\r\n marginBottom: \"16px\",\r\n width: \"500px\",\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: '100%'\r\n },\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n items?: FreeProSubscriptionAccess[];\r\n selectedItemId?: number;\r\n showAddAccessDialog: boolean;\r\n addAccessStartDate: string;\r\n addAccessEndDate: string;\r\n showAddAccessSuccessMessage: boolean;\r\n showDisableDialog: boolean;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass FreeProAccess extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n showAddAccessDialog: false,\r\n addAccessStartDate: this.getDateFormatDisplay(new Date().toLocaleDateString()),\r\n addAccessEndDate: this.getDateFormatDisplay(new Date(new Date().setFullYear(new Date().getFullYear() + 1)).toLocaleDateString()),\r\n showAddAccessSuccessMessage: false,\r\n showDisableDialog: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Free PRO Access\";\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const items = await AdminService.getFreeProSubscriptionAccess();\r\n if (items) {\r\n this.setState({ errors: [], items: items, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n getDateFormatDisplay(dateString: string): string {\r\n\r\n const dateParts = dateString.split('/');\r\n // Clever pad start: https://stackoverflow.com/a/5366862\r\n return dateParts[2] + '-' + ('00' + dateParts[0]).substring(dateParts[0].length) + '-' + ('00' + dateParts[1]).substring(dateParts[1].length);\r\n }\r\n\r\n async disableFreeProAccess(id: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.disableFreeProSubscriptionAccess(id);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n items: response.data,\r\n enableSubmit: true,\r\n showDisableDialog: false\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDisableDialog: false });\r\n }\r\n }\r\n\r\n async handleAddAccessFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addAccessStartDate && this.state.addAccessEndDate) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.addFreeProSubscriptionAccess(this.state.addAccessStartDate, this.state.addAccessEndDate);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n items: response.data,\r\n enableSubmit: true,\r\n addAccessStartDate: this.getDateFormatDisplay(new Date().toLocaleDateString()),\r\n addAccessEndDate: this.getDateFormatDisplay(new Date(new Date().setFullYear(new Date().getFullYear() + 1)).toLocaleDateString()),\r\n showAddAccessDialog: false,\r\n showAddAccessSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddAccessDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || !this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showAddAccessSuccessMessage: false })}\r\n >\r\n \r\n \r\n Free pro was successfully changed.\r\n }\r\n action={[\r\n this.setState({ showAddAccessSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n
\r\n \r\n \r\n Free PRO Access\r\n \r\n \r\n {!this.state.items &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.items && this.state.items.length === 0 &&\r\n \r\n \r\n
\r\n This user has not been given free PRO access. Add it below.\r\n
\r\n }\r\n {this.state.items && this.state.items.length > 0 &&\r\n \r\n {this.state.items.map(access => {\r\n return (\r\n \r\n \r\n \r\n {access.status === FreeProSubscriptionAccessStatus.Expired && 'Expired'}\r\n {access.status === FreeProSubscriptionAccessStatus.Pending && 'Pending'}\r\n {access.status === FreeProSubscriptionAccessStatus.Active && 'Active'}\r\n {access.status === FreeProSubscriptionAccessStatus.Disabled && 'Disabled'}\r\n \r\n \r\n Starts {access.startDate ? new Date(access.startDate).toLocaleDateString() : ''}\r\n \r\n \r\n Ends {access.endDate ? new Date(access.endDate).toLocaleDateString() : ''}\r\n \r\n \r\n \r\n
\r\n {(access.status === FreeProSubscriptionAccessStatus.Active || access.status === FreeProSubscriptionAccessStatus.Pending) &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n );\r\n })}\r\n
\r\n }\r\n
\r\n this.setState({ showAddAccessDialog: !this.state.showAddAccessDialog })}>\r\n \r\n \r\n this.setState({ showAddAccessDialog: !this.state.showAddAccessDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddAccessFormSubmit(e)}>\r\n Add Free PRO Access\r\n \r\n Enter the date range that the user will be given free PRO access. All existing free PRO access that is active will be disabled.\r\n this.setState({ addAccessStartDate: e.target.value })}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n />\r\n this.setState({ addAccessEndDate: e.target.value })}\r\n InputLabelProps={{\r\n shrink: true\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.setState({ showDisableDialog: !this.state.showDisableDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n Disable Free PRO Access\r\n \r\n Are you sure you want to disable this free PRO access?\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(FreeProAccess));\r\n","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownward from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpward from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { Redirect, RouteComponentProps } from \"react-router-dom\";\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport SearchResult from '../../entities/SearchResult';\r\nimport User from '../../entities/User';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: '100%'\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n anchorSort: undefined;\r\n enableSubmit: boolean;\r\n queryText: string;\r\n skip: number;\r\n take: number;\r\n orderBy: string;\r\n sortOrder: string;\r\n searchResult?: SearchResult;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Impersonate extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n anchorSort: undefined,\r\n enableSubmit: true,\r\n queryText: '',\r\n skip: 0,\r\n take: 10,\r\n orderBy: 'UserId',\r\n sortOrder: 'Descending',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Impersonate User\";\r\n await this.search();\r\n }\r\n\r\n async handleSearchFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n await this.search();\r\n }\r\n\r\n async impersonate(userId: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.impersonate(userId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n this.props.history.push('/');\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async search() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n\r\n const searchResult = await AdminService.searchUsers(this.state.queryText, this.state.skip, this.state.take, this.state.orderBy, this.state.sortOrder);\r\n if (searchResult) {\r\n this.setState({ errors: [], searchResult: searchResult, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Ascending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy: orderBy, sortOrder: sortOrder }, this.search);\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n if (!match) {\r\n return text;\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n Impersonate User\r\n \r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('UserId')}>\r\n \r\n {this.state.orderBy === 'UserId' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('FirstName')}>\r\n \r\n {this.state.orderBy === 'FirstName' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('LastName')}>\r\n \r\n {this.state.orderBy === 'LastName' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Email')}>\r\n \r\n {this.state.orderBy === 'Email' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('DateCreated')}>\r\n \r\n {this.state.orderBy === 'DateCreated' ? : }\r\n \r\n \r\n \r\n\r\n \r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Ascending' ? : }\r\n \r\n
\r\n
\r\n
this.handleSearchFormSubmit(e)}>\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value })}\r\n />\r\n \r\n
\r\n \r\n\r\n \r\n\r\n {!this.state.searchResult &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length === 0 &&\r\n \r\n \r\n
\r\n No results found. Try another query.\r\n
\r\n }\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length > 0 && this.state.searchResult.items.map(item =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n Member since {new Date(item.dateCreated).toLocaleDateString()}\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n\r\n
\r\n\r\n {this.state.searchResult && this.state.searchResult.items.length > 0 &&\r\n this.setState({ skip: Math.round(page * this.state.take) }, this.search)}\r\n onChangeRowsPerPage={(e) => this.setState({ take: parseInt(e.target.value, 10) }, this.search)}\r\n />\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Impersonate));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport NoteIcon from '@material-ui/icons/Note';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\nimport AdministratorNote from '../../entities/AdministratorNote';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { AdminService } from '../../services/AdminService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n addNoteDialog: {\r\n minWidth: '400px'\r\n },\r\n card: {\r\n width: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n card: {\r\n width: '100%'\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ntype State = {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n queryText: string;\r\n addNoteText: string;\r\n showAddNoteDialog: boolean;\r\n errors: FieldValidationError[];\r\n notes: AdministratorNote[];\r\n visibleNotes: AdministratorNote[];\r\n};\r\n\r\nclass Notes extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n queryText: '',\r\n addNoteText: '',\r\n showAddNoteDialog: false,\r\n errors: [],\r\n notes: [],\r\n visibleNotes: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Admin Notes\";\r\n\r\n try {\r\n const notes = await AdminService.getAdministratorNotes();\r\n\r\n if (notes) {\r\n this.setState({ errors: [], loading: false, notes: notes, visibleNotes: notes });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n search() {\r\n\r\n let notes = this.state.notes.filter(n => n.text.search(new RegExp(this.state.queryText, \"i\")) >= 0);\r\n\r\n this.setState({ visibleNotes: notes });\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n if (!match) {\r\n return text;\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n handleAddNoteFormSubmit = async (e: React.FormEvent) => {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addNoteText) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AdminService.addAdministratorNote(this.state.addNoteText);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let notes = this.state.notes;\r\n notes.unshift(response.data);\r\n this.setState({ errors: [], notes: notes, visibleNotes: notes, queryText: '', addNoteText: '', enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddNoteDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n if (!this.props.user.isAdmin || !this.props.user.inAdminImpersonationMode) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n
\r\n \r\n Admin Notes\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value }, this.search)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.notes.length === 0 &&\r\n \r\n \r\n
\r\n This user has no notes. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.notes.length > 0 && this.state.queryText && this.state.visibleNotes.length === 0 &&\r\n \r\n \r\n
\r\n No results found. Try another query.\r\n
\r\n }\r\n {!this.state.loading && this.state.visibleNotes.length > 0 && this.state.visibleNotes.map(n =>\r\n \r\n \r\n \r\n Added on {new Date(n.date).toLocaleDateString()}\r\n \r\n '), this.state.queryText) }} />\r\n \r\n \r\n )}\r\n
\r\n this.setState({ showAddNoteDialog: !this.state.showAddNoteDialog })}>\r\n \r\n \r\n\r\n this.setState({ showAddNoteDialog: !this.state.showAddNoteDialog })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddNoteFormSubmit(e)}>\r\n Add a new User Note\r\n \r\n this.setState({ addNoteText: e.target.value })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Notes));","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\nimport { FieldValidationError, ServerError, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n forgotPasswordContainer: {\r\n height: '100vh',\r\n },\r\n forgotPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n forgotPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps {\r\n user: ApplicationUser | null;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n email: string;\r\n errors: Array;\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n email: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Forgot Password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.sendResetPasswordEmail(this.state.email);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.history.push(\"/auth/forgot-password/success\");\r\n }\r\n else if (ServerError.isServerError(response)) {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Forgot Your Password?\r\n Enter your email address and we will send you an email with a link to reset your password.\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport * as React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n forgotPasswordContainer: {\r\n height: '100vh',\r\n },\r\n forgotPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px',\r\n marginTop: '50px',\r\n marginBottom: '50px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n forgotPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser | null;\r\n}\r\n\r\nclass ForgotPasswordSuccess extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Forgot Password\";\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Reset Password Link Sent\r\n Check your email for a link to reset your password.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPasswordSuccess));","import * as React from 'react';\r\nimport { Link, Redirect } from 'react-router-dom';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport Newsletter from '../../entities/Newsletter';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nimport Logo from '../../resources/logo.png';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n registerContainer: {\r\n height: '100vh'\r\n },\r\n registerPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n registerPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n password: string;\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Register extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n password: '',\r\n newsletters: [],\r\n selectedNewsletterIds: [],\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Register\";\r\n\r\n try {\r\n var newsletters = await AuthenticationService.getSignUpNewsletters();\r\n this.setState({ newsletters: newsletters, selectedNewsletterIds: newsletters.map(n => n.id) });\r\n }\r\n catch {\r\n // Not exactly catastrophic that they can't sign up for a newsletter, so ignore error\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.firstName && this.state.lastName && this.state.email && this.state.password) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.register(this.state.firstName, this.state.lastName, this.state.email, this.state.password, this.state.selectedNewsletterIds);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n toggleNewsletterSelection = (id: number) => {\r\n\r\n var selectedList: number[] = this.state.selectedNewsletterIds;\r\n var index = selectedList.indexOf(id);\r\n\r\n if (index < 0) {\r\n selectedList.push(id);\r\n } else {\r\n selectedList.splice(index, 1);\r\n }\r\n\r\n this.setState({\r\n selectedNewsletterIds: selectedList\r\n });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Register\r\n Create a new SermonCentral account\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ firstName: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ lastName: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n {this.state.newsletters.map(newsletter => {\r\n return (\r\n \r\n = 0}\r\n onChange={(e) => this.toggleNewsletterSelection(parseInt(e.target.value, 10))}\r\n value={newsletter.id.toString()}\r\n color=\"primary\"\r\n />\r\n }\r\n label={newsletter.name === 'Better Preaching Update' ? 'Sign up for the Better Preaching newsletter from SermonCentral.' : 'I\\'d like to receive promotional offers for ministry resources.'}\r\n />\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Register));","import * as React from 'react';\r\nimport { RouteComponentProps, Redirect } from 'react-router-dom';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../../withRoot';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\n\r\nimport { FieldValidationError, ServerResponse, ServerModelValidationResponse } from '../../services/ServiceHelper';\r\n\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\n\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\n\r\nimport Logo from '../../resources/logo.png';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n resetPasswordContainer: {\r\n height: '100vh'\r\n },\r\n resetPasswordPaper: {\r\n padding: '0px 50px',\r\n maxWidth: 500\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n marginBottom: '30px'\r\n },\r\n submitButtonMobile: {\r\n margin: '20px 0px 70px 0px'\r\n },\r\n buttonContainer: {\r\n padding: '30px 0px 70px 0px'\r\n },\r\n textLink: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n resetPasswordPaper: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles, RouteComponentProps<{ email: string, code: string }> {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ntype State = {\r\n enableSubmit: boolean;\r\n email: string;\r\n encodedEmail: string;\r\n code: string;\r\n password: string;\r\n confirmPassword: string;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass ResetPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n email: '',\r\n encodedEmail: props.match.params.email,\r\n code: props.match.params.code,\r\n password: '',\r\n confirmPassword: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Reset password\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email && this.state.password && this.state.confirmPassword) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.resetPassword(this.state.email, this.state.password, this.state.confirmPassword, this.state.code);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Reset Password\r\n Confirm your email address and enter a new password to gain access to your account.\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ confirmPassword: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ResetPassword));","import React from \"react\";\r\nimport { SvgIcon, SvgIconProps } from \"@material-ui/core\";\r\n\r\n\r\nexport function GlooIcon(props: SvgIconProps) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}","import React from \"react\";\r\n\r\nimport { Button, makeStyles } from \"@material-ui/core\";\r\nimport { GlooIcon } from \"./GlooIcon\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n glooButton: {\r\n borderColor: '#41B768',\r\n borderRadius: 16,\r\n borderWidth: 2,\r\n color: '#41B768',\r\n fontFamily: 'poppins',\r\n fontSize: '1.1rem',\r\n minHeight: '50px',\r\n padding: '2px 0px',\r\n textTransform: 'none',\r\n },\r\n glooIcon: {\r\n transform: 'scale(3)',\r\n marginLeft: 28,\r\n marginRight: 24,\r\n },\r\n disabledLink: {\r\n pointerEvents: 'none',\r\n cursor: 'default',\r\n }\r\n}));\r\n\r\ninterface Props {\r\n url: string;\r\n disabled?: boolean;\r\n fullWidth?: boolean;\r\n style?: React.CSSProperties;\r\n}\r\n\r\nexport function GlooButton(props: Props) {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}","export enum SermonStatus {\r\n Pending = 1,\r\n Approved = 3,\r\n Rejected = 4,\r\n Deleted = 5\r\n}\r\n\r\nexport default interface Sermon {\r\n id: number;\r\n sermonSeriesId?: number;\r\n sermonSeriesName: string;\r\n title: string;\r\n intro: string;\r\n body: string;\r\n language: string;\r\n type: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n tags: string[];\r\n date: Date;\r\n status: SermonStatus;\r\n rating: number;\r\n ratingCount: number;\r\n views: number;\r\n url: string;\r\n rejectionNotes: string;\r\n}","import Button from '@material-ui/core/Button';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Hidden from '@material-ui/core/Hidden';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { Link, Redirect, RouteComponentProps } from 'react-router-dom';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Logo from '../../resources/logo.png';\r\nimport { AuthenticationService } from '../../services/AuthenticationService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { GlooButton } from '../../components/GlooButton';\r\nimport AppConfig, { AppConfigEnvironment } from '../../entities/AppConfig';\r\nimport { Box } from '@material-ui/core';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n textAlign: 'center',\r\n paddingTop: theme.spacing() * 20,\r\n },\r\n signInContainer: {\r\n height: '100vh'\r\n },\r\n logoImage: {\r\n maxWidth: \"90px\",\r\n margin: \"30px 0px 20px 0px\"\r\n },\r\n textButton: {\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n },\r\n submitButton: {\r\n minWidth: '150px',\r\n minHeight: '50px',\r\n },\r\n submitButtonMobile: {\r\n marginTop: '20px',\r\n minHeight: '50px'\r\n },\r\n buttonContainer: {\r\n padding: '40px 0px 40px 0px'\r\n },\r\n link: {\r\n textDecoration: 'none'\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n signInPaper: {\r\n padding: '0px 50px',\r\n [theme.breakpoints.down('xs')]: {\r\n margin: '0px 20px',\r\n padding: '0px 30px'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n user: ApplicationUser | null;\r\n onSignIn: (user: ApplicationUser) => void;\r\n config: AppConfig;\r\n}\r\n\r\ntype State = {\r\n redirectToReferrer: boolean;\r\n enableSubmit: boolean,\r\n email: string;\r\n password: string;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass SignIn extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n redirectToReferrer: false,\r\n enableSubmit: true,\r\n email: '',\r\n password: '',\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Sign In\";\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.email && this.state.password) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await AuthenticationService.signIn(this.state.email, this.state.password, false);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({ redirectToReferrer: true }, () => this.props.onSignIn(response.data));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n let stateObject: any = this.props.location.state || { from: { pathname: \"/\" } };\r\n let from = stateObject.from;\r\n let { redirectToReferrer } = this.state;\r\n\r\n if (redirectToReferrer) {\r\n return ;\r\n }\r\n\r\n if (this.props.user) {\r\n return ;\r\n }\r\n\r\n const glooRedirectUrl = this.props.config.accountSiteUrl + from?.pathname;\r\n const glooUrl = this.props.config.mainSiteUrl + '/account/gloo/login?redirectUri=' + encodeURIComponent(glooRedirectUrl);\r\n \r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n Sign in\r\n to your SermonCentral account\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ email: e.target.value })}\r\n helperText={}\r\n />\r\n this.setState({ password: e.target.value })}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SignIn));","export const ArrayHelper = {\r\n addString: (stringToAdd: string, stringArray: string[]): string[] => {\r\n let separatedStrings = stringToAdd.replace(/\\s\\s+/g, ' ').split(',').map(s => s.trim());\r\n\r\n let strings = [ ...stringArray];\r\n for (var i = 0; i < separatedStrings.length; i++) {\r\n\r\n const stringPart = separatedStrings[i];\r\n if (stringPart !== '' && !strings.some(s => s.toLowerCase() === stringPart.toLowerCase())) {\r\n strings.push(stringPart);\r\n }\r\n }\r\n return strings;\r\n },\r\n \r\n removeString: (stringToRemove: string, stringArray: string[]): string[] => {\r\n return stringArray.filter(s => s !== stringToRemove);\r\n }\r\n}","export enum SermonIllustrationStatus {\r\n Rejected = 0,\r\n Approved = 1,\r\n Pending = 3,\r\n Deleted = 4\r\n}\r\n\r\nexport default interface SermonIllustration {\r\n id: number;\r\n title: string;\r\n body: string;\r\n language: string;\r\n category: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n tags: string[];\r\n date: Date;\r\n status: SermonIllustrationStatus;\r\n rating: number;\r\n ratingCount: number;\r\n intro: string;\r\n views: number;\r\n url: string;\r\n rejectionNotes: string;\r\n}","import {Button, Chip, CircularProgress, Divider, FormControl, FormHelperText, IconButton, Input, InputAdornment, \r\n InputLabel, MenuItem, Paper, Select, Snackbar, SnackbarContent, Theme, createStyles, withStyles, WithStyles, TextField, Toolbar, Typography} from '@material-ui/core';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport Sermon, { SermonStatus } from '../../entities/Sermon';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n flexWrap: 'nowrap'\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 15\r\n },\r\n sermonSeriesTitle: {\r\n maxWidth: 801\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n originalSermonSeriesId?: number;\r\n sermonSeriesId?: number;\r\n originalSermonSeriesName: string;\r\n sermonSeriesName: string;\r\n title: string;\r\n intro: string;\r\n body: string;\r\n type: string;\r\n language: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n rejectionNotes?: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n languages: { name: string }[];\r\n types: { name: string }[];\r\n targetAudiences: { id: number, name: string }[];\r\n sermonSeries: SermonSeries[];\r\n}\r\n\r\nclass EditSermon extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n originalSermonSeriesId: undefined,\r\n sermonSeriesId: undefined,\r\n originalSermonSeriesName: '',\r\n sermonSeriesName: '',\r\n title: '',\r\n intro: '',\r\n body: '',\r\n type: 'Full Sermon',\r\n language: 'English',\r\n targetAudience: 'All',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n languages: [],\r\n types: [],\r\n targetAudiences: [],\r\n sermonSeries: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('sermonSeriesId')) {\r\n this.setState({ sermonSeriesId: parseInt(params.get('sermonSeriesId')!, 10) });\r\n }\r\n\r\n document.title = \"SermonCentral Account - Add Sermon\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon\";\r\n\r\n try {\r\n const sermon = await ContributionsService.getSermon(this.state.id);\r\n\r\n if (sermon) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n originalSermonSeriesId: sermon.sermonSeriesId,\r\n sermonSeriesId: sermon.sermonSeriesId,\r\n originalSermonSeriesName: sermon.sermonSeriesName,\r\n sermonSeriesName: sermon.sermonSeriesName,\r\n title: sermon.title,\r\n intro: sermon.intro,\r\n body: sermon.body,\r\n type: sermon.type,\r\n language: sermon.language,\r\n targetAudience: sermon.targetAudience,\r\n scriptures: sermon.scriptures,\r\n tags: sermon.tags,\r\n date: new Date(sermon.date),\r\n status: sermon.status,\r\n url: sermon.url,\r\n rejectionNotes: sermon.rejectionNotes\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ContributionsService.getChurchServiceLanguages()\r\n .then(languages => this.setState({ languages: languages! }));\r\n\r\n ContributionsService.getSermonTypes()\r\n .then(types => this.setState({ types: types! }));\r\n\r\n ContributionsService.getChurchServiceTargetAudiences()\r\n .then(targetAudiences => this.setState({ targetAudiences: targetAudiences! }));\r\n\r\n ContributionsService.getAllSermonSeries()\r\n .then(sermonSeries => this.setState({ sermonSeries: sermonSeries! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.intro && this.state.body) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const sermonSeriesId = this.state.sermonSeriesId === 0 ? undefined : this.state.sermonSeriesId;\r\n const sermonSeriesName = this.state.sermonSeriesId === 0 ? '' : this.state.sermonSeriesName;\r\n const response = await ContributionsService.saveSermon(this.state.id, sermonSeriesId, sermonSeriesName, this.state.title, this.state.intro, this.state.body, this.state.language, this.state.targetAudience, this.state.type, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermon = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon\";\r\n this.props.history.replace(`/contributions/sermons/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermon.id,\r\n originalSermonSeriesId: sermon.sermonSeriesId,\r\n sermonSeriesId: sermon.sermonSeriesId,\r\n originalSermonSeriesName: sermon.sermonSeriesName,\r\n sermonSeriesName: sermon.sermonSeriesName,\r\n title: sermon.title,\r\n intro: sermon.intro,\r\n body: sermon.body,\r\n type: sermon.type,\r\n language: sermon.language,\r\n targetAudience: sermon.targetAudience,\r\n scriptures: sermon.scriptures,\r\n tags: sermon.tags,\r\n date: new Date(sermon.date),\r\n status: sermon.status,\r\n url: sermon.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n\r\n // If the user added a new series, we need to reload list\r\n ContributionsService.getAllSermonSeries()\r\n .then(sermonSeries => this.setState({ sermonSeries: sermonSeries! }));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true })\r\n ;\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n }\r\n\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n onSeriesChange(e: React.ChangeEvent) {\r\n if (parseInt(e.target.value, 10) === -1) {\r\n this.setState({ originalSermonSeriesId: this.state.sermonSeriesId, sermonSeriesName: '', sermonSeriesId: parseInt(e.target.value, 10) });\r\n }\r\n else {\r\n this.setState({ sermonSeriesId: parseInt(e.target.value, 10) });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n {!this.state.id &&\r\n \r\n Thank you for sharing your sermon, which will inspire others in the process of preaching.\r\n Please complete the following submission form to upload your sermon.\r\n \r\n }\r\n\r\n {this.state.sermonSeriesId === -1 &&\r\n \r\n this.setState({ sermonSeriesName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonSeriesTitle')}\r\n helperText={}\r\n />\r\n \r\n \r\n }\r\n\r\n {this.state.sermonSeriesId !== -1 && this.state.sermonSeries.length > 0 &&\r\n \r\n Sermon Series\r\n this.onSeriesChange(e as React.ChangeEvent)}\r\n inputProps={{\r\n name: 'sermonSeries',\r\n id: 'sermonSeries',\r\n }}\r\n >\r\n \r\n {this.state.sermonSeries.map(sermonSeries => {\r\n return (\r\n \r\n \r\n {sermonSeries.title}\r\n \r\n \r\n );\r\n })}\r\n \r\n Add to New Sermon Series\r\n \r\n \r\n \r\n }\r\n\r\n {this.state.sermonSeriesId !== -1 && this.state.sermonSeries.length === 0 &&\r\n this.setState({ sermonSeriesName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonSeriesId')}\r\n helperText={}\r\n />\r\n }\r\n\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n this.setState({ intro: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Description')}\r\n helperText={}\r\n />\r\n {this.state.types.length > 0 &&\r\n \r\n Type\r\n this.setState({ type: e.target.value as string })}\r\n inputProps={{\r\n name: 'type',\r\n id: 'type',\r\n }}\r\n >\r\n {this.state.types.map(type => {\r\n return (\r\n \r\n {type.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.types.length === 0 &&\r\n this.setState({ type: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Type')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.languages.length > 0 &&\r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n inputProps={{\r\n name: 'language',\r\n id: 'language',\r\n }}\r\n >\r\n {this.state.languages.map(language => {\r\n return (\r\n \r\n {language.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.languages.length === 0 &&\r\n this.setState({ language: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Language')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.targetAudiences.length > 0 &&\r\n \r\n Target Audience\r\n this.setState({ targetAudience: e.target.value as string })}\r\n inputProps={{\r\n name: 'targetAudience',\r\n id: 'targetAudience',\r\n }}\r\n >\r\n {this.state.targetAudiences.map(targetAudience => {\r\n return (\r\n \r\n {targetAudience.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.targetAudiences.length === 0 &&\r\n this.setState({ targetAudience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'TargetAudience')}\r\n helperText={}\r\n />\r\n }\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n this.setState({ body: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Body')}\r\n helperText={}\r\n />\r\n {this.state.rejectionNotes &&\r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n }\r\n {!this.state.id &&\r\n \r\n \r\n Your uploading of the above content to SermonCentral affirms it is your property, and you have appropriate permissions and rights to upload it. SermonCentral prohibits the posting of copyrighted material without proper and required permissions. If any portion of material is copyrighted please explicitly indicate it.\r\n \r\n
\r\n \r\n By clicking the submit button you are agreeing to the terms and conditions.\r\n \r\n
\r\n }\r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSermon));","import {Button,Chip, CircularProgress, FormControl, FormHelperText, IconButton, Input, InputAdornment, InputLabel, MenuItem, \r\n Paper, Select, Snackbar, SnackbarContent, Theme, createStyles, withStyles, WithStyles, TextField, Toolbar, Typography} from '@material-ui/core';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport SermonIllustration, { SermonIllustrationStatus } from '../../entities/SermonIllustration';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 15\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n title: string;\r\n body: string;\r\n language: string;\r\n category: string;\r\n targetAudience: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n languages: { name: string }[];\r\n categories: { name: string }[];\r\n targetAudiences: { id: number, name: string }[];\r\n rejectionNotes?: string;\r\n}\r\n\r\nclass EditSermonIllustration extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n title: '',\r\n body: '',\r\n language: 'English',\r\n category: '',\r\n targetAudience: 'All',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonIllustrationStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n languages: [],\r\n categories: [],\r\n targetAudiences: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Add Sermon Illustration\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon Illustration\";\r\n\r\n try {\r\n const sermonIllustration = await ContributionsService.getSermonIllustration(this.state.id);\r\n\r\n if (sermonIllustration) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n title: sermonIllustration.title,\r\n body: sermonIllustration.body,\r\n language: sermonIllustration.language,\r\n category: sermonIllustration.category,\r\n targetAudience: sermonIllustration.targetAudience,\r\n scriptures: sermonIllustration.scriptures,\r\n tags: sermonIllustration.tags,\r\n date: new Date(sermonIllustration.date),\r\n status: sermonIllustration.status,\r\n url: sermonIllustration.url,\r\n rejectionNotes: sermonIllustration.rejectionNotes\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ContributionsService.getChurchServiceLanguages()\r\n .then(languages => this.setState({ languages: languages! }));\r\n\r\n ContributionsService.getSermonIllustrationCategories()\r\n .then(categories => this.setState({ categories: categories! }));\r\n\r\n ContributionsService.getChurchServiceTargetAudiences()\r\n .then(targetAudiences => this.setState({ targetAudiences: targetAudiences! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.body) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ContributionsService.saveSermonIllustration(this.state.id, this.state.title, this.state.body, this.state.language, this.state.category, this.state.targetAudience, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermonIllustration = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon Illustration\";\r\n this.props.history.replace(`/contributions/sermon-illustrations/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonIllustration.id,\r\n title: sermonIllustration.title,\r\n body: sermonIllustration.body,\r\n language: sermonIllustration.language,\r\n category: sermonIllustration.category,\r\n targetAudience: sermonIllustration.targetAudience,\r\n scriptures: sermonIllustration.scriptures,\r\n tags: sermonIllustration.tags,\r\n date: new Date(sermonIllustration.date),\r\n status: sermonIllustration.status,\r\n url: sermonIllustration.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n document.getElementById('mainContainer')!.scrollIntoView();\r\n }\r\n }\r\n }\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon Illustration\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n {!this.state.id &&\r\n \r\n Thank you for sharing your sermon illustration, which will inspire others in the process of preaching.\r\n Please complete the following submission form to upload your sermon illustration.\r\n \r\n }\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n {this.state.categories.length > 0 &&\r\n \r\n Category\r\n this.setState({ category: e.target.value as string })}\r\n inputProps={{\r\n name: 'category',\r\n id: 'category',\r\n }}\r\n >\r\n {this.state.categories.map(category => {\r\n return (\r\n \r\n {category.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.categories.length === 0 &&\r\n this.setState({ category: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Category')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.languages.length > 0 &&\r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n inputProps={{\r\n name: 'language',\r\n id: 'language',\r\n }}\r\n >\r\n {this.state.languages.map(language => {\r\n return (\r\n \r\n {language.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.languages.length === 0 &&\r\n this.setState({ language: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Language')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.targetAudiences.length > 0 &&\r\n \r\n Target Audience\r\n this.setState({ targetAudience: e.target.value as string })}\r\n inputProps={{\r\n name: 'targetAudience',\r\n id: 'targetAudience',\r\n }}\r\n >\r\n {this.state.targetAudiences.map(targetAudience => {\r\n return (\r\n \r\n {targetAudience.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.targetAudiences.length === 0 &&\r\n this.setState({ targetAudience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'TargetAudience')}\r\n helperText={}\r\n />\r\n }\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n this.setState({ body: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Body')}\r\n helperText={}\r\n />\r\n {this.state.rejectionNotes &&\r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n }\r\n {!this.state.id &&\r\n \r\n \r\n Your uploading of the above content to SermonCentral affirms it is your property, and you have appropriate permissions and rights to upload it. SermonCentral prohibits the posting of copyrighted material without proper and required permissions. If any portion of material is copyrighted please explicitly indicate it.\r\n \r\n
\r\n \r\n By clicking the submit button you are agreeing to the terms and conditions.\r\n \r\n
\r\n }\r\n \r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSermonIllustration));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport SermonIllustration from '../../entities/SermonIllustration';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 10,\r\n borderTop: '1px solid #d90000'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n Rejected = 0,\r\n Approved = 1,\r\n Pending = 3,\r\n Deleted = 4,\r\n All = 5\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonIllustrations: SermonIllustration[];\r\n filteredSermonIllustrations: SermonIllustration[];\r\n visibleSermonIllustrationCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n showDeleteDialog: boolean;\r\n selectedSermonIllustrationIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass SermonIllustrations extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermonIllustrations: [],\r\n filteredSermonIllustrations: [],\r\n visibleSermonIllustrationCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermon Illustrations\";\r\n\r\n try {\r\n const sermonIllustrations = await ContributionsService.getSermonIllustrations();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('status') && params.get('status')!.match(/rejected/i)) {\r\n filterValue = FilterValue.Rejected;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/approved/i)) {\r\n filterValue = FilterValue.Approved;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/pending/i)) {\r\n filterValue = FilterValue.Pending;\r\n }\r\n\r\n if (sermonIllustrations) {\r\n this.setState({ sermonIllustrations, filterValue, loading: false }, this.updateFilteredSermonIllustrations);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermonIllustration() {\r\n if (this.state.selectedSermonIllustrationIdToDelete) {\r\n try {\r\n const response = await ContributionsService.deleteSermonIllustration(this.state.selectedSermonIllustrationIdToDelete);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonIllustrations = this.state.sermonIllustrations;\r\n sermonIllustrations = sermonIllustrations.filter(l => l.id !== this.state.selectedSermonIllustrationIdToDelete!);\r\n\r\n this.setState({\r\n sermonIllustrations,\r\n selectedSermonIllustrationIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon illustration was deleted'\r\n }, this.updateFilteredSermonIllustrations);\r\n\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermonIllustrations);\r\n }\r\n\r\n updateFilteredSermonIllustrations() {\r\n\r\n let filteredSermonIllustrations = this.state.sermonIllustrations;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== 5) {\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(s => +s.status === +this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermonIllustrations.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermonIllustrations });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermonIllustrations = this.state.filteredSermonIllustrations.slice(0, this.state.visibleSermonIllustrationCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermon Illustrations\r\n \r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && this.state.sermonIllustrations.length === this.state.filteredSermonIllustrations.length &&\r\n \r\n {this.state.sermonIllustrations.length} shared sermon illustration{this.state.sermonIllustrations.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && this.state.sermonIllustrations.length !== this.state.filteredSermonIllustrations.length &&\r\n \r\n {this.state.filteredSermonIllustrations.length} match{this.state.filteredSermonIllustrations.length === 1 ? '' : 'es'} of {this.state.sermonIllustrations.length} shared sermon illustration{this.state.sermonIllustrations.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Approved }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Approved ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Pending }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Pending ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Rejected }, this.updateFilteredSermonIllustrations)}>\r\n \r\n {this.state.filterValue === FilterValue.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonIllustrationCount: 10 }, this.updateFilteredSermonIllustrations)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermon illustrations yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonIllustrations.length > 0 && visibleSermonIllustrations.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermonIllustrations.length > 0 &&\r\n this.setState({ visibleSermonIllustrationCount: this.state.visibleSermonIllustrationCount + 10 })}\r\n hasMore={visibleSermonIllustrations.length < this.state.filteredSermonIllustrations.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermonIllustrations.map(illustration =>\r\n \r\n \r\n \r\n {new Date(illustration.date).toLocaleDateString()}\r\n \r\n \r\n {FilterValue[illustration.status]}\r\n \r\n \r\n\r\n \r\n {illustration.views} {illustration.views === 1 ? \"view\" : \"views\"} | {illustration.ratingCount} {illustration.ratingCount === 1 ? \"rating\" : \"ratings\"}\r\n {this.renderStars(illustration.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Scripture: {illustration.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {illustration.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n {illustration.rejectionNotes &&\r\n \r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon Illustration\r\n \r\n \r\n Are you sure you wish to delete this sermon illustration?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Add Illustration\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonIllustrations));","import {Button, Chip, CircularProgress , Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Divider, FormControl, \r\n FormHelperText, Hidden, IconButton, Input, InputAdornment, InputBase, InputLabel, List, ListItem, ListItemSecondaryAction, \r\n ListItemText, Paper, Snackbar, SnackbarContent, TextField, Toolbar, Typography, fade, Theme, createStyles, withStyles, \r\n WithStyles } from '@material-ui/core';\r\n\r\nimport { green } from '@material-ui/core/colors';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { Link } from 'react-router-dom';\r\nimport Sermon, { SermonStatus } from '../../entities/Sermon';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { ArrayHelper } from '../../utilities/ArrayHelper';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '900px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n link: {\r\n textDecoration: 'none',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n },\r\n sermonActions: {\r\n [theme.breakpoints.down('sm')]: {\r\n top: '18px',\r\n right: '0',\r\n position: 'relative'\r\n }\r\n },\r\n addExistingDialogContent: {\r\n width: '500px',\r\n [theme.breakpoints.down('xs')]: {\r\n width: 'auto'\r\n },\r\n },\r\n addExistingDialogList: {\r\n height: '400px',\r\n overflow: 'auto'\r\n },\r\n mainToolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string }>, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n id?: number;\r\n title: string;\r\n intro: string;\r\n scriptures: string[];\r\n addScriptureReferenceText: string;\r\n tags: string[];\r\n addTopicText: string;\r\n date: Date;\r\n status: number;\r\n url: string;\r\n updateSuccessMessage: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n sermonsInSeries?: Sermon[];\r\n showDeleteDialog: boolean;\r\n selectedSermonIdToDelete?: number;\r\n showAddExistingDialog: boolean;\r\n sermons: Sermon[];\r\n unassignedSermons: Sermon[];\r\n queryText: string;\r\n loadingSermons: boolean;\r\n}\r\n\r\nclass EditSeriesSermon extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n id: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n title: '',\r\n intro: '',\r\n scriptures: [],\r\n addScriptureReferenceText: '',\r\n tags: [],\r\n addTopicText: '',\r\n date: new Date(),\r\n status: SermonStatus.Pending,\r\n url: '',\r\n updateSuccessMessage: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n sermonsInSeries: undefined,\r\n showDeleteDialog: false,\r\n selectedSermonIdToDelete: undefined,\r\n showAddExistingDialog: false,\r\n sermons: [],\r\n unassignedSermons: [],\r\n queryText: '',\r\n loadingSermons: true\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Add Sermon Series\";\r\n\r\n if (this.state.id) {\r\n document.title = \"SermonCentral Account - Edit Sermon Series\";\r\n\r\n try {\r\n const sermonSeries = await ContributionsService.getSermonSeries(parseInt(this.props.match.params.id, 10));\r\n if (sermonSeries) {\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonSeries.id,\r\n title: sermonSeries.title,\r\n intro: sermonSeries.intro,\r\n scriptures: sermonSeries.scriptures,\r\n tags: sermonSeries.tags,\r\n url: sermonSeries.url,\r\n });\r\n\r\n const sermonsInSeries = await ContributionsService.getSermonSeriesSermons(sermonSeries.id);\r\n if (sermonsInSeries) {\r\n this.setState({ sermonsInSeries });\r\n }\r\n\r\n const sermons = await ContributionsService.getSermons();\r\n if (sermons) {\r\n this.setState({ sermons, unassignedSermons: sermons.filter(s => !s.sermonSeriesId), loadingSermons: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false, enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.title && this.state.intro) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ContributionsService.saveSermonSeries(this.state.id, this.state.title, this.state.intro, this.state.tags, this.state.scriptures);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n const sermonSeries = response.data;\r\n\r\n document.title = \"SermonCentral Account - Edit Sermon Series\";\r\n this.props.history.replace(`/contributions/sermon-series/edit/${response.data.id}`);\r\n\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n id: sermonSeries.id,\r\n title: sermonSeries.title,\r\n intro: sermonSeries.intro,\r\n scriptures: sermonSeries.scriptures,\r\n tags: sermonSeries.tags,\r\n url: sermonSeries.url,\r\n updateSuccessMessage: response.message,\r\n showUpdateSuccessMessage: true,\r\n errors: []\r\n });\r\n\r\n const sermonsInSeries = await ContributionsService.getSermonSeriesSermons(sermonSeries.id);\r\n if (sermonsInSeries) {\r\n this.setState({ sermonsInSeries });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n addScriptureReference() {\r\n\r\n if (this.state.addScriptureReferenceText.length > 0) {\r\n const updatedScriptures = ArrayHelper.addString(this.state.addScriptureReferenceText, this.state.scriptures);\r\n this.setState({\r\n scriptures: updatedScriptures,\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addScriptureReferenceText: ''\r\n });\r\n }\r\n }\r\n\r\n removeScriptureReference(scriptureReference: string) {\r\n\r\n if (scriptureReference.length > 0) {\r\n\r\n let scriptures = ArrayHelper.removeString(scriptureReference, this.state.scriptures);\r\n this.setState({ scriptures });\r\n }\r\n }\r\n\r\n addTopic() {\r\n\r\n if (this.state.addTopicText.length > 0) {\r\n const updatedTags = ArrayHelper.addString(this.state.addTopicText, this.state.tags);\r\n this.setState({\r\n tags: updatedTags,\r\n addTopicText: ''\r\n });\r\n }\r\n else {\r\n this.setState({\r\n addTopicText: ''\r\n });\r\n }\r\n }\r\n\r\n removeTopic(topic: string) {\r\n\r\n if (topic.length > 0) {\r\n let tags = ArrayHelper.removeString(topic, this.state.tags);\r\n this.setState({ tags });\r\n }\r\n }\r\n\r\n async deleteSermon() {\r\n if (this.state.selectedSermonIdToDelete) {\r\n try {\r\n const response = await ContributionsService.removeSermonSeriesSermon(this.state.selectedSermonIdToDelete, this.state.id!);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonsInSeries = this.state.sermonsInSeries;\r\n sermonsInSeries = sermonsInSeries!.filter(l => l.id !== this.state.selectedSermonIdToDelete);\r\n\r\n let sermons = this.state.sermons;\r\n let sermon = sermons.find(s => s.id === this.state.selectedSermonIdToDelete!)!;\r\n sermon.sermonSeriesId = undefined;\r\n\r\n this.setState({\r\n unassignedSermons: sermons.filter(s => !s.sermonSeriesId),\r\n sermonsInSeries,\r\n selectedSermonIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon was removed from the series',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async moveSermon(sermonId: number, index: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let sermonsInSeries = this.state.sermonsInSeries;\r\n const currentIndex = sermonsInSeries!.findIndex(f => f.id === sermonId);\r\n let sermon = sermonsInSeries![currentIndex];\r\n\r\n const response = await ContributionsService.updateSermonSeriesSermon(sermonId, this.state.id!, index);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n sermon = response.data;\r\n\r\n sermonsInSeries!.splice(currentIndex, 1);\r\n sermonsInSeries!.splice(index, 0, sermon);\r\n\r\n this.setState({\r\n sermonsInSeries,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Sermon moved.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async addSermonToSeries(id: number) {\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n const response = await ContributionsService.addSermonSeriesSermon(id, this.state.id!);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonsInSeries = this.state.sermonsInSeries!;\r\n sermonsInSeries.push(response.data);\r\n\r\n let sermons = this.state.sermons;\r\n let sermon = sermons.find(s => s.id === id)!;\r\n sermon.sermonSeriesId = this.state.id;\r\n\r\n this.setState({\r\n unassignedSermons: sermons.filter(s => !s.sermonSeriesId),\r\n showAddExistingDialog: false,\r\n sermonsInSeries,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Sermon added to Series.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddExistingDialog: false });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n this.props.history.goBack()}>\r\n \r\n \r\n \r\n {this.state.id ? 'Edit' : 'Share a new'} Sermon Series\r\n \r\n {this.state.url &&\r\n \r\n }\r\n \r\n
this.handleFormSubmit(e)}>\r\n this.setState({ title: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Title')}\r\n helperText={}\r\n />\r\n this.setState({ intro: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Summary')}\r\n helperText={}\r\n />\r\n \r\n Scripture References (At least 1 scripture reference must be added)\r\n this.setState({ addScriptureReferenceText: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={this.state.addScriptureReferenceText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.scriptures.map(scriptureReference => {\r\n return (\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n Topics (At least 2 topics must be added)\r\n this.setState({ addTopicText: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={this.state.addTopicText.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n
\r\n {this.state.tags.map(topic => {\r\n return (\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n );\r\n })}\r\n
\r\n \r\n \r\n {!this.state.sermonsInSeries && this.state.id &&\r\n
\r\n \r\n
\r\n \r\n Loading Sermons...\r\n \r\n
\r\n }\r\n {this.state.sermonsInSeries && this.state.id &&\r\n
\r\n \r\n Sermons in Series ({this.state.sermonsInSeries.length.toLocaleString()})\r\n \r\n \r\n \r\n {this.state.sermonsInSeries.map((sermon, index) =>\r\n <>\r\n \r\n \r\n \r\n {index > 0 &&\r\n this.moveSermon(sermon.id, index - 1)}>\r\n \r\n \r\n }\r\n {index < this.state.sermonsInSeries!.length - 1 &&\r\n this.moveSermon(sermon.id, index + 1)}>\r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ selectedSermonIdToDelete: sermon.id, showDeleteDialog: true })}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n }\r\n this.setState({ showDeleteDialog: false, selectedSermonIdToDelete: undefined })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Remove Sermon from Series\r\n \r\n \r\n Are you sure you wish to remove this sermon from this series? This will not delete the sermon.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showAddExistingDialog: false })}\r\n aria-labelledby=\"add-sermons-dialog-title\"\r\n aria-describedby=\"add-sermons-dialog-description\"\r\n >\r\n Select a sermon to add\r\n \r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value })}\r\n />\r\n
\r\n {this.state.loadingSermons &&\r\n
\r\n \r\n
\r\n \r\n Loading Sermons...\r\n \r\n
\r\n }\r\n {!this.state.loadingSermons && this.state.unassignedSermons.length === 0 &&\r\n \r\n \r\n
\r\n You don't have any sermons that aren't already part of sermon series.\r\n
\r\n }\r\n {this.state.unassignedSermons.length > 0 && this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).length === 0 &&\r\n \r\n \r\n
\r\n There are no sermons that match your search.\r\n
\r\n }\r\n {this.state.unassignedSermons.length > 0 && this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).length > 0 &&\r\n \r\n {this.state.unassignedSermons.filter(s => s.title.toLowerCase().indexOf(this.state.queryText) >= 0).slice(0, 20).map(sermon =>\r\n \r\n \r\n \r\n this.addSermonToSeries(sermon.id)}>\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditSeriesSermon));","import Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Breakpoint } from '@material-ui/core/styles/createBreakpoints';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TablePagination from '@material-ui/core/TablePagination';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport withWidth from '@material-ui/core/withWidth';\r\nimport AccessTimeIcon from '@material-ui/icons/AccessTime';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport LanguageIcon from '@material-ui/icons/Language';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport axios from 'axios';\r\nimport * as d3 from 'd3';\r\nimport * as d3GeoProjection from 'd3-geo-projection';\r\nimport * as React from 'react';\r\nimport * as topojson from \"topojson-client\";\r\nimport Country from '../../entities/Country';\r\nimport Sermon from '../../entities/Sermon';\r\nimport SermonIllustration from '../../entities/SermonIllustration';\r\nimport USState from '../../entities/USState';\r\nimport { ContributionsService, SermonIllustrationRegionViewSummary, SermonRegionViewSummary } from '../../services/ContributionsService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n gridContainer: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 25,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 25,\r\n ['@media (max-width: 1700px)']: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 10,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 10,\r\n },\r\n ['@media (max-width: 1500px)']: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingRight: theme.spacing() * 5,\r\n paddingBottom: theme.spacing() * 2,\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n padding: 0\r\n }\r\n },\r\n grid: {\r\n flexGrow: 1\r\n },\r\n mapCard: {\r\n height: '433px',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n }\r\n },\r\n mapContainer: {\r\n marginTop: '10px',\r\n display: 'inline-block',\r\n position: 'relative',\r\n paddingBottom: '100%',\r\n verticalAlign: 'top',\r\n overflow: 'hidden',\r\n height: \"100%\",\r\n width: '100%'\r\n },\r\n worldMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"#9d9d9d\",\r\n strokeWidth: \".5px\",\r\n opacity: 0.8\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n },\r\n stateMap: {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n \"& path\": {\r\n strokeLinejoin: \"round\",\r\n strokeLinecap: \"round\",\r\n fill: \"rgb(163, 219, 241)\",\r\n stroke: \"#9d9d9d\",\r\n strokeWidth: \".5px\",\r\n opacity: 0.8\r\n },\r\n \"& .names\": {\r\n fill: \"none\",\r\n stroke: \"#fff\",\r\n strokeLinejoin: \"round\"\r\n },\r\n },\r\n mapLoader: {\r\n textAlign: 'center'\r\n },\r\n tableWrapper: {\r\n overflowX: 'auto',\r\n },\r\n tableToolbar: {\r\n height: '2rem'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n regionContainer: {\r\n float: 'right'\r\n },\r\n timeframeContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n width: Breakpoint;\r\n}\r\n\r\ntype State = {\r\n anchorRegion: undefined;\r\n region: string;\r\n anchorTimeframe: undefined;\r\n timeframe: string;\r\n sermons: Sermon[] | undefined;\r\n sermonIllustrations: SermonIllustration[] | undefined;\r\n countries: Country[] | undefined;\r\n topRegions: { name: string, views: number, percent: number }[] | undefined,\r\n topRegionsQueryText: string;\r\n topRegionsOrderBy: string;\r\n topRegionsOrder: string;\r\n topRegionsRowsPerPage: number;\r\n topRegionsPage: number;\r\n topContributions: { id: number, name: string, type: string, date: Date, views: number, percent: number }[] | undefined,\r\n topContributionsQueryText: string;\r\n topContributionsOrderBy: string;\r\n topContributionsOrder: string;\r\n topContributionsRowsPerPage: number;\r\n topContributionsPage: number;\r\n usStates: USState[] | undefined;\r\n sermonRegionViewSummaries: SermonRegionViewSummary[] | undefined;\r\n sermonIllustrationRegionViewSummaries: SermonIllustrationRegionViewSummary[] | undefined;\r\n loadingMap: boolean;\r\n worldMapData: any;\r\n usMapData: any;\r\n errors: FieldValidationError[];\r\n};\r\n\r\nclass Home extends React.Component {\r\n\r\n private mapRef: SVGGElement | null = null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n anchorRegion: undefined,\r\n region: 'world',\r\n anchorTimeframe: undefined,\r\n timeframe: 'last7days',\r\n sermons: undefined,\r\n sermonIllustrations: undefined,\r\n countries: undefined,\r\n topRegions: undefined,\r\n topRegionsQueryText: '',\r\n topRegionsOrderBy: 'views',\r\n topRegionsOrder: 'desc',\r\n topRegionsRowsPerPage: 10,\r\n topRegionsPage: 0,\r\n topContributions: undefined,\r\n topContributionsQueryText: '',\r\n topContributionsOrderBy: 'views',\r\n topContributionsOrder: 'desc',\r\n topContributionsRowsPerPage: 10,\r\n topContributionsPage: 0,\r\n usStates: undefined,\r\n sermonRegionViewSummaries: undefined,\r\n sermonIllustrationRegionViewSummaries: undefined,\r\n loadingMap: true,\r\n worldMapData: undefined,\r\n usMapData: undefined,\r\n errors: [],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Contribution Dashboard\";\r\n\r\n ContributionsService.getSermons()\r\n .then((sermons) => {\r\n this.setState({ sermons: sermons || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getSermonIllustrations()\r\n .then((sermonIllustrations) => {\r\n this.setState({ sermonIllustrations: sermonIllustrations || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getCountries()\r\n .then((countries) => {\r\n this.setState({ countries: countries || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getUSStates()\r\n .then((usStates) => {\r\n this.setState({ usStates: usStates || [] }, this.updateMap);\r\n });\r\n\r\n this.updateRegion();\r\n\r\n axios.get('/data/world-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n\r\n // Request of shadow-gm to remove Antartica from the map, done by country code (ATA)\r\n let data = response.data;\r\n data.features = data.features.filter((f: any) => f.id !== 'ATA');\r\n this.setState({ worldMapData: data }, this.updateMap);\r\n });\r\n\r\n axios.get('/data/usStates-data.json', { headers: { Pragma: 'no-cache' } })\r\n .then(response => {\r\n this.setState({ usMapData: response.data }, this.updateMap);\r\n });\r\n }\r\n\r\n updateRegion() {\r\n\r\n this.setState({\r\n loadingMap: true,\r\n sermonRegionViewSummaries: undefined,\r\n sermonIllustrationRegionViewSummaries: undefined,\r\n topRegionsQueryText: '',\r\n topRegionsOrder: 'desc',\r\n topRegionsOrderBy: 'views',\r\n topRegionsPage: 0,\r\n topRegionsRowsPerPage: 10,\r\n topContributionsQueryText: '',\r\n topContributionsOrder: 'desc',\r\n topContributionsOrderBy: 'views',\r\n topContributionsPage: 0,\r\n topContributionsRowsPerPage: 10\r\n }, () => { this.updateTopRegions(); this.updateTopContributions(); });\r\n\r\n ContributionsService.getSermonRegionViewSummaries(this.state.timeframe)\r\n .then((sermonRegionViewSummaries) => {\r\n this.setState({ sermonRegionViewSummaries: sermonRegionViewSummaries || [] }, this.updateMap);\r\n });\r\n\r\n ContributionsService.getSermonIllustrationRegionViewSummaries(this.state.timeframe)\r\n .then((sermonIllustrationRegionViewSummaries) => {\r\n this.setState({ sermonIllustrationRegionViewSummaries: sermonIllustrationRegionViewSummaries || [] }, this.updateMap);\r\n });\r\n }\r\n\r\n updateMap() {\r\n\r\n if (!this.mapRef) {\r\n return;\r\n }\r\n\r\n if (this.state.region === 'us') {\r\n this.updateUSMap();\r\n }\r\n else {\r\n this.updateWorldMap();\r\n }\r\n\r\n this.updateTopRegions();\r\n this.updateTopContributions();\r\n }\r\n\r\n updateTopRegions() {\r\n\r\n this.setState({ topRegions: undefined });\r\n\r\n if (!(this.state.countries && this.state.usStates && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n if (this.state.region === 'us') {\r\n this.updateTopStates();\r\n }\r\n else {\r\n this.updateTopCountries();\r\n }\r\n }\r\n\r\n updateTopStates() {\r\n\r\n let filteredUSStates = this.state.usStates!;\r\n\r\n if (this.state.topRegionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topRegionsQueryText.toLowerCase();\r\n filteredUSStates = filteredUSStates.filter(c => {\r\n\r\n if (c.name && c.name.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n const topUSStates = filteredUSStates.map(c => {\r\n\r\n const name = c.name;\r\n let views = 0;\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === c.name);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === c.name);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n name,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const sortGreaterThanValue = this.state.topRegionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topRegionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topRegionsOrderBy;\r\n\r\n topUSStates.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n this.setState({ topRegions: topUSStates });\r\n }\r\n\r\n updateTopCountries() {\r\n\r\n let filteredCountries = this.state.countries!;\r\n\r\n if (this.state.topRegionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topRegionsQueryText.toLowerCase();\r\n filteredCountries = filteredCountries.filter(c => {\r\n\r\n if (c.name && c.name.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n const topCountries = filteredCountries.map(c => {\r\n\r\n const name = c.name;\r\n let views = 0;\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === c.twoCharCode);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === c.twoCharCode);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n name,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const sortGreaterThanValue = this.state.topRegionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topRegionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topRegionsOrderBy;\r\n\r\n topCountries.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ topRegions: topCountries });\r\n }\r\n\r\n updateTopContributions() {\r\n\r\n this.setState({ topContributions: undefined });\r\n\r\n if (!(this.state.sermons && this.state.sermonIllustrations && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n const grandTotalViews = this.getTotalViews()!;\r\n\r\n let filteredSermons = this.state.sermons!;\r\n\r\n if (this.state.topContributionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topContributionsQueryText.toLowerCase();\r\n filteredSermons = filteredSermons.filter(c => {\r\n\r\n if (c.title && c.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const topSermons = filteredSermons.map(c => {\r\n\r\n const id = c.id;\r\n const name = c.title;\r\n const type = 'Sermon';\r\n const date = new Date(c.date);\r\n let views = 0;\r\n\r\n let filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.sermonId === c.id);\r\n\r\n if (this.state.region === 'us') {\r\n filteredSermonViews = filteredSermonViews.filter(s => s.countryCode === 'US');\r\n }\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n id,\r\n name,\r\n type,\r\n date,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n let filteredSermonIllustrations = this.state.sermonIllustrations!;\r\n\r\n if (this.state.topContributionsQueryText.length >= 0) {\r\n\r\n const query = this.state.topContributionsQueryText.toLowerCase();\r\n filteredSermonIllustrations = filteredSermonIllustrations.filter(c => {\r\n\r\n if (c.title && c.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const topSermonIllustrations = filteredSermonIllustrations.map(c => {\r\n\r\n const id = c.id;\r\n const name = c.title;\r\n const type = 'Illustration';\r\n const date = new Date(c.date);\r\n let views = 0;\r\n\r\n let filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.sermonIllustrationId === c.id);\r\n\r\n if (this.state.region === 'us') {\r\n filteredSermonIllustrationViews = filteredSermonIllustrationViews.filter(s => s.countryCode === 'US');\r\n }\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const percent = +((views / grandTotalViews) * 100).toFixed(1);\r\n return {\r\n id,\r\n name,\r\n type,\r\n date,\r\n views,\r\n percent\r\n };\r\n });\r\n\r\n const topContributions = topSermons.concat(topSermonIllustrations);\r\n\r\n const sortGreaterThanValue = this.state.topContributionsOrder === 'asc' ? 1 : -1;\r\n const sortLessThanValue = this.state.topContributionsOrder === 'asc' ? -1 : 1;\r\n const fieldName = this.state.topContributionsOrderBy;\r\n\r\n topContributions.sort((c1, c2) => {\r\n\r\n let c1FieldValue = c1[fieldName];\r\n if (typeof c1FieldValue === 'string') {\r\n c1FieldValue = c1FieldValue.toLowerCase();\r\n }\r\n\r\n let c2FieldValue = c2[fieldName];\r\n if (typeof c2FieldValue === 'string') {\r\n c2FieldValue = c2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof c1FieldValue === 'string' && typeof c2FieldValue === 'string') {\r\n const value = c1FieldValue.localeCompare(c2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (c1FieldValue > c2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (c1FieldValue < c2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ topContributions: topContributions });\r\n }\r\n\r\n updateUSMap() {\r\n\r\n var classes = this.props.classes;\r\n\r\n if (!(this.state.usMapData && this.state.usStates && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n this.state.usMapData.objects.states.geometries.forEach((geometry: any) => {\r\n\r\n let views: number = 0;\r\n const usState = this.state.usStates!.filter(c => c.postalAbbreviation === geometry.code)[0];\r\n if (!usState) {\r\n geometry.views = views;\r\n return;\r\n }\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === usState.name);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === 'US' && s.regionName === usState.name);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n geometry.views = views;\r\n });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3.geoAlbersUsa();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"-150 0 1200 600\")\r\n .attr('class', classes.stateMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(topojson.feature(this.state.usMapData, this.state.usMapData.objects.states).features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n return color(geometry.views);\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n const geometry = component.state.usMapData.objects.states.geometries.find((geo: any) => geo.id === d.id);\r\n return geometry.name + ' - ' + ('toLocaleString' in Number ? geometry.views.toLocaleString() : geometry.views.toString(10)) + ' view' + (geometry.views !== 1 ? 's' : '');\r\n });\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.usMapData, this.state.usMapData.objects.states, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n updateWorldMap() {\r\n\r\n var classes = this.props.classes;\r\n\r\n if (!(this.state.worldMapData && this.state.countries && this.state.sermonRegionViewSummaries && this.state.sermonIllustrationRegionViewSummaries)) {\r\n return;\r\n }\r\n\r\n this.setState({ loadingMap: true });\r\n\r\n this.state.worldMapData.features.forEach((feature: any) => {\r\n\r\n let views: number = 0;\r\n const country = this.state.countries!.filter(c => c.threeCharCode === feature.id)[0];\r\n if (!country) {\r\n feature.views = views;\r\n return;\r\n }\r\n\r\n const filteredSermonViews = this.state.sermonRegionViewSummaries!.filter(s => s.countryCode === country.twoCharCode);\r\n\r\n if (filteredSermonViews.length > 0) {\r\n views += filteredSermonViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n const filteredSermonIllustrationViews = this.state.sermonIllustrationRegionViewSummaries!.filter(s => s.countryCode === country.twoCharCode);\r\n\r\n if (filteredSermonIllustrationViews.length > 0) {\r\n views += filteredSermonIllustrationViews\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n feature.views = views;\r\n });\r\n\r\n const rangeArray: Array = [];\r\n\r\n rangeArray.push('#ffffff');\r\n rangeArray.push('#cde8f3');\r\n rangeArray.push('#b4dcee');\r\n rangeArray.push('#9bd1e8');\r\n rangeArray.push('#82c6e3');\r\n rangeArray.push('#69badd');\r\n rangeArray.push('#50afd7');\r\n rangeArray.push('#36a3d2');\r\n rangeArray.push('#1d98cc');\r\n rangeArray.push('#058dc7');\r\n rangeArray.push('#0376ae');\r\n rangeArray.push('#026096');\r\n rangeArray.push('#01497e');\r\n rangeArray.push('#003366');\r\n\r\n const color = d3.scaleQuantile()\r\n .domain([0, 1, 5, 10, 20, 50, 100, 250, 400, 800, 1500, 4000, 10000, 20000])\r\n .range(rangeArray);\r\n\r\n const component = this;\r\n const svg = d3.select(this.mapRef);\r\n svg.html(null);\r\n\r\n const projection = d3GeoProjection.geoRobinson();\r\n var path: any = d3.geoPath(projection);\r\n\r\n svg.attr(\"preserveAspectRatio\", \"xMidYMid meet\")\r\n .attr(\"viewBox\", \"0 0 1000 600\")\r\n .attr('class', classes.worldMap)\r\n .append(\"g\")\r\n .selectAll(\"path\")\r\n .data(this.state.worldMapData.features)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", path)\r\n .style('fill', (d: any) => {\r\n return color(d.views);\r\n })\r\n .on('click', function (d: any) {\r\n if (d.id === \"USA\") {\r\n component.setState({ region: 'us' }, component.updateMap);\r\n }\r\n })\r\n .append('svg:title')\r\n .text((d: any) => {\r\n return d.properties.name + ' - ' + ('toLocaleString' in Number ? d.views.toLocaleString() : d.views.toString(10)) + ' view' + (d.views !== 1 ? 's' : '');\r\n });\r\n\r\n svg.append(\"path\")\r\n .datum(topojson.mesh(this.state.worldMapData, this.state.worldMapData.features, (a: any, b: any) => a.id !== b.id))\r\n .attr(\"class\", \"names\")\r\n .attr(\"d\", path);\r\n\r\n this.setState({ loadingMap: false });\r\n }\r\n\r\n getTimeframeDisplayName(timeframe: string) {\r\n\r\n switch (timeframe) {\r\n case 'realtime':\r\n return 'Real-Time';\r\n\r\n case 'last7days':\r\n default:\r\n return 'Last 7 Days';\r\n\r\n case 'last30days':\r\n return 'Last 30 Days';\r\n\r\n case 'last60days':\r\n return 'Last 60 Days';\r\n\r\n case 'last90days':\r\n return 'Last 90 Days';\r\n\r\n case 'last180days':\r\n return 'Last 180 Days';\r\n }\r\n }\r\n\r\n getTotalViews(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries || !this.state.sermonIllustrationRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n if (this.state.sermonRegionViewSummaries.length > 0) {\r\n\r\n retVal += this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n if (this.state.sermonIllustrationRegionViewSummaries.length > 0) {\r\n\r\n retVal += this.state.sermonIllustrationRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.viewCount)\r\n .reduce((totalViews, currentViews) => totalViews + currentViews);\r\n }\r\n\r\n return retVal;\r\n }\r\n\r\n getSermonsViewed(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n retVal += this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => s.sermonId)\r\n .filter((value, index, self) => self.indexOf(value) === index)\r\n .length;\r\n\r\n return retVal;\r\n }\r\n\r\n getRegionsReached(): number | undefined {\r\n\r\n if (!this.state.sermonRegionViewSummaries || !this.state.sermonIllustrationRegionViewSummaries) {\r\n return undefined;\r\n }\r\n\r\n let retVal: number = 0;\r\n\r\n const sermonRegions = this.state.sermonRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => this.state.region === 'us' ? s.regionName : s.countryCode)\r\n .filter((region, index, self) => self.indexOf(region) === index);\r\n\r\n const sermonIllustrationRegions = this.state.sermonIllustrationRegionViewSummaries.filter(s => this.state.region === 'us' ? s.countryCode === 'US' : true)\r\n .map(s => this.state.region === 'us' ? s.regionName : s.countryCode)\r\n .filter((region, index, self) => self.indexOf(region) === index);\r\n\r\n retVal += sermonRegions.concat(sermonIllustrationRegions).filter((region, index, self) => self.indexOf(region) === index).length;\r\n\r\n return retVal;\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortTopRegionsColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.topRegionsOrder === 'asc' ? 'desc' : 'asc';\r\n if (orderBy !== this.state.topRegionsOrderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ topRegionsOrder: sortOrder, topRegionsOrderBy: orderBy }, this.updateTopRegions);\r\n }\r\n\r\n sortTopContributionsColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.topContributionsOrder === 'asc' ? 'desc' : 'asc';\r\n if (orderBy !== this.state.topContributionsOrderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ topContributionsOrder: sortOrder, topContributionsOrderBy: orderBy }, this.updateTopContributions);\r\n }\r\n\r\n renderTotalViewsCard() {\r\n\r\n const totalViews = this.getTotalViews();\r\n return (\r\n \r\n \r\n \r\n Total Views\r\n \r\n \r\n {totalViews !== undefined ? ('toLocaleString' in Number ? totalViews.toLocaleString() : totalViews.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderSermonsViewedCard() {\r\n\r\n const sermonsViewed = this.getSermonsViewed();\r\n return (\r\n \r\n \r\n \r\n Sermons Viewed\r\n \r\n \r\n {sermonsViewed !== undefined ? ('toLocaleString' in Number ? sermonsViewed.toLocaleString() : sermonsViewed.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderRegionsReachedCard() {\r\n\r\n const regionsReached = this.getRegionsReached();\r\n\r\n return (\r\n \r\n \r\n \r\n {this.state.region === 'world' ? 'Countries' : 'States'} Reached\r\n \r\n \r\n {regionsReached !== undefined ? ('toLocaleString' in Number ? regionsReached.toLocaleString() : regionsReached.toString(10)) : '...'}\r\n \r\n \r\n {this.getTimeframeDisplayName(this.state.timeframe)}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n renderMapCard() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n {this.state.loadingMap &&\r\n
\r\n \r\n
\r\n \r\n Loading Map...\r\n \r\n
\r\n }\r\n
\r\n { this.mapRef = input; }} />\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderTopCountriesCard() {\r\n\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n Top {this.state.region === 'us' ? 'States' : 'Countries'}\r\n \r\n
\r\n
\r\n {this.state.topRegions &&\r\n
\r\n
\r\n \r\n
\r\n this.setState({ topRegionsQueryText: e.target.value }, this.updateTopRegions)}\r\n />\r\n
\r\n }\r\n \r\n {!this.state.topRegions &&\r\n
\r\n \r\n
\r\n \r\n Loading {this.state.region === 'us' ? 'Top States' : 'Top Countries'}...\r\n \r\n
\r\n }\r\n {this.state.topRegions && this.state.topRegions.length === 0 &&\r\n
\r\n \r\n No {this.state.region === 'us' ? 'states' : 'countries'} found.\r\n \r\n
\r\n }\r\n {this.state.topRegions && this.state.topRegions.length > 0 &&\r\n \r\n
\r\n \r\n \r\n \r\n \r\n this.sortTopRegionsColumn('name')}\r\n >\r\n {this.state.region === 'us' ? 'State' : 'Country'}\r\n \r\n \r\n \r\n this.sortTopRegionsColumn('views')}\r\n >\r\n Views\r\n \r\n \r\n \r\n this.sortTopRegionsColumn('percent')}\r\n >\r\n Percent\r\n \r\n \r\n \r\n \r\n \r\n {this.state.topRegions.slice(this.state.topRegionsPage * this.state.topRegionsRowsPerPage, this.state.topRegionsPage * this.state.topRegionsRowsPerPage + this.state.topRegionsRowsPerPage).map(c =>\r\n \r\n \r\n {('toLocaleString' in Number ? c.views.toLocaleString() : c.views.toString(10))}\r\n {('toLocaleString' in Number ? (c.percent ? c.percent.toLocaleString() : 0) : (c.percent ? c.percent.toString(10) : 0))}%\r\n \r\n )}\r\n \r\n
\r\n
\r\n this.setState({ topRegionsPage: page })}\r\n onChangeRowsPerPage={(e) => this.setState({ topRegionsRowsPerPage: parseInt(e.target.value, 10) })}\r\n />\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n renderTopContributionsCard() {\r\n\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n Top Contributions\r\n \r\n
\r\n
\r\n {this.state.topContributions &&\r\n
\r\n
\r\n \r\n
\r\n this.setState({ topContributionsQueryText: e.target.value }, this.updateTopContributions)}\r\n />\r\n
\r\n }\r\n \r\n {!this.state.topContributions &&\r\n
\r\n \r\n
\r\n \r\n Loading Top Contributions...\r\n \r\n
\r\n }\r\n {this.state.topContributions && this.state.topContributions.length === 0 &&\r\n
\r\n \r\n No contributions found.\r\n \r\n
\r\n }\r\n {this.state.topContributions && this.state.topContributions.length > 0 &&\r\n \r\n
\r\n \r\n \r\n \r\n \r\n this.sortTopContributionsColumn('name')}\r\n >\r\n Name\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('type')}\r\n >\r\n Contribution Type\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('date')}\r\n >\r\n Date Contributed\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('views')}\r\n >\r\n Views\r\n \r\n \r\n \r\n this.sortTopContributionsColumn('percent')}\r\n >\r\n Percent\r\n \r\n \r\n \r\n \r\n \r\n {this.state.topContributions.slice(this.state.topContributionsPage * this.state.topContributionsRowsPerPage, this.state.topContributionsPage * this.state.topContributionsRowsPerPage + this.state.topContributionsRowsPerPage).map(c =>\r\n \r\n \r\n {c.type}\r\n {('toLocaleDateString' in Date.prototype ? c.date.toLocaleDateString() : c.date.toString())}\r\n {('toLocaleString' in Number ? c.views.toLocaleString() : c.views.toString(10))}\r\n {('toLocaleString' in Number ? (c.percent ? c.percent.toLocaleString() : 0) : (c.percent ? c.percent.toString(10) : 0))}%\r\n \r\n )}\r\n \r\n
\r\n
\r\n this.setState({ topContributionsPage: page })}\r\n onChangeRowsPerPage={(e) => this.setState({ topContributionsRowsPerPage: parseInt(e.target.value, 10) })}\r\n />\r\n
\r\n }\r\n \r\n );\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Contribution Dashboard\r\n \r\n
\r\n
\r\n
\r\n this.setState({ anchorRegion: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorRegion: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorRegion: undefined, region: 'world' }, this.updateMap)}>\r\n \r\n {this.state.region === 'world' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorRegion: undefined, region: 'us' }, this.updateMap)}>\r\n \r\n {this.state.region === 'us' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n this.setState({ anchorTimeframe: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorTimeframe: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorTimeframe: undefined, timeframe: 'realtime' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'realtime' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last7days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last7days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last30days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last30days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last60days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last60days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last90days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last90days' ? : }\r\n \r\n \r\n \r\n this.setState({ anchorTimeframe: undefined, timeframe: 'last180days' }, this.updateRegion)}>\r\n \r\n {this.state.timeframe === 'last180days' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n
\r\n \r\n \r\n {this.renderMapCard()}\r\n \r\n \r\n \r\n \r\n {this.renderTotalViewsCard()}\r\n \r\n \r\n {this.renderSermonsViewedCard()}\r\n \r\n \r\n {this.renderRegionsReachedCard()}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {this.renderTopCountriesCard()}\r\n \r\n \r\n {this.renderTopContributionsCard()}\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withWidth()(withStyles(styles)(Home)));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport Sermon from '../../entities/Sermon';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n rejectionNotes: {\r\n paddingTop: 10,\r\n borderTop: '1px solid #d90000'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n Rejected = 4,\r\n Approved = 3,\r\n Pending = 1,\r\n Deleted = 5,\r\n All = 0\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermons: Sermon[];\r\n filteredSermons: Sermon[];\r\n visibleSermonCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n showDeleteDialog: boolean;\r\n selectedSermonIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Sermons extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermons: [],\r\n filteredSermons: [],\r\n visibleSermonCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermons\";\r\n\r\n try {\r\n const sermons = await ContributionsService.getSermons();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('status') && params.get('status')!.match(/rejected/i)) {\r\n filterValue = FilterValue.Rejected;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/approved/i)) {\r\n filterValue = FilterValue.Approved;\r\n }\r\n else if (params.get('status') && params.get('status')!.match(/pending/i)) {\r\n filterValue = FilterValue.Pending;\r\n }\r\n\r\n if (sermons) {\r\n this.setState({ sermons, filterValue, loading: false }, this.updateFilteredSermons);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermon() {\r\n if (this.state.selectedSermonIdToDelete) {\r\n try {\r\n const sermon = this.state.sermons.find(s => s.id === this.state.selectedSermonIdToDelete)\r\n if(sermon === undefined)\r\n return;\r\n \r\n const response = await ContributionsService.deleteSermon(sermon.id, sermon.sermonSeriesId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermons = this.state.sermons;\r\n sermons = sermons.filter(l => l.id !== this.state.selectedSermonIdToDelete!);\r\n\r\n this.setState({\r\n sermons,\r\n selectedSermonIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon was deleted'\r\n }, this.updateFilteredSermons);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermons);\r\n }\r\n\r\n updateFilteredSermons() {\r\n\r\n let filteredSermons = this.state.sermons;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermons = filteredSermons.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== 0) {\r\n filteredSermons = filteredSermons.filter(s => +s.status === +this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermons.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermons });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermons = this.state.filteredSermons.slice(0, this.state.visibleSermonCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermons\r\n \r\n {!this.state.loading && this.state.sermons.length > 0 && this.state.sermons.length === this.state.filteredSermons.length &&\r\n \r\n {this.state.sermons.length} shared sermon{this.state.sermons.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.sermons.length > 0 && this.state.sermons.length !== this.state.filteredSermons.length &&\r\n \r\n {this.state.filteredSermons.length} match{this.state.filteredSermons.length === 1 ? '' : 'es'} of {this.state.sermons.length} shared sermon{this.state.sermons.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Approved }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Approved ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Pending }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Pending ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Rejected }, this.updateFilteredSermons)}>\r\n \r\n {this.state.filterValue === FilterValue.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonCount: 10 }, this.updateFilteredSermons)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermons.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermons yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermons.length > 0 && visibleSermons.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermons.length > 0 &&\r\n this.setState({ visibleSermonCount: this.state.visibleSermonCount + 10 })}\r\n hasMore={visibleSermons.length < this.state.filteredSermons.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermons.map(sermon =>\r\n \r\n \r\n \r\n {new Date(sermon.date).toLocaleDateString()}\r\n \r\n \r\n {FilterValue[sermon.status]}\r\n \r\n \r\n \r\n {`${sermon.views} ${sermon.views === 1 ? \"view\" : \"views\"} | ${sermon.ratingCount} ${sermon.ratingCount === 1 ? \"rating\" : \"ratings\"}`}\r\n {this.renderStars(sermon.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n \r\n Scripture: {sermon.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {sermon.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n {sermon.rejectionNotes &&\r\n \r\n
\r\n Notes from your reviewer\r\n ') }} />\r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon\r\n \r\n \r\n Are you sure you wish to delete this sermon?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Add Sermon\r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Sermons));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport InsertCommentIcon from '@material-ui/icons/InsertComment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport StarHalfIcon from '@material-ui/icons/StarHalf';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { Link } from 'react-router-dom';\r\nimport SermonSeries from '../../entities/SermonSeries';\r\nimport { ContributionsService } from '../../services/ContributionsService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n ratingStarContainer: {\r\n verticalAlign: \"text-top\",\r\n marginLeft: \"4px\"\r\n },\r\n ratingStar: {\r\n fontSize: \"16px\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n tagsAndScriptures: {\r\n fontStyle: 'italic',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n infiniteScroll: {\r\n width: '100%',\r\n },\r\n cardContainer: {\r\n width: \"100%\",\r\n },\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonSeries: SermonSeries[];\r\n filteredSermonSeries: SermonSeries[];\r\n visibleSermonSeriesCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n showDeleteDialog: boolean;\r\n selectedSermonSeriesIdToDelete?: number;\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass SermonSeriesPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n sermonSeries: [],\r\n filteredSermonSeries: [],\r\n visibleSermonSeriesCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - My Sermon Series\";\r\n\r\n try {\r\n const sermonSeries = await ContributionsService.getAllSermonSeries();\r\n\r\n if (sermonSeries) {\r\n this.setState({ sermonSeries, filteredSermonSeries: sermonSeries, loading: false });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteSermonSeries() {\r\n if (this.state.selectedSermonSeriesIdToDelete) {\r\n try {\r\n const response = await ContributionsService.deleteSermonSeries(this.state.selectedSermonSeriesIdToDelete);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonSeries = this.state.sermonSeries;\r\n sermonSeries = sermonSeries.filter(l => l.id !== this.state.selectedSermonSeriesIdToDelete!);\r\n\r\n this.setState({\r\n sermonSeries,\r\n selectedSermonSeriesIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The sermon series was deleted'\r\n }, this.updateFilteredSermonSeries);\r\n\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredSermonSeries);\r\n }\r\n\r\n updateFilteredSermonSeries() {\r\n\r\n let filteredSermonSeries = this.state.sermonSeries;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredSermonSeries = filteredSermonSeries.filter(s => {\r\n\r\n if (s.title && s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.intro && s.intro.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.scriptures && s.scriptures.some(sr => sr.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n if (s.tags && s.tags.some(tg => tg.toLowerCase().includes(query))) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredSermonSeries.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredSermonSeries });\r\n }\r\n\r\n renderStars = (rating: number) => {\r\n let val: JSX.Element[] = [];\r\n\r\n for (let i = 1; i <= 5; i++) {\r\n if (i <= rating) {\r\n val.push();\r\n } else if (i <= Math.ceil(rating)) {\r\n val.push();\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleSermonSeries = this.state.filteredSermonSeries.slice(0, this.state.visibleSermonSeriesCount);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n My Sermon Series\r\n \r\n {!this.state.loading && this.state.sermonSeries.length > 0 && this.state.sermonSeries.length === this.state.filteredSermonSeries.length &&\r\n \r\n {this.state.sermonSeries.length} shared sermon series\r\n \r\n }\r\n {!this.state.loading && this.state.sermonSeries.length > 0 && this.state.sermonSeries.length !== this.state.filteredSermonSeries.length &&\r\n \r\n {this.state.filteredSermonSeries.length} match{this.state.filteredSermonSeries.length === 1 ? '' : 'es'} of {this.state.sermonSeries.length} shared sermon series\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Rating')}>\r\n \r\n {this.state.orderBy === 'Rating' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Views')}>\r\n \r\n {this.state.orderBy === 'Views' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleSermonSeriesCount: 10 }, this.updateFilteredSermonSeries)}\r\n />\r\n
\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonSeries.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any sermon series yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonSeries.length > 0 && visibleSermonSeries.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleSermonSeries.length > 0 &&\r\n this.setState({ visibleSermonSeriesCount: this.state.visibleSermonSeriesCount + 10 })}\r\n hasMore={visibleSermonSeries.length < this.state.filteredSermonSeries.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleSermonSeries.map(series =>\r\n \r\n \r\n \r\n {new Date(series.date).toLocaleDateString()}\r\n \r\n \r\n\r\n \r\n {series.views} {series.views === 1 ? \"view\" : \"views\"} | {series.ratingCount} {series.ratingCount === 1 ? \"rating\" : \"ratings\"}\r\n {this.renderStars(series.rating)}\r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n Sermons in Series: {series.sermonCount}\r\n
\r\n Scripture: {series.scriptures.length > 0 ? : 'None'}\r\n
\r\n Tags: {series.tags.length > 0 ? : 'None'}\r\n
\r\n
\r\n
\r\n )}\r\n \r\n }\r\n
\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Sermon Series\r\n \r\n \r\n Are you sure you wish to delete this sermon series?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Add Series\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonSeriesPage));","export interface MediaItem {\r\n id: number;\r\n title: string;\r\n summary: string;\r\n type: MediaType;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: Date;\r\n previewImageUrl: string;\r\n url: string;\r\n mediaProducerId: number;\r\n mediaProducer: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaItemStatus;\r\n parentId?: number;\r\n} \r\n\r\nexport enum MediaType {\r\n Still_Background = \"Still Background\",\r\n Countdown_Video = \"Countdown Video\",\r\n Video_Illustration = \"Video Illustration\",\r\n Motion_Background = \"Motion Background\",\r\n Preaching_Slide = \"Preaching Slide\",\r\n Worship_Lyric_Slide = \"Worship Lyric Slide\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n Small_Group_Study = \"Small Group Study\",\r\n Social_Graphic = \"Social Graphic\"\r\n}\r\n\r\nexport enum MediaItemStatus {\r\n Pending = 0,\r\n Rejected,\r\n Approved\r\n}","import { ServerResponse, WebClient } from './ServiceHelper';\r\nimport { MediaItem, MediaType, MediaItemStatus } from '../entities/MediaItem';\r\n\r\nexport interface MediaItemHistory {\r\n id: number;\r\n imageUrl: string;\r\n title: string;\r\n type: string;\r\n summary: string;\r\n date: Date;\r\n shareableUrl: string;\r\n shareableUrlName: string;\r\n url: string;\r\n kitDownloadUrl: string;\r\n publiclyAvailable: boolean;\r\n shareLink: string;\r\n views: number;\r\n}\r\n\r\nexport interface MediaItemInvoice {\r\n orderDate: Date;\r\n orderId: number;\r\n title: string;\r\n purchasePrice: number;\r\n}\r\n\r\ninterface ServerMediaItem {\r\n id: number;\r\n title: string;\r\n summary: string;\r\n type: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: string;\r\n previewImageUrl: string;\r\n url: string;\r\n mediaProducerId: number;\r\n mediaProducer: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaItemStatus\r\n}\r\nexport interface SearchMediaItemRequest {\r\n query: string;\r\n skip: number;\r\n take: number;\r\n sortBy: string;\r\n sortDescending: boolean;\r\n type: string;\r\n includeDisabled: boolean;\r\n needsAttention?: boolean;\r\n status: MediaItemStatus;\r\n}\r\n\r\nexport interface MediaDisableRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaDeleteRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaEnableRequest {\r\n title: string;\r\n id: number;\r\n reason: string;\r\n}\r\n\r\nexport interface MediaCancelRequest {\r\n id: number;\r\n}\r\nexport class MediaService {\r\n\r\n public static async getDownloadHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetDownloadHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPurchaseHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetPurchaseHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getActivationHistory() {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetActivationHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getMediaInvoice(id: number) {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetMediaInvoice/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async GetInvoice(id: number) {\r\n\r\n var response = await WebClient.Get(\"api/Media/GetInvoice/\" + id);\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n static async searchMediaItems(request: SearchMediaItemRequest) {\r\n let response = await WebClient.Post(\"api/Media/SearchMedia\", request);\r\n if (ServerResponse.isSuccess(response)) {\r\n let translatedResponse: ServerResponse = {\r\n message: response.message,\r\n data: response.data.map(r => {\r\n let mediaItem: MediaItem = {\r\n ...r,\r\n type: MediaType[r.type],\r\n dateAvailable: r.dateAvailable ? new Date(r.dateAvailable) : undefined\r\n };\r\n return mediaItem;\r\n })\r\n };\r\n return translatedResponse;\r\n }\r\n return response;\r\n }\r\n\r\n static async requestDisable(request: MediaDisableRequest) {\r\n return await WebClient.Post(\"api/Media/RequestDisable\", request); \r\n }\r\n\r\n static async requestDelete(request: MediaDeleteRequest) {\r\n return await WebClient.Post(\"api/Media/RequestDelete\", request); \r\n }\r\n\r\n static async requestEnable(request: MediaEnableRequest) {\r\n return await WebClient.Post(\"api/Media/RequestEnable\", request); \r\n }\r\n\r\n static async requestCancel(request: MediaCancelRequest) {\r\n return await WebClient.Post(\"api/Media/CancelPending\", request); \r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport SaveAltIcon from '@material-ui/icons/SaveAlt';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n unselectedListItem: {\r\n marginLeft: \"22px\"\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: '500px',\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.up('md')]: {\r\n minWidth: '500px',\r\n },\r\n },\r\n cardImage: {\r\n height: 250,\r\n backgroundSize: \"contain\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n PreachingSlide = \"Preaching Slide\",\r\n WorshipLyricSlide = \"Worship Lyric Slide\",\r\n SocialGraphic = \"Social Graphic\",\r\n MotionBackground = \"Motion Background\",\r\n VideoIllustration = \"Video Illustration\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n SmallGroupStudy = \"Small Group Study\",\r\n CountdownVideo = \"Countdown Video\",\r\n StillBackground = \"Still Background\",\r\n ChurchMediaSet = \"Church Media Set\",\r\n All = \"\"\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Downloads extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Download History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getDownloadHistory();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('type') && params.get('type')!.match(/stillBackgrounds/i)) {\r\n filterValue = FilterValue.StillBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/countdownvideos/i)) {\r\n filterValue = FilterValue.CountdownVideo;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/motionbackgrounds/i)) {\r\n filterValue = FilterValue.MotionBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/preachingslides/i)) {\r\n filterValue = FilterValue.PreachingSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/worshiplyricslides/i)) {\r\n filterValue = FilterValue.WorshipLyricSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/videoillustrations/i)) {\r\n filterValue = FilterValue.VideoIllustration;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/socialgraphics/i)) {\r\n filterValue = FilterValue.SocialGraphic;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/comedy/i)) {\r\n filterValue = FilterValue.Comedy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/inspirational/i)) {\r\n filterValue = FilterValue.Inspirational;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/smallgroupstudy/i)) {\r\n filterValue = FilterValue.SmallGroupStudy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/churchmediaset/i)) {\r\n filterValue = FilterValue.ChurchMediaSet;\r\n }\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, filterValue, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n \r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n const htmlRegex = new RegExp(/(<(?:.|\\n)*?>)/, \"gm\");\r\n \r\n const contentNodes:React.ReactNode[] = text.split(htmlRegex) ?? [];\r\n const highlightedNodes = contentNodes.map((node) => {\r\n if(!node){\r\n return node\r\n } \r\n const value = node.toString();\r\n if(htmlRegex.test(value)){\r\n return ' ';\r\n } else {\r\n return value.replace(regexp, '$1');\r\n }\r\n })\r\n return highlightedNodes.join('')\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== \"\") {\r\n filteredMediaItems = filteredMediaItems.filter(s => s.type === this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Download History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} download{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} download{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.ChurchMediaSet }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.ChurchMediaSet ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.CountdownVideo }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.CountdownVideo ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.StillBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.StillBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.MotionBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.MotionBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.PreachingSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PreachingSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.VideoIllustration }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.VideoIllustration ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.WorshipLyricSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.WorshipLyricSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Comedy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Comedy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Inspirational }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Inspirational ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SmallGroupStudy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SmallGroupStudy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SocialGraphic }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SocialGraphic ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't downloaded any media.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n \r\n {!mediaItem.kitDownloadUrl && mediaItem.publiclyAvailable && mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n <>\r\n \r\n {(mediaItem.shareLink && mediaItem.shareableUrl && mediaItem.shareableUrlName) &&\r\n \r\n }\r\n \r\n }\r\n {mediaItem.kitDownloadUrl &&\r\n \r\n }\r\n \r\n \r\n {mediaItem.shareLink &&\r\n \r\n Share link: \r\n Views: {mediaItem.views}\r\n \r\n }\r\n \r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Downloads));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport SaveAltIcon from '@material-ui/icons/SaveAlt';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\n\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 250,\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: \"All\" | \"Sermon Series Kits\" | \"Premium Sermon Kits\"\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Activations extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: \"All\",\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Kit Activation History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getActivationHistory();\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n switch(this.state.filterValue) {\r\n case \"All\":\r\n break;\r\n case \"Sermon Series Kits\":\r\n filteredMediaItems = filteredMediaItems.filter(i => i.type === \"Sermon Series Kit\");\r\n break;\r\n case \"Premium Sermon Kits\":\r\n filteredMediaItems = filteredMediaItems.filter(i => i.type === \"Premium Sermon Kit\");\r\n break;\r\n }\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Kit Activation History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} activation{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} activation{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: \"All\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"All\" ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: \"Sermon Series Kits\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"Sermon Series Kits\" ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: \"Premium Sermon Kits\" }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === \"Premium Sermon Kits\" ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't activated any kits.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n {mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n \r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Activations));","export interface VideoMedia {\r\n id: number;\r\n parentId?: number;\r\n type: VideoMediaType;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: Date;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n previewVideoUrl?: string;\r\n url: string;\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n scriptureReferences: string[];\r\n topics: string[];\r\n status: MediaStatus;\r\n adminComment?: string;\r\n producerComment?: string\r\n}\r\n\r\nexport enum MediaStatus {\r\n Pending = 0,\r\n Rejected,\r\n Approved\r\n}\r\n\r\nexport enum VideoMediaType {\r\n /// A countdown video.\r\n Countdown_Video = \"Countdown Video\",\r\n /// A video illustration.\r\n Video_Illustration = \"Video Illustration\",\r\n /// A motion background.\r\n Motion_Background = \"Motion Background\",\r\n}","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../withRoot';\r\n\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { green } from '@material-ui/core/colors';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onClose?: () => void;\r\n message?: string;\r\n autoHideDuration?: number;\r\n}\r\n\r\ntype State = {\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n {this.props.message}\r\n }\r\n action={\r\n this.props.onClose\r\n &&\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import * as React from 'react';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withRoot from '../withRoot';\r\n\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\n\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n onClose?: () => void;\r\n message?: string;\r\n autoHideDuration?: number;\r\n}\r\n\r\ntype State = {\r\n};\r\n\r\nclass ForgotPassword extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n };\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ForgotPassword));","import * as React from 'react';\r\nimport { Link, RouteComponentProps } from 'react-router-dom';\r\n\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport withRoot from '../../../withRoot';\r\n\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport EyeIcon from '@material-ui/icons/RemoveRedEye';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport SpeedDialIcon from '@material-ui/lab/SpeedDialIcon';\r\nimport TimerIcon from '@material-ui/icons/Timer';\r\nimport MovieCreationIcon from '@material-ui/icons/MovieCreation';\r\nimport WallpaperIcon from '@material-ui/icons/Wallpaper';\r\n\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\n\r\nimport AppConfig from '../../../entities/AppConfig';\r\nimport ApplicationUser from '../../../entities/ApplicationUser';\r\nimport { MediaItem, MediaType, MediaItemStatus } from '../../../entities/MediaItem';\r\nimport { MediaService, SearchMediaItemRequest, MediaDisableRequest, MediaEnableRequest } from '../../../services/MediaService';\r\nimport { ServerResponse } from '../../../services/ServiceHelper';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\r\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\r\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\r\nimport SpeedDial from '@material-ui/lab/SpeedDial';\r\nimport SpeedDialAction from '@material-ui/lab/SpeedDialAction';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SuccessSnackbar from '../../../components/SuccessSnackbar';\r\nimport ErrorSnackbar from '../../../components/ErrorSnackbar';\r\nimport { MediaStatus } from '../../../entities/VideoMedia';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n toolbar: {\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'block',\r\n padding: 0\r\n }\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n [theme.breakpoints.down('sm')]: {\r\n float: 'left'\r\n }\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n sort: {\r\n display: \"flex\",\r\n [theme.breakpoints.down('sm')]: {\r\n display: 'block',\r\n float: 'right'\r\n }\r\n },\r\n switch: {\r\n width: 140\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n menuListItemIcon: {\r\n paddingLeft: \"0px\",\r\n paddingRight: \"0px\",\r\n marginRight: \"0px\"\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n [theme.breakpoints.down('sm')]: {\r\n width: '100%'\r\n }\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.down('sm')]: {\r\n width: \"100%\",\r\n }\r\n },\r\n cardHeader: {\r\n paddingBottom: 0,\r\n paddingTop: 0\r\n },\r\n avatar: {\r\n margin: '5px 0px'\r\n },\r\n removeBorderRadius: {\r\n \"&:first-child\": {\r\n borderTopLeftRadius: 0,\r\n borderTopRightRadius: 0,\r\n },\r\n \"&:last-child\": {\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n }\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 4,\r\n right: theme.spacing() * 4,\r\n [theme.breakpoints.down('md')]: {\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n },\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ type?: string }>, WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n mediaItems: MediaItem[];\r\n hasMore: boolean;\r\n sortBy: string;\r\n anchorSortMenu?: HTMLElement;\r\n sortDescending: boolean;\r\n filterMediaType: string;\r\n filterStatus: MediaItemStatus;\r\n anchorFilterMenu?: HTMLElement;\r\n anchorFilterStatusMenu?: HTMLElement;\r\n showSelectProducerDialog: boolean;\r\n showDisabledMedia: boolean;\r\n queryText: string;\r\n mediaItemToDisable?: MediaItem;\r\n mediaItemToEnable?: MediaItem;\r\n enableSubmit: boolean;\r\n openSpeedDial: boolean;\r\n disableReason: string;\r\n enableReason: string;\r\n successMessage?: string;\r\n errorMessage?: string;\r\n filterNeedsAttention?: boolean;\r\n filterNeedsaAttentionMenu?: HTMLElement;\r\n}\r\n\r\nclass ManageMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n let filterMediaType = \"All\";\r\n if (props.match.params.type) {\r\n switch (props.match.params.type) {\r\n case \"preaching-slide\":\r\n filterMediaType = \"Preaching Slide\";\r\n break;\r\n case \"worship-lyric-slides\":\r\n filterMediaType = \"Worship Lyric Slide\";\r\n break;\r\n case \"video-illustrations\":\r\n filterMediaType = \"Video Illustration\";\r\n break;\r\n case \"motion-backgrounds\":\r\n filterMediaType = \"Motion Background\";\r\n break;\r\n case \"countdown-videos\":\r\n filterMediaType = \"Countdown Video\";\r\n break;\r\n case \"still-background\":\r\n filterMediaType = \"Still Background\";\r\n break;\r\n case \"documents\":\r\n filterMediaType = \"Document\";\r\n break;\r\n default:\r\n filterMediaType = \"All\";\r\n }\r\n }\r\n\r\n this.state = {\r\n loading: true,\r\n mediaItems: [],\r\n hasMore: true,\r\n sortBy: \"title\",\r\n sortDescending: false,\r\n filterMediaType: filterMediaType,\r\n showSelectProducerDialog: false,\r\n showDisabledMedia: false,\r\n queryText: \"\",\r\n enableSubmit: true,\r\n openSpeedDial: false,\r\n filterStatus: MediaItemStatus.Approved,\r\n disableReason: \"\",\r\n enableReason: \"\",\r\n filterNeedsAttention: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Admin - Manage All Media\";\r\n this.searchMediaItems(true);\r\n }\r\n\r\n onChangeShowDisabledMedia = () => {\r\n const { showDisabledMedia } = this.state;\r\n this.setState({ showDisabledMedia: !showDisabledMedia }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeFilterBy(filterBy: string) {\r\n this.setState({ filterMediaType: filterBy, anchorFilterMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeItemStatusBy(filterBy: MediaItemStatus) {\r\n this.setState({ filterStatus: filterBy, anchorFilterStatusMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onChangeSortBy(sortBy: string) {\r\n this.setState({ sortBy, anchorSortMenu: undefined }, () => this.searchMediaItems(true));\r\n }\r\n\r\n onFilterNeedsAttention(needsAttention: boolean | undefined){\r\n this.setState({filterNeedsAttention: needsAttention, filterNeedsaAttentionMenu: undefined}, () => this.searchMediaItems(true))\r\n }\r\n\r\n searchMediaItems = async (reset: boolean) => {\r\n const { mediaItems, hasMore, filterMediaType, showDisabledMedia, sortBy, sortDescending, queryText, enableSubmit, filterStatus, filterNeedsAttention } = this.state;\r\n\r\n if ((!reset && !hasMore) || !enableSubmit) {\r\n return;\r\n }\r\n if (reset) {\r\n this.setState({ loading: true });\r\n }\r\n\r\n let searchRequest: SearchMediaItemRequest = {\r\n query: queryText,\r\n skip: reset ? 0 : mediaItems.length,\r\n take: 10,\r\n sortBy: sortBy,\r\n sortDescending,\r\n type: filterMediaType,\r\n includeDisabled: showDisabledMedia,\r\n status: filterStatus,\r\n needsAttention: filterNeedsAttention\r\n };\r\n let response = await MediaService.searchMediaItems(searchRequest);\r\n if (ServerResponse.isSuccess(response)) {\r\n let mediaItemsResult = reset ? response.data : [...mediaItems, ...response.data];\r\n this.setState({ mediaItems: mediaItemsResult, loading: false, hasMore: response.data.length === 10 });\r\n }\r\n }\r\n\r\n onDisable = async () => {\r\n const { mediaItemToDisable, disableReason } = this.state;\r\n\r\n if (!mediaItemToDisable) {\r\n return;\r\n }\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n var request: MediaDisableRequest = {\r\n id: mediaItemToDisable.id,\r\n title: mediaItemToDisable.title,\r\n reason: disableReason\r\n };\r\n\r\n let response = await MediaService.requestDisable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n disableReason: \"\",\r\n mediaItemToDisable: undefined,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n enableSubmit: true,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onEnable = async () => {\r\n const { mediaItemToEnable, enableReason } = this.state;\r\n\r\n if (!mediaItemToEnable) {\r\n return;\r\n }\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n var request: MediaEnableRequest = {\r\n id: mediaItemToEnable.id,\r\n title: mediaItemToEnable.title,\r\n reason: enableReason\r\n };\r\n\r\n let response = await MediaService.requestEnable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n enableReason: \"\",\r\n mediaItemToEnable: undefined,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n enableSubmit: true,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n getEditLink(mediaItem: MediaItem) {\r\n let status = mediaItem.status === MediaItemStatus.Approved ? 'approved' : 'pending';\r\n if (mediaItem.type === MediaType.Countdown_Video) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n } else if (mediaItem.type === MediaType.Motion_Background) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n } else if (mediaItem.type === MediaType.Video_Illustration) {\r\n return `/media/video-media/${status}/edit/${mediaItem.id}`;\r\n }\r\n\r\n return ``;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const {\r\n loading,\r\n mediaItems,\r\n hasMore,\r\n filterMediaType,\r\n filterStatus,\r\n anchorFilterMenu,\r\n anchorFilterStatusMenu,\r\n showDisabledMedia,\r\n sortBy,\r\n sortDescending,\r\n anchorSortMenu,\r\n queryText,\r\n mediaItemToDisable,\r\n mediaItemToEnable,\r\n enableSubmit,\r\n openSpeedDial,\r\n disableReason,\r\n enableReason,\r\n filterNeedsAttention,\r\n filterNeedsaAttentionMenu\r\n } = this.state;\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n Manage Media\r\n \r\n
\r\n
\r\n
\r\n }\r\n label={Show Disabled Media}\r\n />\r\n
\r\n
\r\n \r\n this.setState({ filterNeedsaAttentionMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onFilterNeedsAttention(undefined)}>\r\n \r\n {filterNeedsAttention === undefined ? : }\r\n \r\n \r\n \r\n this.onFilterNeedsAttention(true)}>\r\n \r\n {filterNeedsAttention ? : }\r\n \r\n \r\n \r\n this.onFilterNeedsAttention(false)}>\r\n \r\n {filterNeedsAttention === false ? : }\r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorFilterMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeFilterBy('All')}>\r\n \r\n {filterMediaType === 'All' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Video Illustration')}>\r\n \r\n {filterMediaType === 'Video Illustration' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Motion Background')}>\r\n \r\n {filterMediaType === 'Motion Background' ? : }\r\n \r\n \r\n \r\n this.onChangeFilterBy('Countdown Video')}>\r\n \r\n {filterMediaType === 'Countdown Video' ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorFilterStatusMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeItemStatusBy(MediaItemStatus.Approved)}>\r\n \r\n {filterStatus === MediaItemStatus.Approved ? : }\r\n \r\n \r\n \r\n this.onChangeItemStatusBy(MediaItemStatus.Pending)}>\r\n \r\n {filterStatus === MediaItemStatus.Pending ? : }\r\n \r\n \r\n \r\n this.onChangeItemStatusBy(MediaItemStatus.Rejected)}>\r\n \r\n {filterStatus === MediaItemStatus.Rejected ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n this.setState({ anchorSortMenu: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.onChangeSortBy('dateAvailable')}>\r\n \r\n {sortBy === 'dateAvailable' ? : }\r\n \r\n \r\n \r\n this.onChangeSortBy('title')}>\r\n \r\n {sortBy === 'title' ? : }\r\n \r\n \r\n \r\n \r\n\r\n this.setState({ sortDescending: !sortDescending }, () => this.searchMediaItems(true))}>\r\n {sortDescending ? : }\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value }, () => this.searchMediaItems(true))}\r\n />\r\n
\r\n \r\n \r\n {\r\n loading\r\n &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n mediaItems.length === 0\r\n &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n mediaItems.length > 0\r\n &&\r\n this.searchMediaItems(false)}\r\n hasMore={hasMore}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {mediaItems.map(mediaItem =>\r\n \r\n \r\n
\r\n { mediaItem.needsAttention &&\r\n \r\n Needs Attention\r\n \r\n }\r\n \r\n {mediaItem.status === MediaItemStatus.Approved && (mediaItem.isEnabled ? \"Approved: Enabled\" : \"Approved: Disabled\")}\r\n {mediaItem.status === MediaItemStatus.Pending && \"Pending\"}\r\n {mediaItem.status === MediaItemStatus.Rejected && \"Rejected\"}\r\n \r\n \r\n }\r\n title={}\r\n subheader={{mediaItem.mediaProducer} - {mediaItem.type}}\r\n />\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n {\r\n (!mediaItem.isEnabled && mediaItem.status === MediaItemStatus.Approved)\r\n &&\r\n <>\r\n \r\n \r\n }\r\n {\r\n this.getEditLink(mediaItem) &&\r\n (mediaItem.isEnabled && mediaItem.status === MediaItemStatus.Approved)\r\n &&\r\n <>\r\n \r\n \r\n }\r\n
\r\n {mediaItem.status === MediaItemStatus.Approved &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n {this.getEditLink(mediaItem) &&\r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n \r\n }>\r\n \r\n Date Available: {mediaItem.dateAvailable ? mediaItem.dateAvailable.toLocaleDateString() : \"None\"}\r\n \r\n \r\n \r\n \r\n Topic{mediaItem.topics.length !== 1 && \"s\"}: {mediaItem.topics.length > 0 ? mediaItem.topics.join(', ') : 'None'}\r\n
\r\n Scripture{mediaItem.scriptureReferences.length !== 1 && \"s\"}: {mediaItem.scriptureReferences.length > 0 ? mediaItem.scriptureReferences.join(', ') : 'None'}\r\n
\r\n Style{mediaItem.styles.length !== 1 && \"s\"}: {mediaItem.styles.length > 0 ? mediaItem.styles.join(', ') : 'None'}\r\n
\r\n Genre{mediaItem.genres.length !== 1 && \"s\"}: {mediaItem.genres.length > 0 ? mediaItem.genres.join(', ') : 'None'}\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n )}\r\n \r\n }\r\n \r\n {this.props.user.roles.some(a => ['HasCountdownVideoAccess', 'HasMotionBackgroundAccess', 'HasVideoIllustrationAccess'].indexOf(a) >= 0) &&\r\n }\r\n onClick={() => this.setState({ openSpeedDial: !openSpeedDial })}\r\n onClose={() => this.setState({ openSpeedDial: false })}\r\n open={openSpeedDial}\r\n >\r\n {this.props.user.roles.filter((r) => r === 'HasCountdownVideoAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Countdown Video\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/countdown-video\")}\r\n />\r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasMotionBackgroundAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Motion Background\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/motion-background\")}\r\n />\r\n }\r\n {this.props.user.roles.filter((r) => r === 'HasVideoIllustrationAccess').length > 0 &&\r\n }\r\n tooltipTitle={\"Video Illustration\"}\r\n tooltipOpen\r\n onClick={() => this.props.history.push(\"/media/video-media/pending/add/video-illustration\")}\r\n />\r\n }\r\n \r\n }\r\n this.setState({ mediaItemToDisable: undefined })}\r\n aria-labelledby=\"disable-dialog-title\"\r\n aria-describedby=\"disable-dialog-description\"\r\n >\r\n Disable Media\r\n \r\n \r\n Are you sure you wish to request {mediaItemToDisable && mediaItemToDisable.title} to be disabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be disabled.\r\n \r\n this.setState({ disableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ errorMessage: undefined })}\r\n />\r\n this.setState({ successMessage: undefined })}\r\n />\r\n this.setState({ mediaItemToEnable: undefined })}\r\n aria-labelledby=\"enable-dialog-title\"\r\n aria-describedby=\"enable-dialog-description\"\r\n >\r\n Enable Media\r\n \r\n \r\n Are you sure you wish to request {mediaItemToEnable && mediaItemToEnable.title} to be enabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be enabled.\r\n \r\n this.setState({ enableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ManageMedia));\r\n","import { WebClient, ServerResponse, ServerError, ServerModelValidationResponse } from \"./ServiceHelper\";\r\nimport { VideoMedia, VideoMediaType, MediaStatus } from \"../entities/VideoMedia\";\r\n\r\ninterface ServerVideoMedia {\r\n id: number;\r\n type: string;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n isEnabled: boolean;\r\n needsAttention: boolean;\r\n dateAvailable?: string;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n previewImageUrl?: string;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n url: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n topics: string[];\r\n status: MediaStatus;\r\n parentId?: number;\r\n adminComment?: string;\r\n producerComment?: string\r\n}\r\n\r\ninterface ServerPendingVideoMedia {\r\n id: number;\r\n type: string;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n dateAvailable?: string;\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n previewImageUrl?: string;\r\n thumbnailImageUrl?: string;\r\n posterImageUrl?: string;\r\n scriptureReferences: string[];\r\n genres: string[];\r\n audiences: string[];\r\n styles: string[];\r\n topics: string[];\r\n}\r\n\r\nexport interface VideoDownload {\r\n id: number;\r\n extension: string;\r\n quality: string;\r\n}\r\n\r\n\r\nexport interface SaveVideoMediaRequest {\r\n id?: number;\r\n parentId?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveRejectedVideoMediaRequest {\r\n id: number;\r\n parentId?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveApprovedVideoMediaRequest {\r\n id?: number;\r\n type: string;\r\n dateAvailable: Date;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n topics: string[];\r\n scriptureReferences: string[];\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n listPrice?: number;\r\n discountedPrice?: number;\r\n status: MediaStatus;\r\n producerComment?: string;\r\n adminComment?: string\r\n}\r\n\r\nexport interface SaveVideoMediaPreviewImageRequest {\r\n videoMediaId: number;\r\n base64ThumbnailImage: string;\r\n base64PosterImage: string;\r\n}\r\n\r\nexport interface SaveMediaVideoAssetRequest {\r\n videoMediaId: number;\r\n previewVideoPath: string;\r\n downloadDetails: VideoMediaDetail[];\r\n}\r\n\r\ninterface VideoMediaDetail {\r\n path: string;\r\n extension: string;\r\n quality: string;\r\n duration: number;\r\n}\r\n\r\nexport interface CreateEncodingJobRequest {\r\n videoMediaId: number;\r\n videoMediaType: VideoMediaType;\r\n sourceFileName: string;\r\n sourceQuality: string;\r\n}\r\n\r\nexport interface EncodingJobStatus {\r\n isComplete: boolean;\r\n error?: string;\r\n completionPercentage: number;\r\n preview?: EncodingOutputDetail;\r\n downloads?: EncodingOutputDetail[];\r\n}\r\n\r\nexport interface EncodingOutputDetail {\r\n extension: string;\r\n path: string;\r\n quality: string;\r\n duration: number;\r\n}\r\n\r\nexport class VideoMediaService {\r\n static async getVideoMedia(id: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetVideoMedia/\" + id);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async getPendingVideoMedia(id: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetPendingVideoMedia/\" + id);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async getVideoMediaAvailableVideoDownloads(videoMediaId: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetVideoMediaAvailableVideoDownloads/\" + videoMediaId);\r\n return response;\r\n }\r\n\r\n static async getPendingVideoMediaAvailableVideoDownloads(videoMediaId: number) {\r\n let response = await WebClient.Get(\"api/VideoMedia/GetPendingVideoMediaAvailableVideoDownloads/\" + videoMediaId);\r\n return response;\r\n }\r\n\r\n static async generateVideoUploadUrl(id: number, type: VideoMediaType, fileName: string) {\r\n let response = await WebClient.Get<{ url: string }>(`api/VideoMedia/GenerateVideoUploadUrl?id=${id}&type=${type}&fileName=${fileName}`);\r\n return response;\r\n }\r\n\r\n static async saveVideoMedia(request: SaveVideoMediaRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveVideoMedia/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async enableVideoMedia(videoMediaId: number) {\r\n let response = await WebClient.Put(\"api/VideoMedia/EnableVideoMedia/\" + videoMediaId, {});\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async disableVideoMedia(videoMediaId: number) {\r\n let response = await WebClient.Put(\"api/VideoMedia/DisableVideoMedia/\" + videoMediaId, {});\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async saveVideoMediaPreviewImage(request: SaveVideoMediaPreviewImageRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveVideoMediaPreviewImage/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async saveVideoMediaVideoMedia(request: SaveMediaVideoAssetRequest) {\r\n let response = await WebClient.Put(\"api/VideoMedia/SaveMediaVideoAsset/\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async uploadSourceVideo(uploadUrl: string, file: File, progress: (percentage: number) => void) {\r\n let response = await WebClient.PutFile(uploadUrl, file, progress);\r\n return response;\r\n }\r\n\r\n static async createEncodingJob(request: CreateEncodingJobRequest) {\r\n let response = await WebClient.Put<{ jobId: string }>(\"api/VideoMedia/CreateEncodingJob/\", request);\r\n return response;\r\n }\r\n\r\n static async getEncodingJobStatus(jobId: string) {\r\n let response = await WebClient.Get(`api/VideoMedia/GetEncodingJobStatus/${jobId}`);\r\n return response;\r\n }\r\n\r\n static async createPendingItemFromApproved(request: SaveApprovedVideoMediaRequest) {\r\n let response = await WebClient.Post(\"api/VideoMedia/CreatePendingMediaItemFromApproved\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n static async changeRejectedToPending(request: SaveRejectedVideoMediaRequest) {\r\n let response = await WebClient.Post(\"api/VideoMedia/CreatePendingMediaItemFromRejected\", request);\r\n return VideoMediaService.translateSingleResponse(response);\r\n }\r\n\r\n private static translateSingleResponse(response: ServerError | ServerModelValidationResponse | ServerResponse) {\r\n if (ServerResponse.isSuccess(response)) {\r\n let videoMedia: VideoMedia = {\r\n ...response.data,\r\n dateAvailable: response.data.dateAvailable ? new Date(response.data.dateAvailable) : undefined,\r\n type: VideoMediaService.translateVideoMediaType(response.data.type)\r\n };\r\n let translatedResponse: ServerResponse = {\r\n message: response.message,\r\n data: videoMedia\r\n };\r\n return translatedResponse;\r\n }\r\n return response;\r\n }\r\n\r\n private static translateVideoMediaType(type: string) {\r\n switch (type) {\r\n case VideoMediaType.Countdown_Video: return VideoMediaType.Countdown_Video;\r\n case VideoMediaType.Motion_Background: return VideoMediaType.Motion_Background;\r\n case VideoMediaType.Video_Illustration: return VideoMediaType.Video_Illustration;\r\n default: return VideoMediaType.Video_Illustration;\r\n }\r\n }\r\n}","export default class DateHelper {\r\n static getDateStringFormattedForInput = (date: Date) => {\r\n let pad = \"00\";\r\n\r\n let year = date.getFullYear().toString();\r\n let month = (date.getMonth() + 1).toString();\r\n let day = date.getDate().toString();\r\n\r\n return year + '-' + (pad.substring(0, pad.length - month.length) + month) + '-' + (pad.substring(0, pad.length - day.length) + day);\r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputBase from '@material-ui/core/InputBase';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { fade } from '@material-ui/core/styles/colorManipulator';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FilterListIcon from '@material-ui/icons/FilterList';\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport * as React from 'react';\r\nimport InfiniteScroll from 'react-infinite-scroller';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport 'url-search-params-polyfill';\r\nimport { MediaItemHistory, MediaService } from '../../services/MediaService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Divider from '@material-ui/core/Divider';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n header: {\r\n\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flex: '1 1 100%',\r\n },\r\n search: {\r\n position: 'relative',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.primary.light, 0.15),\r\n '&:hover': {\r\n backgroundColor: fade(theme.palette.primary.light, 0.25),\r\n },\r\n marginLeft: 0,\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n marginLeft: theme.spacing(),\r\n width: 'auto',\r\n },\r\n },\r\n searchIcon: {\r\n width: theme.spacing() * 9,\r\n height: '100%',\r\n position: 'absolute',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n [theme.breakpoints.down('md')]: {\r\n width: theme.spacing() * 5,\r\n },\r\n },\r\n inputRoot: {\r\n color: 'inherit',\r\n width: '100%',\r\n },\r\n inputInput: {\r\n paddingTop: theme.spacing(),\r\n paddingRight: theme.spacing(),\r\n paddingBottom: theme.spacing(),\r\n paddingLeft: theme.spacing() * 10,\r\n transition: theme.transitions.create('width'),\r\n width: '100%',\r\n [theme.breakpoints.up('sm')]: {\r\n width: 120,\r\n '&:focus': {\r\n width: 200,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n paddingLeft: theme.spacing() * 5,\r\n },\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n pos: {\r\n marginBottom: 12,\r\n },\r\n sortButton: {\r\n paddingRight: \"6px\",\r\n fontSize: \"13px\",\r\n opacity: .86,\r\n whiteSpace: \"nowrap\"\r\n },\r\n menuItem: {\r\n minWidth: \"200px\",\r\n },\r\n sort: {\r\n display: \"flex\"\r\n },\r\n infiniteScroll: {\r\n width: 'auto',\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\",\r\n [theme.breakpoints.up('md')]: {\r\n minWidth: '500px',\r\n },\r\n },\r\n cardImage: {\r\n height: 250,\r\n backgroundSize: \"contain\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n toolbar: {\r\n display: 'block',\r\n padding: 0\r\n },\r\n title: {\r\n float: 'left'\r\n },\r\n sort: {\r\n display: 'block',\r\n float: 'right'\r\n },\r\n filterContainer: {\r\n float: 'right'\r\n },\r\n search: {\r\n margin: '10px auto',\r\n maxWidth: '500px',\r\n clear: 'both'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\nenum FilterValue {\r\n PreachingSlide = \"Preaching Slide\",\r\n WorshipLyricSlide = \"Worship Lyric Slide\",\r\n MotionBackground = \"Motion Background\",\r\n VideoIllustration = \"Video Illustration\",\r\n CountdownVideo = \"Countdown Video\",\r\n StillBackground = \"Still Background\",\r\n SermonSeriesKit = \"Sermon Series Kit\",\r\n PremiumSermonKit = \"Premium Sermon Kit\",\r\n SocialGraphic = \"Social Graphic\",\r\n Comedy = \"Comedy\",\r\n Inspirational = \"Inspirational\",\r\n SmallGroupStudy = \"Small Group Study\",\r\n ChurchMediaSet = \"Church Media Set\",\r\n All = \"\"\r\n}\r\n\r\ninterface Props extends RouteComponentProps, WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n mediaItems: MediaItemHistory[];\r\n filteredMediaItems: MediaItemHistory[];\r\n visibleMediaItemCount: number;\r\n queryText: string;\r\n sortOrder: string;\r\n orderBy: string;\r\n anchorSort: undefined;\r\n anchorFilter: undefined;\r\n filterValue: FilterValue;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass Purchases extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: true,\r\n mediaItems: [],\r\n filteredMediaItems: [],\r\n visibleMediaItemCount: 10,\r\n queryText: '',\r\n sortOrder: 'Descending',\r\n orderBy: 'Date',\r\n anchorSort: undefined,\r\n anchorFilter: undefined,\r\n filterValue: FilterValue.All,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n document.title = \"SermonCentral Account - Purchase History\";\r\n\r\n try {\r\n const mediaItems = await MediaService.getPurchaseHistory();\r\n\r\n let filterValue = FilterValue.All;\r\n const params = new URLSearchParams(this.props.location.search);\r\n if (params.get('type') && params.get('type')!.match(/backgroundimages/i)) {\r\n filterValue = FilterValue.StillBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/countdownvideos/i)) {\r\n filterValue = FilterValue.CountdownVideo;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/motionbackgrounds/i)) {\r\n filterValue = FilterValue.MotionBackground;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/preachingslides/i)) {\r\n filterValue = FilterValue.PreachingSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/worshiplyricsldies/i)) {\r\n filterValue = FilterValue.WorshipLyricSlide;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/sermonserieskits/i)) {\r\n filterValue = FilterValue.SermonSeriesKit;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/videoillustrations/i)) {\r\n filterValue = FilterValue.VideoIllustration;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/socialgraphics/i)) {\r\n filterValue = FilterValue.SocialGraphic;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/comedy/i)) {\r\n filterValue = FilterValue.Comedy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/inspirational/i)) {\r\n filterValue = FilterValue.Inspirational;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/smallgroupstudy/i)) {\r\n filterValue = FilterValue.SmallGroupStudy;\r\n }\r\n else if (params.get('type') && params.get('type')!.match(/churchmediaset/i)) {\r\n filterValue = FilterValue.ChurchMediaSet;\r\n }\r\n\r\n\r\n if (mediaItems) {\r\n this.setState({ mediaItems, filterValue, loading: false }, this.updateFilteredMediaItems);\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n highlightText(text: string, match: string) {\r\n\r\n if (!text) {\r\n return '';\r\n }\r\n\r\n match = match.trim().replace(/ /gi, '|');\r\n const regexp = new RegExp('(' + match + ')', 'gi');\r\n return text.replace(regexp, '$1');\r\n }\r\n\r\n sortColumn(orderBy: string) {\r\n\r\n var sortOrder = this.state.sortOrder === 'Ascending' ? 'Descending' : 'Ascending';\r\n if (orderBy !== this.state.orderBy) {\r\n sortOrder = 'Descending';\r\n }\r\n\r\n this.setState({ anchorSort: undefined, orderBy, sortOrder }, this.updateFilteredMediaItems);\r\n }\r\n\r\n updateFilteredMediaItems() {\r\n\r\n let filteredMediaItems = this.state.mediaItems;\r\n\r\n if (this.state.queryText.length >= 0) {\r\n const query = this.state.queryText.toLowerCase();\r\n filteredMediaItems = filteredMediaItems.filter(s => {\r\n\r\n if (s.title.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n if (s.summary.toLowerCase().includes(query)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n\r\n if (this.state.filterValue !== \"\") {\r\n filteredMediaItems = filteredMediaItems.filter(s => s.type === this.state.filterValue);\r\n }\r\n\r\n const sortGreaterThanValue = this.state.sortOrder === 'Ascending' ? 1 : -1;\r\n const sortLessThanValue = this.state.sortOrder === 'Ascending' ? -1 : 1;\r\n const fieldName = this.state.orderBy.toLowerCase();\r\n\r\n filteredMediaItems.sort((s1, s2) => {\r\n\r\n let s1FieldValue = s1[fieldName];\r\n if (typeof s1FieldValue === 'string') {\r\n s1FieldValue = s1FieldValue.toLowerCase();\r\n }\r\n\r\n let s2FieldValue = s2[fieldName];\r\n if (typeof s2FieldValue === 'string') {\r\n s2FieldValue = s2FieldValue.toLowerCase();\r\n }\r\n\r\n if ('localeCompare' in String.prototype && typeof s1FieldValue === 'string' && typeof s2FieldValue === 'string') {\r\n const value = s1FieldValue.localeCompare(s2FieldValue);\r\n if (value > 0) {\r\n return sortGreaterThanValue;\r\n }\r\n\r\n if (value < 0) {\r\n return sortLessThanValue;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n if (s1FieldValue > s2FieldValue) {\r\n return sortGreaterThanValue;\r\n }\r\n if (s1FieldValue < s2FieldValue) {\r\n return sortLessThanValue;\r\n }\r\n return 0;\r\n });\r\n\r\n this.setState({ filteredMediaItems });\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const visibleMediaItems = this.state.filteredMediaItems.slice(0, this.state.visibleMediaItemCount);\r\n\r\n return (\r\n
\r\n\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Purchase History\r\n \r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length === this.state.filteredMediaItems.length &&\r\n \r\n {this.state.mediaItems.length} purchase{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && this.state.mediaItems.length !== this.state.filteredMediaItems.length &&\r\n \r\n {this.state.filteredMediaItems.length} match{this.state.filteredMediaItems.length === 1 ? '' : 'es'} of {this.state.mediaItems.length} purchase{this.state.mediaItems.length === 1 ? '' : 's'}\r\n \r\n }\r\n
\r\n
\r\n
\r\n \r\n this.setState({ anchorSort: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.sortColumn('Title')}>\r\n \r\n {this.state.orderBy === 'Title' ? : }\r\n \r\n \r\n \r\n\r\n this.sortColumn('Date')}>\r\n \r\n {this.state.orderBy === 'Date' ? : }\r\n \r\n \r\n \r\n\r\n \r\n\r\n this.sortColumn(this.state.orderBy)}>\r\n {this.state.sortOrder === 'Descending' ? : }\r\n \r\n
\r\n
\r\n this.setState({ anchorFilter: e.currentTarget })}>\r\n \r\n \r\n this.setState({ anchorFilter: undefined })}\r\n transformOrigin={{ vertical: \"top\", horizontal: \"right\" }}\r\n anchorOrigin={{ vertical: \"bottom\", horizontal: \"right\" }}\r\n getContentAnchorEl={null}\r\n >\r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.All }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.All ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.ChurchMediaSet }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.ChurchMediaSet ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.CountdownVideo }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.CountdownVideo ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.StillBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.StillBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.MotionBackground }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.MotionBackground ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.PreachingSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PreachingSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.WorshipLyricSlide }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.WorshipLyricSlide ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SermonSeriesKit }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SermonSeriesKit ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SermonSeriesKit }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.PremiumSermonKit ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.VideoIllustration }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.VideoIllustration ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SocialGraphic }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SocialGraphic ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Comedy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Comedy ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.Inspirational }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.Inspirational ? : }\r\n \r\n \r\n \r\n this.setState({ anchorFilter: undefined, filterValue: FilterValue.SmallGroupStudy }, this.updateFilteredMediaItems)}>\r\n \r\n {this.state.filterValue === FilterValue.SmallGroupStudy ? : }\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n this.setState({ queryText: e.target.value, visibleMediaItemCount: 10 }, this.updateFilteredMediaItems)}\r\n />\r\n
\r\n \r\n\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length === 0 &&\r\n \r\n \r\n
\r\n You haven't purchased any media.\r\n
\r\n }\r\n {!this.state.loading && this.state.mediaItems.length > 0 && visibleMediaItems.length === 0 &&\r\n \r\n \r\n
\r\n No matches found.\r\n
\r\n }\r\n {!this.state.loading && visibleMediaItems.length > 0 &&\r\n this.setState({ visibleMediaItemCount: this.state.visibleMediaItemCount + 10 })}\r\n hasMore={visibleMediaItems.length < this.state.filteredMediaItems.length}\r\n useWindow={false}\r\n getScrollParent={() => document.getElementById('main')}\r\n loader={
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
}\r\n >\r\n {visibleMediaItems.map(mediaItem =>\r\n \r\n \r\n \r\n \r\n {new Date(mediaItem.date).toLocaleDateString()}\r\n \r\n \r\n {mediaItem.type}\r\n \r\n \r\n \r\n \r\n \r\n {mediaItem.type !== \"Church Media Set\" &&\r\n <>\r\n {(mediaItem.shareLink && mediaItem.shareableUrl && mediaItem.shareableUrlName) &&\r\n \r\n }\r\n \r\n }\r\n {mediaItem.url && mediaItem.url.indexOf('/') >= 0 &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n \r\n {mediaItem.shareLink &&\r\n \r\n Share link: \r\n Views: {mediaItem.views}\r\n \r\n }\r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(Purchases));","import * as React from 'react';\r\nimport AvatarEditor from 'react-avatar-editor';\r\n\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport Slider from '@material-ui/core/Slider';\r\nimport withRoot from '../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n slider: {\r\n padding: '22px 0px',\r\n },\r\n cropDialog: {\r\n minWidth: '400px',\r\n overflow: 'hidden',\r\n [theme.breakpoints.down('xs')]: {\r\n minWidth: 'inherit'\r\n },\r\n },\r\n });\r\n\r\ninterface ImageExportConfiguration {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport interface ExportedImage {\r\n width: number;\r\n height: number;\r\n base64ImageData: string;\r\n}\r\n\r\ninterface Props extends WithStyles {\r\n open: boolean;\r\n onClose: () => void;\r\n imageToEdit: string;\r\n onImageEdited: (exportedImages: ExportedImage[]) => void;\r\n disabled?: boolean;\r\n editorWidth?: number;\r\n editorHeight?: number;\r\n exportConfigurations?: ImageExportConfiguration[];\r\n exportJpgQuality?: number;\r\n}\r\n\r\ninterface State {\r\n cropScale: number;\r\n disabled: boolean;\r\n}\r\n\r\nclass EditImageDialog extends React.Component {\r\n cropperRef: AvatarEditor | null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n this.cropperRef = null;\r\n this.state = {\r\n cropScale: 1,\r\n disabled: false\r\n };\r\n }\r\n\r\n onAcceptEdit = () => {\r\n const { editorWidth, editorHeight, exportJpgQuality, exportConfigurations } = this.props;\r\n const disabled = this.props.disabled || this.state.disabled;\r\n const avatarEditor = this.cropperRef;\r\n if (disabled || !avatarEditor) {\r\n return;\r\n }\r\n this.setState({ disabled: true });\r\n\r\n if (exportConfigurations) {\r\n let exportedImages = exportConfigurations.map(c => this.exportJpg(c.width, c.height, avatarEditor, exportJpgQuality));\r\n this.setState({ disabled: false }, () => this.props.onImageEdited(exportedImages));\r\n } else {\r\n let width = editorWidth ? editorWidth : 500;\r\n let height = editorHeight ? editorHeight : 500;\r\n let exportedImage = this.exportJpg(width, height, avatarEditor, exportJpgQuality);\r\n this.setState({ disabled: false }, () => this.props.onImageEdited([exportedImage]));\r\n }\r\n }\r\n\r\n exportJpg = (width: number, height: number, avatarEditor: AvatarEditor, jpgQuality?: number) => {\r\n let canvas = document.createElement('canvas');\r\n canvas.width = width;\r\n canvas.height = height;\r\n\r\n const image = avatarEditor.getImage();\r\n const ctx = canvas.getContext('2d');\r\n ctx!.drawImage(image, 0, 0, width, height);\r\n\r\n let exportQuality = jpgQuality || .7;\r\n const base64ImageData = canvas.toDataURL(\"image/jpeg\", exportQuality);\r\n\r\n let exportedImage: ExportedImage = {\r\n width,\r\n height,\r\n base64ImageData\r\n };\r\n\r\n return exportedImage;\r\n }\r\n\r\n render() {\r\n let classes = this.props.classes;\r\n const { open, onClose, imageToEdit, editorWidth, editorHeight } = this.props;\r\n\r\n const disabled = this.props.disabled || this.state.disabled;\r\n\r\n return (\r\n \r\n Crop Image\r\n \r\n this.cropperRef = cropper}\r\n image={imageToEdit}\r\n width={editorWidth ? editorWidth : 250}\r\n height={editorHeight ? editorHeight : 250}\r\n border={10}\r\n rotate={0}\r\n scale={this.state.cropScale}\r\n />\r\n Zoom\r\n this.setState({ cropScale: value as number })}\r\n disabled={disabled}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(EditImageDialog));","import Button from '@material-ui/core/Button';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport * as React from 'react';\r\nimport EditImageDialog, { ExportedImage } from '../../../../components/EditImageDialog';\r\nimport { VideoMedia, MediaStatus } from '../../../../entities/VideoMedia';\r\nimport { FieldValidationError, ServerResponse } from '../../../../services/ServiceHelper';\r\nimport { CreateEncodingJobRequest, EncodingJobStatus, SaveMediaVideoAssetRequest, SaveVideoMediaPreviewImageRequest, VideoDownload, VideoMediaService } from '../../../../services/VideoMediaService';\r\nimport withRoot from '../../../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '70vh',\r\n maxWidth: '1000px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto',\r\n [theme.breakpoints.up('sm')]: {\r\n minWidth: 800\r\n }\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n videoMedia: VideoMedia;\r\n disableSubmit: boolean;\r\n status: MediaStatus\r\n onUpdate: (videoMedia: VideoMedia, onCompletion?: () => void) => void;\r\n onChangeDisableSubmit: (disableSubmit: boolean) => void;\r\n onError: (message: string) => void;\r\n onSuccess: (message: string) => void;\r\n activeReadOnlyPrompt: () => void;\r\n}\r\n\r\ninterface State {\r\n videoDownloads: VideoDownload[];\r\n uploadedPreviewImage?: HTMLImageElement;\r\n newPreviewImage?: string;\r\n sourceVideoQuality: string;\r\n uploadVideoPercentage?: number;\r\n encodeVideoPercentage?: number;\r\n uploadVideoEnabled: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass VideoMediaUpload extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n videoDownloads: [],\r\n sourceVideoQuality: \"\",\r\n uploadVideoEnabled: props.videoMedia.previewVideoUrl == null,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n let downloadResponse = this.props.status !== MediaStatus.Approved ? \r\n await VideoMediaService.getPendingVideoMediaAvailableVideoDownloads(this.props.videoMedia.id) : \r\n await VideoMediaService.getVideoMediaAvailableVideoDownloads(this.props.videoMedia.id);\r\n if (ServerResponse.isSuccess(downloadResponse)) {\r\n this.setState({ videoDownloads: downloadResponse.data });\r\n }\r\n }\r\n\r\n async handlePreviewImageUpload(e: React.ChangeEvent) {\r\n if (this.props.status === MediaStatus.Approved || this.props.status === MediaStatus.Rejected) {\r\n this.props.activeReadOnlyPrompt();\r\n return;\r\n }\r\n let file = e.target.files && e.target.files[0];\r\n // clear the value of the selected file to uploaded so that it can be selected again if there is an error \r\n e.target.value = \"\";\r\n\r\n if (file) {\r\n let dataUrl = await this.readFileAsDataUrl(file);\r\n try {\r\n let image = await this.loadImage(dataUrl);\r\n this.setState({ uploadedPreviewImage: image });\r\n } catch (error) {\r\n this.props.onError(\"Unsupported image type\");\r\n }\r\n }\r\n }\r\n\r\n onSavePreviewImage = async (exportedImages: ExportedImage[]) => {\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n if (disableSubmit) {\r\n return;\r\n }\r\n\r\n this.props.onChangeDisableSubmit(true);\r\n\r\n const thumbnail = exportedImages.find(i => i.width === 512);\r\n const poster = exportedImages.find(i => i.width === 854);\r\n\r\n if (!thumbnail || !poster) {\r\n this.props.onError(\"Preview image could not be cropped\");\r\n return;\r\n }\r\n\r\n this.setState({ errors: [] });\r\n\r\n let request: SaveVideoMediaPreviewImageRequest = {\r\n videoMediaId: videoMedia.id,\r\n base64ThumbnailImage: thumbnail.base64ImageData,\r\n base64PosterImage: poster.base64ImageData\r\n };\r\n let response = await VideoMediaService.saveVideoMediaPreviewImage(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.props.onUpdate(response.data, () => {\r\n this.setState({ uploadedPreviewImage: undefined, newPreviewImage: thumbnail.base64ImageData });\r\n this.props.onSuccess(message);\r\n });\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n let errors = response.errors;\r\n let hasGenericError = FieldValidationError.hasGenericError(errors);\r\n this.setState({ errors });\r\n let errorMessage = hasGenericError ? FieldValidationError.getGenericErrorSummary(errors) : `${errors.length} Field${errors.length > 1 ? \"s\" : \"\"} Is Invalid`;\r\n this.props.onError(errorMessage);\r\n } else {\r\n this.props.onError(response.message);\r\n }\r\n this.props.onChangeDisableSubmit(false);\r\n }\r\n\r\n async handleVideoUpload(e: React.ChangeEvent) {\r\n const { sourceVideoQuality } = this.state;\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n let file = e.target.files && e.target.files[0];\r\n // clear the value of the selected file to uploaded so that it can be selected again if there is an error \r\n e.target.value = \"\";\r\n\r\n if (!file || disableSubmit) {\r\n return;\r\n }\r\n\r\n if (!sourceVideoQuality) {\r\n let error: FieldValidationError = { field: \"VideoPreview\", errors: [\"Must select source video quality\"] };\r\n this.setState({ errors: [error] });\r\n this.props.onError(`Video quality not set`);\r\n return;\r\n }\r\n\r\n this.props.onChangeDisableSubmit(true);\r\n\r\n let uploadedFileNameSplit = file.name.split(\".\");\r\n let extension = uploadedFileNameSplit[uploadedFileNameSplit.length - 1];\r\n let fileName = videoMedia.title.replace(/[^A-Z0-9]/ig, \"\") + `.${extension}`;\r\n\r\n let uploadUrlResponse = await VideoMediaService.generateVideoUploadUrl(videoMedia.id, videoMedia.type, fileName);\r\n if (ServerResponse.isError(uploadUrlResponse)) {\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(`(${uploadUrlResponse.statusCode}) ${uploadUrlResponse.message}`);\r\n return;\r\n } else if (ServerResponse.isSuccess(uploadUrlResponse)) {\r\n let uploadResponse = await VideoMediaService.uploadSourceVideo(uploadUrlResponse.data.url, file, uploadVideoPercentage => this.setState({ uploadVideoPercentage }));\r\n if (ServerResponse.isError(uploadResponse)) {\r\n this.setState({ uploadVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(`(${uploadResponse.statusCode}) ${uploadResponse.message}`);\r\n return;\r\n }\r\n \r\n let encodingJobRequest: CreateEncodingJobRequest = {\r\n videoMediaId: videoMedia.id,\r\n videoMediaType: videoMedia.type,\r\n sourceFileName: fileName,\r\n sourceQuality: sourceVideoQuality\r\n };\r\n let encodeJobResponse = await VideoMediaService.createEncodingJob(encodingJobRequest);\r\n if (ServerResponse.isError(encodeJobResponse) || ServerResponse.isModelValidation(encodeJobResponse)) {\r\n this.setState({ uploadVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(\"Failed to create encoding job\");\r\n return;\r\n }\r\n \r\n const encodeJobId = encodeJobResponse.data.jobId;\r\n this.setState({ uploadVideoPercentage: undefined, encodeVideoPercentage: 0 }, () => this.monitorEncodingJob(encodeJobId));\r\n }\r\n }\r\n\r\n monitorEncodingJob = (encodeJobId: string) => {\r\n const interval = setInterval(async () => {\r\n let response = await VideoMediaService.getEncodingJobStatus(encodeJobId);\r\n if (ServerResponse.isSuccess(response)) {\r\n let status = response.data;\r\n if (status.isComplete && status.error) {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(status.error);\r\n clearInterval(interval);\r\n } else if (status.isComplete) {\r\n this.setState({ encodeVideoPercentage: 100 });\r\n this.onVideoEncodingComplete(status);\r\n clearInterval(interval);\r\n } else if (!status.isComplete && status.completionPercentage >= 0){\r\n this.setState({ encodeVideoPercentage: status.completionPercentage });\r\n }\r\n }\r\n }, 15 * 1000);\r\n }\r\n\r\n onVideoEncodingComplete = async (status: EncodingJobStatus) => {\r\n const { videoMedia } = this.props;\r\n if (!status.isComplete || status.error || !status.preview || !status.downloads) {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onChangeDisableSubmit(false);\r\n this.props.onError(\"Video encode failed\");\r\n return;\r\n }\r\n\r\n let request: SaveMediaVideoAssetRequest = {\r\n videoMediaId: videoMedia.id,\r\n previewVideoPath: status.preview.path,\r\n downloadDetails: status.downloads.map(d => ({\r\n path: d.path,\r\n extension: d.extension,\r\n quality: d.quality,\r\n duration: d.duration\r\n }))\r\n };\r\n let response = await VideoMediaService.saveVideoMediaVideoMedia(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n this.props.onUpdate(response.data, this.onEncodingSuccess);\r\n\r\n let videoDownloadResponse = await VideoMediaService.getPendingVideoMediaAvailableVideoDownloads(videoMedia.id);\r\n if (ServerResponse.isSuccess(videoDownloadResponse)) {\r\n this.setState({ videoDownloads: videoDownloadResponse.data });\r\n }\r\n } else {\r\n this.setState({ encodeVideoPercentage: undefined });\r\n this.props.onError(\"Video encode failed\");\r\n }\r\n this.props.onChangeDisableSubmit(false);\r\n }\r\n\r\n onEncodingSuccess = () => {\r\n this.setState({ uploadVideoEnabled: false, encodeVideoPercentage: undefined });\r\n this.props.onSuccess(\"Video successfully encoded\");\r\n }\r\n\r\n loadImage(src: string) {\r\n return new Promise((resolve, reject) => {\r\n let img = new Image();\r\n img.onload = function () {\r\n resolve(img);\r\n };\r\n img.onerror = function () {\r\n reject(img);\r\n };\r\n img.src = src;\r\n });\r\n }\r\n\r\n readFileAsDataUrl(file: File) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => {\r\n // FileReader.readAsDataURL always returns strings\r\n let dataUrl = reader.result as string;\r\n resolve(dataUrl);\r\n };\r\n reader.onabort = e => {\r\n reject(e);\r\n };\r\n reader.onerror = e => {\r\n reject(e);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n\r\n onDownload = async (videoDownload: VideoDownload) => {\r\n window.location.href = \"api/VideoMedia/GetVideoDownload/\" + videoDownload.id;\r\n }\r\n\r\n readOnlyState () {\r\n this.props.activeReadOnlyPrompt();\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const {\r\n uploadedPreviewImage,\r\n newPreviewImage,\r\n sourceVideoQuality,\r\n videoDownloads,\r\n uploadVideoEnabled,\r\n uploadVideoPercentage,\r\n encodeVideoPercentage,\r\n errors,\r\n } = this.state;\r\n const { videoMedia, disableSubmit } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n Upload Media}\r\n />\r\n
\r\n \r\n Preview Image *\r\n \r\n {\r\n videoMedia.thumbnailImageUrl || newPreviewImage\r\n ?\r\n \r\n \r\n
\r\n \"\"\r\n
\r\n
\r\n \r\n this.handlePreviewImageUpload(e)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n :\r\n <>\r\n {\r\n this.handlePreviewImageUpload(e)}\r\n />\r\n }\r\n \r\n \r\n Add Preview Image\r\n \r\n \r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n Video *\r\n {\r\n videoMedia.previewVideoUrl\r\n &&\r\n !uploadVideoEnabled\r\n &&\r\n <>\r\n \r\n \r\n Preview Video\r\n
\r\n \r\n
\r\n \r\n \r\n {this.props.status === MediaStatus.Approved || this.props.status === MediaStatus.Rejected ? this.props.activeReadOnlyPrompt() : this.setState({ uploadVideoEnabled: true })}}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n videoDownloads.length > 0\r\n &&\r\n <>\r\n
\r\n Video Downloads\r\n
\r\n {videoDownloads.map(videoDownload =>\r\n this.onDownload(videoDownload)}\r\n disabled={disableSubmit}\r\n style={{ margin: 5 }}\r\n >\r\n Download {videoDownload.extension.toUpperCase()} ({videoDownload.quality})\r\n \r\n )}\r\n \r\n }\r\n \r\n }\r\n {\r\n uploadVideoEnabled\r\n &&\r\n encodeVideoPercentage == null\r\n &&\r\n uploadVideoPercentage == null\r\n &&\r\n <>\r\n \r\n Select Quality\r\n this.setState({ sourceVideoQuality: e.target.value as string })}\r\n >\r\n Select Quality\r\n 720p\r\n 1080p\r\n 4K\r\n \r\n \r\n
\r\n this.handleVideoUpload(e)}\r\n />\r\n \r\n \r\n Add Video\r\n \r\n \r\n \r\n }\r\n {\r\n uploadVideoPercentage != null\r\n &&\r\n <>\r\n Upload Progress: {uploadVideoPercentage}%\r\n \r\n \r\n }\r\n {\r\n encodeVideoPercentage != null\r\n &&\r\n <>\r\n Encoding Progress: {encodeVideoPercentage}%\r\n \r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n this.setState({ uploadedPreviewImage: undefined })}\r\n imageToEdit={uploadedPreviewImage ? uploadedPreviewImage.src : \"\"}\r\n onImageEdited={this.onSavePreviewImage}\r\n editorWidth={854}\r\n editorHeight={480}\r\n exportConfigurations={[{ width: 854, height: 480 }, { width: 512, height: 288 }]}\r\n disabled={disableSubmit}\r\n />\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(VideoMediaUpload));","import Button from '@material-ui/core/Button';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport FormLabel from '@material-ui/core/FormLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Input from '@material-ui/core/Input';\r\nimport InputAdornment from '@material-ui/core/InputAdornment';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport { createStyles, Theme, WithStyles, withStyles } from '@material-ui/core/styles';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddCircleOutlineIcon from '@material-ui/icons/AddCircleOutline';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport EyeIcon from '@material-ui/icons/RemoveRedEye';\r\nimport * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { VideoMedia, VideoMediaType, MediaStatus } from '../../../../entities/VideoMedia';\r\nimport { FieldValidationError, ServerResponse } from '../../../../services/ServiceHelper';\r\nimport { SaveVideoMediaRequest, VideoMediaService, SaveApprovedVideoMediaRequest, SaveRejectedVideoMediaRequest } from '../../../../services/VideoMediaService';\r\nimport DateHelper from '../../../../utilities/DateHelper';\r\nimport SuccessSnackbar from '../../../../components/SuccessSnackbar';\r\nimport ErrorSnackbar from '../../../../components/ErrorSnackbar';\r\nimport withRoot from '../../../../withRoot';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport VideoMediaUpload from './videoMediaUpload';\r\nimport { MediaItemStatus } from '../../../../entities/MediaItem';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport { MediaService, MediaDisableRequest, MediaDeleteRequest, MediaEnableRequest, MediaCancelRequest } from '../../../../services/MediaService';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '70vh',\r\n maxWidth: '1000px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto',\r\n [theme.breakpoints.up('sm')]: {\r\n minWidth: 800\r\n }\r\n },\r\n form: {\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n formButtonsWrapper: {\r\n flex: '0 0 auto',\r\n margin: '8px 4px',\r\n paddingBottom: '20px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n formButton: {\r\n marginLeft: 'auto'\r\n },\r\n chip: {\r\n margin: theme.spacing() / 2,\r\n color: \"#FFF\",\r\n backgroundColor: theme.palette.primary.light,\r\n \"& svg\": {\r\n color: \"rgb(255,255,255,.7)\",\r\n \"&:hover\": {\r\n color: theme.palette.primary.main\r\n }\r\n }\r\n },\r\n weightedTopicChip: {\r\n backgroundColor: theme.palette.secondary.light,\r\n \"& svg\": {\r\n \"&:hover\": {\r\n color: theme.palette.secondary.main\r\n }\r\n }\r\n },\r\n buttonProgress: {\r\n color: \"rgb(255,255,255,.7)\",\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n config: AppConfig;\r\n id?: string;\r\n status: MediaStatus;\r\n type?: string;\r\n onPathChange: (path: string) => void;\r\n onPathReplace: (path: string) => void;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n videoMedia?: VideoMedia;\r\n videoMediaId?: number;\r\n url?: string;\r\n dateAvailableValue?: string;\r\n isEnabled: boolean;\r\n showAddProducerDialog: boolean;\r\n title: string;\r\n summary: string;\r\n language: string;\r\n serviceStyles: string[];\r\n audiences: string[];\r\n serviceGenres: string[];\r\n topics: string[];\r\n topicInput: string;\r\n scriptureReferences: string[];\r\n scriptureReferenceInput: string;\r\n listPrice: number;\r\n hasDiscount: boolean;\r\n discountedPrice: number;\r\n showSaveConfirmationDialog: boolean;\r\n disableSubmit: boolean;\r\n errors: FieldValidationError[];\r\n successMessage?: string;\r\n errorMessage?: string;\r\n videoMediaType: VideoMediaType;\r\n status: MediaStatus;\r\n readonly: boolean;\r\n activateReadOnlyPrompt: boolean;\r\n reasonForUpdate: string;\r\n creatingPending: boolean;\r\n showDisable: boolean;\r\n disableReason: string;\r\n showDelete: boolean;\r\n deleteReason: string;\r\n showEnable: boolean;\r\n enableReason: string;\r\n showCancel: boolean;\r\n}\r\n\r\nclass VideoMediaDetail extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n\r\n const addType = this.props.type ? this.getAddType(this.props.type) : VideoMediaType.Video_Illustration;\r\n\r\n this.state = {\r\n loading: true,\r\n videoMediaId: this.props.id ? parseInt(this.props.id, 10) : undefined,\r\n status: this.props.status,\r\n videoMediaType: addType,\r\n isEnabled: false,\r\n showAddProducerDialog: false,\r\n title: \"\",\r\n summary: \"\",\r\n language: \"English\",\r\n serviceStyles: [],\r\n audiences: [],\r\n serviceGenres: [],\r\n topics: [],\r\n topicInput: \"\",\r\n scriptureReferences: [],\r\n scriptureReferenceInput: \"\",\r\n listPrice: 19.99,\r\n hasDiscount: false,\r\n discountedPrice: 0,\r\n\r\n showSaveConfirmationDialog: false,\r\n disableSubmit: false,\r\n errors: [],\r\n dateAvailableValue: DateHelper.getDateStringFormattedForInput(new Date()),\r\n readonly: this.props.status === MediaStatus.Approved,\r\n activateReadOnlyPrompt: false,\r\n reasonForUpdate: \"\",\r\n creatingPending: false,\r\n showDisable: false,\r\n disableReason: \"\",\r\n showDelete: false,\r\n deleteReason: \"\",\r\n showEnable: false,\r\n enableReason: \"\",\r\n showCancel: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n if (this.props.type) {\r\n document.title = `SermonCentral Account - Add ${this.state.videoMediaType}`;\r\n }\r\n\r\n if (this.state.videoMediaId) {\r\n const videoMediaResponse = this.state.status !== MediaStatus.Approved ?\r\n await VideoMediaService.getPendingVideoMedia(this.state.videoMediaId) :\r\n await VideoMediaService.getVideoMedia(this.state.videoMediaId);\r\n\r\n if (ServerResponse.isSuccess(videoMediaResponse)) {\r\n let videoMedia = videoMediaResponse.data;\r\n this.setVideoMediaToState(videoMedia, () => this.setState({ loading: false }));\r\n }\r\n else {\r\n this.setState({ errorMessage: \"Media not found\" });\r\n }\r\n }\r\n else {\r\n this.setState({ loading: false });\r\n }\r\n }\r\n\r\n getAddType(type: string) {\r\n switch (type) {\r\n case \"video-illustration\": return VideoMediaType.Video_Illustration;\r\n case \"motion-background\": return VideoMediaType.Motion_Background;\r\n case \"countdown-video\": return VideoMediaType.Countdown_Video;\r\n default: return VideoMediaType.Video_Illustration;\r\n }\r\n }\r\n\r\n setVideoMediaToState = (videoMedia: VideoMedia, onCompletion?: () => void) => {\r\n document.title = `SermonCentral Admin - Edit ${videoMedia.type}`;\r\n this.setState({\r\n videoMedia: videoMedia,\r\n videoMediaId: videoMedia.id,\r\n title: videoMedia.title,\r\n videoMediaType: videoMedia.type,\r\n summary: videoMedia.summary,\r\n language: videoMedia.language,\r\n isEnabled: videoMedia.isEnabled,\r\n dateAvailableValue: videoMedia.dateAvailable ? DateHelper.getDateStringFormattedForInput(videoMedia.dateAvailable) : undefined,\r\n listPrice: videoMedia.listPrice || 0,\r\n discountedPrice: videoMedia.discountedPrice || 0,\r\n hasDiscount: videoMedia.discountedPrice != null,\r\n serviceGenres: videoMedia.genres,\r\n audiences: videoMedia.audiences,\r\n serviceStyles: videoMedia.styles,\r\n scriptureReferences: videoMedia.scriptureReferences,\r\n topics: videoMedia.topics,\r\n url: videoMedia.url,\r\n status: videoMedia.status\r\n }, onCompletion);\r\n }\r\n\r\n onPageClose = () => {\r\n const { videoMediaType } = this.state;\r\n if (videoMediaType === VideoMediaType.Countdown_Video) {\r\n this.props.onPathChange('/media/manage/countdown-videos');\r\n }\r\n if (videoMediaType === VideoMediaType.Motion_Background) {\r\n this.props.onPathChange('/media/manage/motion-backgrounds');\r\n }\r\n if (videoMediaType === VideoMediaType.Video_Illustration) {\r\n this.props.onPathChange('/media/manage/video-illustrations');\r\n }\r\n }\r\n\r\n onSaveRequested = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n const { topics, scriptureReferences, disableSubmit } = this.state;\r\n\r\n if (disableSubmit) {\r\n return;\r\n }\r\n let errors = this.validateStatus();\r\n if (errors.length > 0) {\r\n this.setState({ errors, errorMessage: `${errors.length} Field${errors.length > 1 ? \"s\" : \"\"} Invalid` });\r\n return;\r\n }\r\n\r\n // Topics and scripture references aren't required but should be encouraged \r\n if (topics.length < 2 || scriptureReferences.length < 1) {\r\n this.setState({ showSaveConfirmationDialog: true });\r\n return;\r\n }\r\n\r\n this.onSaveVideoMedia();\r\n }\r\n\r\n onSaveVideoMedia = async () => {\r\n let {\r\n videoMediaId,\r\n videoMediaType,\r\n status,\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n videoMedia,\r\n } = this.state;\r\n\r\n // Type check nullable state for typescript \r\n // (required fields should be caught in validation step, so this should never actually return)\r\n if (!dateAvailableValue) {\r\n return;\r\n }\r\n this.setState({ disableSubmit: true, errors: [] });\r\n\r\n let request: SaveVideoMediaRequest = {\r\n id: videoMediaId,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n parentId: videoMedia ? videoMedia.parentId : undefined,\r\n adminComment: videoMedia?.adminComment,\r\n producerComment: videoMedia?.producerComment\r\n };\r\n let response = await VideoMediaService.saveVideoMedia(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, showSaveConfirmationDialog: false }));\r\n if (videoMediaId == null || this.props.status === MediaStatus.Approved) {\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n }\r\n } else if (ServerResponse.isModelValidation(response)) {\r\n let hasGenericError = FieldValidationError.hasGenericError(response.errors);\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: hasGenericError ? FieldValidationError.getGenericErrorSummary(response.errors) : `${response.errors.length} Field${response.errors.length > 1 ? \"s\" : \"\"} Is Invalid`,\r\n errors: response.errors,\r\n showSaveConfirmationDialog: false\r\n });\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: response.message,\r\n showSaveConfirmationDialog: false\r\n });\r\n }\r\n }\r\n\r\n styleIsSelected = (style: string) => {\r\n const { serviceStyles } = this.state;\r\n return serviceStyles.includes(style);\r\n }\r\n\r\n toggleStyle = (style: string) => {\r\n const { serviceStyles } = this.state;\r\n let isSelected = this.styleIsSelected(style);\r\n if (isSelected) {\r\n this.setState({ serviceStyles: serviceStyles.filter(s => s !== style) });\r\n } else {\r\n this.setState({ serviceStyles: [...serviceStyles, style] });\r\n }\r\n }\r\n\r\n audienceIsSelected = (audience: string) => {\r\n const { audiences } = this.state;\r\n return audiences.includes(audience);\r\n }\r\n\r\n toggleAudience = (audience: string) => {\r\n const { audiences } = this.state;\r\n let isSelected = this.audienceIsSelected(audience);\r\n if (isSelected) {\r\n this.setState({ audiences: audiences.filter(a => a !== audience) });\r\n } else {\r\n this.setState({ audiences: [...audiences, audience] });\r\n }\r\n }\r\n\r\n genreIsSelected = (genre: string) => {\r\n const { serviceGenres } = this.state;\r\n return serviceGenres.includes(genre);\r\n }\r\n\r\n toggleGenre = (genre: string) => {\r\n const { serviceGenres } = this.state;\r\n let isSelected = this.genreIsSelected(genre);\r\n if (isSelected) {\r\n this.setState({ serviceGenres: serviceGenres.filter(g => g !== genre) });\r\n } else {\r\n this.setState({ serviceGenres: [...serviceGenres, genre] });\r\n }\r\n }\r\n\r\n addTopic = () => {\r\n const { topics, topicInput } = this.state;\r\n let newTopics = topicInput\r\n .split(\",\")\r\n .map(t => t.trim())\r\n .filter(t => t)\r\n .filter(t => !topics.includes(t));\r\n if (newTopics.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ topics: [...topics, ...newTopics], topicInput: \"\" });\r\n }\r\n\r\n removeTopic = (topicToRemove: string) => {\r\n this.setState({ topics: this.state.topics.filter(t => t !== topicToRemove) });\r\n }\r\n\r\n addScriptureReference = () => {\r\n const { scriptureReferences, scriptureReferenceInput } = this.state;\r\n let newScriptureReferences = scriptureReferenceInput\r\n .split(\",\")\r\n .map(t => t.trim())\r\n .filter(t => t)\r\n .filter(t => !scriptureReferences.includes(t));\r\n\r\n if (newScriptureReferences.length === 0) {\r\n return;\r\n }\r\n\r\n this.setState({ scriptureReferences: [...scriptureReferences, ...newScriptureReferences], scriptureReferenceInput: \"\" });\r\n }\r\n\r\n removeScriptureReference = (scriptureReferenceToRemove: string) => {\r\n const { scriptureReferences } = this.state;\r\n this.setState({ scriptureReferences: scriptureReferences.filter(sr => sr !== scriptureReferenceToRemove) });\r\n }\r\n\r\n getPriceStatus() {\r\n const { listPrice: listingPrice, discountedPrice, hasDiscount, } = this.state;\r\n\r\n if (listingPrice === 0 && !hasDiscount) {\r\n return <>Only available for PRO Download;\r\n }\r\n\r\n if (discountedPrice >= listingPrice) {\r\n return Invalid;\r\n }\r\n\r\n return hasDiscount ? <>${listingPrice} ${discountedPrice} : <>${listingPrice};\r\n }\r\n\r\n validateStatus() {\r\n const {\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice,\r\n } = this.state;\r\n\r\n let errors: FieldValidationError[] = [];\r\n\r\n if (!dateAvailableValue) {\r\n errors.push({ field: \"DateAvailable\", errors: [\"Must set date that media will be available\"] });\r\n }\r\n if (dateAvailableValue && isNaN(new Date(dateAvailableValue).getTime())) {\r\n errors.push({ field: \"DateAvailable\", errors: [\"Must set date that media will be available\"] });\r\n }\r\n if (title.trim().length === 0) {\r\n errors.push({ field: \"Title\", errors: [\"Missing Title\"] });\r\n }\r\n if (summary.trim().length === 0) {\r\n errors.push({ field: \"Summary\", errors: [\"Missing Summary\"] });\r\n }\r\n if (serviceGenres.length === 0) {\r\n errors.push({ field: \"Genres\", errors: [\"Must select at least one genre\"] });\r\n }\r\n if (listPrice > 0 && discountedPrice >= listPrice) {\r\n errors.push({ field: \"DiscountedPrice\", errors: [\"Discounted price must be lower than listing price\"] });\r\n }\r\n\r\n return errors;\r\n }\r\n\r\n onEnable = async () => {\r\n const { enableReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaEnableRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: enableReason\r\n };\r\n\r\n let response = await MediaService.requestEnable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n enableReason: \"\",\r\n showEnable: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n enableReason: \"\",\r\n showEnable: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onCancel = async () => {\r\n const { videoMediaId } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaCancelRequest = {\r\n id: videoMediaId,\r\n };\r\n\r\n let response = await MediaService.requestCancel(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n showCancel: false,\r\n successMessage: \"These changes have been cancelled, redirecting back to Manage Media...\"\r\n }, () => setTimeout(() => this.props.onPathChange('/media/manage/all'), 3000));\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n showCancel: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onDisable = async () => {\r\n const { disableReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaDisableRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: disableReason\r\n };\r\n\r\n let response = await MediaService.requestDisable(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n disableReason: \"\",\r\n showDisable: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n disableReason: \"\",\r\n showDisable: false,\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n onDelete = async () => {\r\n const { deleteReason, videoMediaId, title } = this.state;\r\n\r\n if (!videoMediaId) {\r\n return;\r\n }\r\n\r\n this.setState({ disableSubmit: true });\r\n\r\n var request: MediaDeleteRequest = {\r\n id: videoMediaId,\r\n title: title,\r\n reason: deleteReason\r\n };\r\n\r\n let response = await MediaService.requestDelete(request);\r\n\r\n if (ServerResponse.isSuccess(response)) {\r\n this.setState({\r\n disableSubmit: false,\r\n deleteReason: \"\",\r\n showDelete: false,\r\n successMessage: \"A request has been sent to SermonCentral Admin. We will contact you as soon as possible.\"\r\n })\r\n } else {\r\n this.setState({\r\n showDelete: false,\r\n deleteReason: \"\",\r\n errorMessage: \"We were unable to perform this request, please try again.\"\r\n })\r\n }\r\n }\r\n\r\n activeReadOnlyPrompt() {\r\n this.setState({ activateReadOnlyPrompt: true });\r\n }\r\n\r\n onConfirmEditInReadOnly = async () => {\r\n if (!this.state.videoMedia) {\r\n return;\r\n }\r\n if (this.state.reasonForUpdate.length === 0) {\r\n this.setState({ errors: [{ field: \"ReasonForUpdate\", errors: [\"Please give a reason for the edit.\"] }] })\r\n return;\r\n }\r\n\r\n let {\r\n videoMediaId,\r\n videoMediaType,\r\n status,\r\n dateAvailableValue,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n videoMedia,\r\n reasonForUpdate\r\n } = this.state;\r\n\r\n\r\n if (status === MediaStatus.Approved) {\r\n let request: SaveApprovedVideoMediaRequest = {\r\n id: videoMediaId,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue!),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n producerComment: reasonForUpdate\r\n };\r\n \r\n let response = await VideoMediaService.createPendingItemFromApproved(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, creatingPending: false, activateReadOnlyPrompt: false }));\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: \"There was an error trying to edit this media item, please try again.\",\r\n activateReadOnlyPrompt: false,\r\n creatingPending: false\r\n });\r\n }\r\n } else {\r\n let request: SaveRejectedVideoMediaRequest = {\r\n id: videoMediaId!,\r\n type: videoMediaType,\r\n dateAvailable: new Date(dateAvailableValue!),\r\n title: title,\r\n summary: summary,\r\n language: language,\r\n topics: topics,\r\n scriptureReferences: scriptureReferences,\r\n serviceStyles,\r\n audiences,\r\n serviceGenres,\r\n listPrice,\r\n discountedPrice: hasDiscount ? discountedPrice : undefined,\r\n status: status,\r\n parentId: videoMedia.parentId!,\r\n producerComment: reasonForUpdate\r\n };\r\n\r\n let response = await VideoMediaService.changeRejectedToPending(request);\r\n if (ServerResponse.isSuccess(response)) {\r\n const message = response.message;\r\n this.setVideoMediaToState(response.data, () => this.setState({ disableSubmit: false, successMessage: message, creatingPending: false, activateReadOnlyPrompt: false }));\r\n this.props.onPathReplace(`/media/video-media/pending/edit/${response.data.id}`);\r\n } else {\r\n this.setState({\r\n disableSubmit: false,\r\n errorMessage: \"There was an error trying to edit this media item, please try again.\",\r\n activateReadOnlyPrompt: false,\r\n creatingPending: false\r\n });\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n const {\r\n loading,\r\n videoMedia,\r\n videoMediaType,\r\n videoMediaId,\r\n url,\r\n dateAvailableValue,\r\n isEnabled,\r\n title,\r\n summary,\r\n language,\r\n topics,\r\n topicInput,\r\n scriptureReferences,\r\n scriptureReferenceInput,\r\n listPrice: listingPrice,\r\n hasDiscount,\r\n discountedPrice,\r\n showSaveConfirmationDialog,\r\n disableSubmit,\r\n errors,\r\n status,\r\n activateReadOnlyPrompt,\r\n reasonForUpdate,\r\n creatingPending,\r\n disableReason,\r\n showDisable,\r\n deleteReason,\r\n showDelete,\r\n enableReason,\r\n showEnable,\r\n showCancel\r\n } = this.state;\r\n\r\n const readonly = status === MediaStatus.Approved || status === MediaStatus.Rejected;\r\n\r\n return (\r\n
\r\n \r\n {\r\n loading\r\n &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {\r\n !loading\r\n &&\r\n \r\n \r\n \r\n }\r\n title={ {videoMediaId ? 'Edit' : 'Add'} {videoMediaType}}\r\n subheader={readonly ?\r\n <>\r\n \r\n { status === MediaStatus.Approved ? \r\n \"This item is currently approved, to make edits click 'Edit' button.\"\r\n :\r\n \"This item has been rejected, to make edits click 'Edit button.\"\r\n }\r\n \r\n \r\n\r\n \r\n : videoMedia && videoMedia.adminComment && SC Admin Comment: {videoMedia.adminComment}}\r\n />\r\n
\r\n \r\n Date Available\r\n this.setState({ dateAvailableValue: e.target.value })}\r\n />\r\n \r\n \r\n
\r\n \r\n Title\r\n this.setState({ title: e.target.value })}\r\n />\r\n \r\n \r\n \r\n Summary\r\n this.setState({ summary: e.target.value })}\r\n />\r\n \r\n \r\n \r\n Language\r\n this.setState({ language: e.target.value as string })}\r\n >\r\n English\r\n Spanish\r\n \r\n \r\n \r\n Service Styles\r\n \r\n this.toggleStyle(\"Contemporary\")} />\r\n }\r\n label=\"Contemporary\"\r\n />\r\n this.toggleStyle(\"Traditional\")} />\r\n }\r\n label=\"Traditional\"\r\n />\r\n this.toggleStyle(\"Progressive\")} />\r\n }\r\n label=\"Progressive\"\r\n />\r\n \r\n \r\n \r\n \r\n Audiences\r\n \r\n this.toggleAudience(\"Kids\")} />\r\n }\r\n label=\"Kids\"\r\n />\r\n this.toggleAudience(\"Teens\")} />\r\n }\r\n label=\"Teens\"\r\n />\r\n this.toggleAudience(\"Adults\")} />\r\n }\r\n label=\"Adults\"\r\n />\r\n \r\n \r\n \r\n \r\n Genres\r\n \r\n this.toggleGenre(\"Emotional\")} />\r\n }\r\n label=\"Emotional\"\r\n />\r\n this.toggleGenre(\"Humorous\")} />\r\n }\r\n label=\"Humorous\"\r\n />\r\n this.toggleGenre(\"Powerful\")} />\r\n }\r\n label=\"Powerful\"\r\n />\r\n this.toggleGenre(\"Uplifting\")} />\r\n }\r\n label=\"Uplifting\"\r\n />\r\n this.toggleGenre(\"Reflective\")} />\r\n }\r\n label=\"Reflective\"\r\n />\r\n this.toggleGenre(\"Bible History\")} />\r\n }\r\n label=\"Bible History\"\r\n />\r\n \r\n \r\n \r\n \r\n Add Topic\r\n this.setState({ topicInput: e.currentTarget.value })}\r\n onBlur={() => this.addTopic()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addTopic();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addTopic()}\r\n disabled={topicInput.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addTopic',\r\n id: 'addTopic',\r\n }}\r\n />\r\n \r\n \r\n {topics.length === 0 && \"No\"} Topics\r\n
\r\n {\r\n topics.map(topic =>\r\n this.removeTopic(topic)}\r\n className={classes.chip}\r\n />\r\n )\r\n }\r\n
\r\n \r\n Add Scripture Reference\r\n this.setState({ scriptureReferenceInput: e.currentTarget.value })}\r\n onBlur={() => this.addScriptureReference()}\r\n onKeyPress={(e) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n this.addScriptureReference();\r\n }\r\n }}\r\n endAdornment={\r\n \r\n this.addScriptureReference()}\r\n disabled={scriptureReferenceInput.length === 0}\r\n >\r\n \r\n \r\n \r\n }\r\n inputProps={{\r\n name: 'addScriptureReference',\r\n id: 'addScriptureReference',\r\n }}\r\n />\r\n \r\n \r\n {scriptureReferences.length === 0 && \"No\"} Scripture References\r\n
\r\n {\r\n scriptureReferences.map((scriptureReference, index) =>\r\n this.removeScriptureReference(scriptureReference)}\r\n className={classes.chip}\r\n />\r\n )\r\n }\r\n
\r\n {\r\n <>\r\n Price Status: {this.getPriceStatus()}\r\n
\r\n \r\n \r\n \r\n Listing Price\r\n this.setState({ listPrice: parseFloat(e.target.value) })}\r\n startAdornment={$}\r\n />\r\n \r\n \r\n \r\n {\r\n hasDiscount\r\n &&\r\n \r\n = listingPrice)} style={{ marginLeft: 15 }} disabled={disableSubmit || readonly}>\r\n Discounted Price\r\n this.setState({ discountedPrice: parseFloat(e.target.value) })}\r\n startAdornment={$}\r\n />\r\n {\r\n hasDiscount && discountedPrice >= listingPrice\r\n ?\r\n Discounted price must be lower than listing price\r\n :\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n \r\n this.setState({ hasDiscount: e.target.checked })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Has discount\"\r\n />\r\n \r\n \r\n }\r\n
\r\n {\r\n videoMediaId\r\n &&\r\n <>\r\n {\r\n this.props.status === MediaStatus.Approved &&\r\n <>\r\n {isEnabled\r\n ?\r\n <>\r\n \r\n \r\n :\r\n <>\r\n \r\n \r\n \r\n }\r\n {\r\n url\r\n &&\r\n (this.props.status === MediaStatus.Approved && (isEnabled || (videoMedia && videoMedia.previewVideoUrl && videoMedia.thumbnailImageUrl)))\r\n &&\r\n \r\n \r\n \r\n }\r\n \r\n }\r\n {\r\n this.props.status !== MediaStatus.Approved\r\n &&\r\n \r\n }\r\n \r\n }\r\n {readonly ?\r\n \r\n :\r\n \r\n }\r\n\r\n
\r\n
\r\n\r\n
\r\n }\r\n
\r\n {\r\n videoMedia\r\n &&\r\n this.setState({ disableSubmit: submitDisabled })}\r\n onUpdate={this.setVideoMediaToState}\r\n onSuccess={successMessage => this.setState({ successMessage })}\r\n onError={errorMessage => this.setState({ errorMessage })}\r\n status={status}\r\n activeReadOnlyPrompt={() => this.activeReadOnlyPrompt()}\r\n />\r\n }\r\n this.setState({ showSaveConfirmationDialog: false })}\r\n >\r\n Are You Sure?\r\n \r\n \r\n Are you sure you wish to save without metadata being filled out?\r\n \r\n
\r\n {\r\n topics.length < 2\r\n &&\r\n \r\n - Content performs better with at least two relevant topics\r\n \r\n }\r\n {\r\n scriptureReferences.length < 1\r\n &&\r\n \r\n - Content performs better with at least one relevant scripture reference\r\n \r\n }\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ errorMessage: undefined })}\r\n />\r\n this.setState({ successMessage: undefined })}\r\n />\r\n this.setState({ reasonForUpdate: \"\", activateReadOnlyPrompt: false })}\r\n >\r\n Edit {videoMediaType}\r\n \r\n \r\n Are you sure you wish to edit this media item?\r\n \r\n \r\n - A new 'pending' copy will be created, and will need to be approved by a SermonCentral administrator\r\n \r\n \r\n - The original version will not be changed until the 'pending' copy is approved.\r\n \r\n \r\n - If this item is on SermonCentral, it will not be updated until the approval process is completed.\r\n \r\n \r\n Reason For Update\r\n this.setState({ reasonForUpdate: e.target.value })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {creatingPending && }\r\n\r\n \r\n \r\n this.setState({ showDisable: false })}\r\n aria-labelledby=\"disable-dialog-title\"\r\n aria-describedby=\"disable-dialog-description\"\r\n >\r\n Disable Media\r\n \r\n \r\n Are you sure you wish to request this to be disabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be disabled.\r\n \r\n this.setState({ disableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showDelete: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Media\r\n \r\n \r\n Are you sure you wish to request this to be deleted?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be deleted.\r\n \r\n this.setState({ deleteReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showEnable: false })}\r\n aria-labelledby=\"enable-dialog-title\"\r\n aria-describedby=\"enable-dialog-description\"\r\n >\r\n Enable Media\r\n \r\n \r\n Are you sure you wish to request this to be enabled?\r\n \r\n
\r\n \r\n Please fill in a comment to explain why this item should be enabled.\r\n \r\n this.setState({ enableReason: e.target.value })}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showCancel: false })}\r\n aria-labelledby=\"cancel-dialog-title\"\r\n aria-describedby=\"cancel-dialog-description\"\r\n >\r\n Cancel changes\r\n \r\n \r\n Are you sure you wish to cancel these changes?\r\n \r\n
\r\n {videoMedia?.parentId ?\r\n <>\r\n \r\n By cancelling, you will be removing all changes requested. This item will no longer show for SermonCentral administrators to approve.\r\n \r\n \r\n This pending or rejected item will be removed. This cannot be undone. Your original approved media item will not be affected.\r\n \r\n :\r\n <>\r\n \r\n By cancelling, you will be removing this pending item. This item will no longer show for SermonCentral administrators to approve nor be available for you to edit or submit at a later date.\r\n \r\n \r\n This pending item will be deleted. This cannot be undone.\r\n \r\n \r\n\r\n }\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(VideoMediaDetail));","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport withRoot from '../../../../withRoot';\r\nimport VideoMediaDetail from './videoMediaDetail';\r\nimport { MediaStatus } from '../../../../entities/VideoMedia';\r\n\r\n\r\ninterface Props extends RouteComponentProps<{ id?: string, type?: string }> {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n id: string | undefined;\r\n type: string | undefined;\r\n}\r\n\r\nclass ApprovedVideoMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n \r\n this.state = {\r\n type: this.props.match.params.type,\r\n id: this.props.match.params.id\r\n };\r\n }\r\n\r\n onPathChange(path: string) {\r\n this.props.history.push(path);\r\n }\r\n\r\n onPathReplace(path: string) {\r\n this.props.history.replace(path);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.onPathChange(path)}\r\n onPathReplace={(path) => this.onPathReplace(path)}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(ApprovedVideoMedia);","import * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router-dom';\r\nimport AppConfig from '../../../../entities/AppConfig';\r\nimport withRoot from '../../../../withRoot';\r\nimport VideoMediaDetail from './videoMediaDetail';\r\nimport { MediaStatus } from '../../../../entities/VideoMedia';\r\n\r\n\r\ninterface Props extends RouteComponentProps<{ id?: string, type?: string }> {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n id: string | undefined;\r\n type: string | undefined;\r\n}\r\n\r\nclass PendingVideoMedia extends React.Component {\r\n constructor(props: Props) {\r\n super(props);\r\n \r\n this.state = {\r\n type: this.props.match.params.type,\r\n id: this.props.match.params.id\r\n };\r\n }\r\n\r\n onPathChange(path: string) {\r\n this.props.history.push(path);\r\n }\r\n\r\n onPathReplace(path: string) {\r\n this.props.history.replace(path);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n this.onPathChange(path)}\r\n onPathReplace={(path) => this.onPathReplace(path)}\r\n />\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(PendingVideoMedia);","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport NotificationsOffIcon from '@material-ui/icons/NotificationsOff';\r\nimport * as React from 'react';\r\nimport DiscussionNotification from '../../entities/DiscussionNotification';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n image: {\r\n width: '100%',\r\n maxWidth: '50%',\r\n margin: '0 auto',\r\n display: 'block'\r\n },\r\n date: {\r\n opacity: 0.7,\r\n marginBottom: theme.spacing()\r\n },\r\n cardContainer: {\r\n maxWidth: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardType: {\r\n float: \"right\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n discussionNotifications?: DiscussionNotification[];\r\n deleteDialogOpen: boolean;\r\n selectedId?: number;\r\n selectedType?: string;\r\n errors: FieldValidationError[];\r\n enableSubmit: boolean;\r\n showUpdateSuccessMessage: boolean;\r\n}\r\n\r\nclass DiscussionNotifications extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n deleteDialogOpen: false,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Discussion Notifications\";\r\n\r\n try {\r\n const discussionNotifications = await MiscService.getDiscussionNotifications();\r\n\r\n if (discussionNotifications) {\r\n this.setState({ discussionNotifications });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async unsubscribeFromDiscussionNotification() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedType && this.state.selectedId && this.state.discussionNotifications) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.unsubscribeFromDiscussionNotification(this.state.selectedId, this.state.selectedType);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let discussionNotifications = this.state.discussionNotifications;\r\n discussionNotifications = discussionNotifications.filter(d => d.id !== this.state.selectedId);\r\n this.setState({\r\n discussionNotifications,\r\n errors: [],\r\n enableSubmit: true,\r\n selectedId: undefined,\r\n selectedType: undefined,\r\n deleteDialogOpen: false,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n
\r\n \r\n Discussions Notifications\r\n \r\n {!this.state.discussionNotifications &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.discussionNotifications && this.state.discussionNotifications.length === 0 &&\r\n \r\n \r\n
\r\n You are not subscribed to any discussions yet.\r\n
\r\n }\r\n {this.state.discussionNotifications && this.state.discussionNotifications.length > 0 &&\r\n \r\n {this.state.discussionNotifications.map(subscription =>\r\n \r\n \r\n \r\n {new Date(subscription.dateSubscribed).toDateString()}\r\n \r\n \r\n {subscription.type}\r\n \r\n \r\n {subscription.title}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n
\r\n }\r\n
\r\n this.setState({ deleteDialogOpen: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Unsubscribe?\r\n \r\n \r\n Are you sure you wish to unsubscribe from discussion notifications for this {this.state.selectedType}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(DiscussionNotifications));","import Avatar from '@material-ui/core/Avatar';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport MessageIcon from '@material-ui/icons/Message';\r\nimport * as React from 'react';\r\nimport PrivateMessage from '../../entities/PrivateMessage';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2\r\n },\r\n divider: {\r\n marginTop: theme.spacing(),\r\n marginBottom: theme.spacing(),\r\n },\r\n image: {\r\n width: '100%',\r\n maxWidth: '50%',\r\n margin: '0 auto',\r\n display: 'block'\r\n },\r\n date: {\r\n opacity: 0.7,\r\n marginBottom: theme.spacing()\r\n },\r\n card: {\r\n width: '500px',\r\n marginBottom: \"16px\"\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n}\r\n\r\ninterface State {\r\n messages: PrivateMessage[] | undefined;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass PrivateMessagesPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n messages: undefined,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Private Messages\";\r\n\r\n try {\r\n const messages = await MiscService.getPrivateMessages();\r\n\r\n if (messages) {\r\n this.setState({ messages });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n
\r\n \r\n Private Messages\r\n \r\n \r\n {!this.state.messages &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.messages && this.state.messages.length === 0 &&\r\n \r\n \r\n
\r\n You do not have any private messages.\r\n
\r\n }\r\n {this.state.messages && this.state.messages.length > 0 && this.state.messages.map((message, index) =>\r\n \r\n :\r\n (message.fromUserLastName ?\r\n {message.fromUserFirstName.charAt(0).toUpperCase()}{message.fromUserLastName.charAt(0).toUpperCase()} :\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(PrivateMessagesPage));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardMedia from '@material-ui/core/CardMedia';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Select from '@material-ui/core/Select';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\r\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport DirectionsIcon from '@material-ui/icons/Directions';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport FavoriteIcon from '@material-ui/icons/Favorite';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport Favorite from '../../entities/Favorite';\r\nimport SermonFolder from '../../entities/SermonFolder';\r\nimport { MiscService } from '../../services/MiscService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flexGrow: 1,\r\n },\r\n toolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(),\r\n minWidth: 200,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 150,\r\n backgroundSize: \"contain\"\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string | undefined }>, WithStyles {\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n sermonFolders: SermonFolder[];\r\n selectedSermonFolderId: number | undefined;\r\n selectedSermonFolderIdToMove: number | undefined;\r\n favorites: Favorite[];\r\n selectedFavoriteId: number | undefined;\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n showEditDialog: boolean;\r\n editSermonFolderName: string;\r\n editSermonFolderNotes: string;\r\n showEditFavoriteDialog: boolean;\r\n editFavoriteNotes: string;\r\n showAddDialog: boolean;\r\n addSermonFolderName: string;\r\n addSermonFolderNotes: string;\r\n showDeleteDialog: boolean;\r\n showDeleteFavoriteDialog: boolean;\r\n showMoveFavoriteDialog: boolean;\r\n}\r\n\r\nclass SermonFolders extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n sermonFolders: [],\r\n selectedSermonFolderId: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n selectedSermonFolderIdToMove: props.match.params.id ? parseInt(props.match.params.id, 10) : undefined,\r\n favorites: [],\r\n selectedFavoriteId: undefined,\r\n errors: [],\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n showEditDialog: false,\r\n editSermonFolderName: '',\r\n editSermonFolderNotes: '',\r\n showEditFavoriteDialog: false,\r\n editFavoriteNotes: '',\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: '',\r\n showDeleteDialog: false,\r\n showDeleteFavoriteDialog: false,\r\n showMoveFavoriteDialog: false\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - SermonFolders\";\r\n\r\n try {\r\n const sermonFolders = await MiscService.getSermonFolders();\r\n\r\n if (sermonFolders) {\r\n\r\n var selectedSermonFolderId = this.state.selectedSermonFolderId;\r\n\r\n if (sermonFolders.length !== 0) {\r\n if (!selectedSermonFolderId || !sermonFolders.some(f => f.id === selectedSermonFolderId)) {\r\n selectedSermonFolderId = sermonFolders[0].id;\r\n }\r\n }\r\n else {\r\n selectedSermonFolderId = undefined;\r\n }\r\n\r\n this.setState({ sermonFolders }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async updateSelectedSermonFolder(sermonFolderId: number | undefined) {\r\n\r\n if (sermonFolderId) {\r\n\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === sermonFolderId)!;\r\n\r\n this.setState({\r\n selectedSermonFolderId: selectedSermonFolder.id,\r\n editSermonFolderName: selectedSermonFolder.name,\r\n editSermonFolderNotes: selectedSermonFolder.notes ? selectedSermonFolder.notes : ''\r\n });\r\n }\r\n else {\r\n\r\n this.setState({\r\n selectedSermonFolderId: undefined,\r\n editSermonFolderName: '',\r\n editSermonFolderNotes: ''\r\n });\r\n }\r\n\r\n await this.updateFavorites(sermonFolderId);\r\n }\r\n\r\n cancelEditSermonFolder() {\r\n\r\n if (this.state.selectedSermonFolderId) {\r\n\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId)!;\r\n\r\n this.setState({\r\n showEditDialog: false,\r\n editSermonFolderName: selectedSermonFolder.name,\r\n editSermonFolderNotes: selectedSermonFolder.notes ? selectedSermonFolder.notes : ''\r\n });\r\n }\r\n }\r\n\r\n cancelAddSermonFolder() {\r\n\r\n this.setState({\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: ''\r\n });\r\n }\r\n\r\n async updateFavorites(sermonFolderId: number | undefined) {\r\n\r\n if (!sermonFolderId) {\r\n\r\n this.props.history.push(`/sermon-folders`);\r\n this.setState({ favorites: [], loading: false, enableSubmit: true });\r\n }\r\n else {\r\n try {\r\n const favorites = await MiscService.getFavorites(sermonFolderId);\r\n\r\n if (favorites) {\r\n this.props.history.push(`/sermon-folders/${sermonFolderId}`);\r\n this.setState({ favorites, loading: false, enableSubmit: true });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async deleteSermonFolder() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n if (this.state.selectedSermonFolderId) {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.deleteSermonFolder(this.state.selectedSermonFolderId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonFolders = this.state.sermonFolders;\r\n const index = sermonFolders.findIndex(f => f.id === this.state.selectedSermonFolderId);\r\n\r\n if (index >= 0) {\r\n\r\n sermonFolders.splice(index, 1);\r\n let selectedSermonFolderId: number | undefined = undefined;\r\n if (sermonFolders.length > 0) {\r\n selectedSermonFolderId = sermonFolders[0].id;\r\n }\r\n\r\n this.setState({\r\n sermonFolders,\r\n errors: [],\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'SermonFolder deleted.',\r\n }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async deleteFavorite() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n if (this.state.selectedFavoriteId) {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.deleteFavorite(this.state.selectedFavoriteId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let favorites = this.state.favorites;\r\n const index = favorites.findIndex(f => f.id === this.state.selectedFavoriteId);\r\n\r\n if (index >= 0) {\r\n\r\n favorites.splice(index, 1);\r\n this.setState({\r\n favorites,\r\n errors: [],\r\n enableSubmit: true,\r\n showDeleteFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite deleted.',\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async moveFavorite(favoriteId: number, index: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let favorites = this.state.favorites;\r\n const currentIndex = favorites.findIndex(f => f.id === favoriteId);\r\n let favorite = favorites[currentIndex];\r\n\r\n const response = await MiscService.saveFavorite(favoriteId, this.state.selectedSermonFolderId!, index, favorite.notes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n favorite = response.data;\r\n\r\n favorites.splice(currentIndex, 1);\r\n favorites.splice(index, 0, favorite);\r\n\r\n this.setState({\r\n favorites,\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite moved.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n\r\n async moveFavoriteFolder(favoriteId?: number, moveToSermonFolderId?: number) {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n let favorites = this.state.favorites;\r\n const currentIndex = favorites.findIndex(f => f.id === favoriteId);\r\n let favorite = favorites[currentIndex];\r\n\r\n const response = await MiscService.saveFavorite(favoriteId!, moveToSermonFolderId!, 0, favorite.notes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n await this.updateSelectedSermonFolder(moveToSermonFolderId);\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showMoveFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite moved to a new folder.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showMoveFavoriteDialog: false });\r\n }\r\n }\r\n\r\n async handleEditFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.editSermonFolderName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.saveSermonFolder(this.state.selectedSermonFolderId, this.state.editSermonFolderName, this.state.editSermonFolderNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId)!;\r\n\r\n selectedSermonFolder.name = this.state.editSermonFolderName;\r\n selectedSermonFolder.notes = this.state.editSermonFolderNotes;\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showEditDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'SermonFolder updated.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n }\r\n\r\n async handleEditFavoriteFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.selectedFavoriteId && this.state.selectedSermonFolderId) {\r\n try {\r\n\r\n this.setState({ enableSubmit: false });\r\n\r\n const sortOrder = this.state.favorites.findIndex(f => f.id === this.state.selectedFavoriteId);\r\n\r\n const response = await MiscService.saveFavorite(this.state.selectedFavoriteId, this.state.selectedSermonFolderId, sortOrder, this.state.editFavoriteNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let favorite = this.state.favorites.find(f => f.id === this.state.selectedFavoriteId)!;\r\n\r\n favorite.notes = this.state.editFavoriteNotes;\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showEditFavoriteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Favorite updated.',\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showEditDialog: false });\r\n }\r\n }\r\n }\r\n\r\n async handleAddFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.addSermonFolderName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await MiscService.saveSermonFolder(undefined, this.state.addSermonFolderName, this.state.addSermonFolderNotes);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let sermonFolders = this.state.sermonFolders;\r\n sermonFolders.unshift(response.data);\r\n const selectedSermonFolderId = sermonFolders[0].id;\r\n\r\n this.setState({\r\n sermonFolders,\r\n errors: [],\r\n enableSubmit: true,\r\n showAddDialog: false,\r\n addSermonFolderName: '',\r\n addSermonFolderNotes: '',\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'New SermonFolder added.',\r\n }, async () => await this.updateSelectedSermonFolder(selectedSermonFolderId));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddDialog: false });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n\r\n const classes = this.props.classes;\r\n const selectedSermonFolder = this.state.sermonFolders.find(f => f.id === this.state.selectedSermonFolderId);\r\n const selectedFavorite = this.state.favorites.find(f => f.id === this.state.selectedFavoriteId);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n SermonFolders\r\n \r\n
\r\n
\r\n {this.state.sermonFolders.length > 0 && this.state.selectedSermonFolderId &&\r\n \r\n \r\n Selected SermonFolder\r\n { await this.updateSelectedSermonFolder(parseInt(e.target.value as string, 10)); }}\r\n inputProps={{\r\n name: 'sermonfolder',\r\n id: 'select-sermonfolder',\r\n }}\r\n >\r\n {this.state.sermonFolders.map(sermonFolder =>\r\n {sermonFolder.name}\r\n )}\r\n \r\n \r\n this.setState({ showEditDialog: true })}>\r\n \r\n \r\n this.setState({ showDeleteDialog: true })}>\r\n \r\n \r\n \r\n }\r\n \r\n {!this.state.loading && selectedSermonFolder &&\r\n \r\n Notes: {selectedSermonFolder.notes}\r\n \r\n }\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading && this.state.sermonFolders.length === 0 &&\r\n \r\n \r\n
\r\n You haven't added any SermonFolders yet. Add one below.\r\n
\r\n }\r\n {!this.state.loading && this.state.sermonFolders.length > 0 && this.state.favorites.length === 0 &&\r\n \r\n \r\n
\r\n You haven't added any favorites to this SermonFolder yet.\r\n
\r\n
\r\n Start exploring SermonCentral to find something new to save.\r\n
\r\n }\r\n {!this.state.loading && this.state.favorites.length > 0 && this.state.favorites.map((favorite, index) =>\r\n \r\n \r\n \r\n \r\n {new Date(favorite.dateCreated).toLocaleDateString()}\r\n \r\n \r\n {favorite.type}\r\n \r\n {favorite.title}\r\n \r\n
\r\n Notes: ' + favorite.notes }} />\r\n
\r\n \r\n \r\n
\r\n this.setState({ selectedFavoriteId: favorite.id, showMoveFavoriteDialog: true })}>\r\n \r\n \r\n {index > 0 &&\r\n this.moveFavorite(favorite.id, index - 1)}>\r\n \r\n \r\n }\r\n {index < this.state.favorites.length - 1 &&\r\n this.moveFavorite(favorite.id, index + 1)}>\r\n \r\n \r\n }\r\n \r\n {favorite.uri && favorite.uri.indexOf('/') >= 0 &&\r\n \r\n }\r\n
\r\n
\r\n
\r\n )}\r\n\r\n this.setState({ showAddDialog: true })}>\r\n \r\n Add Folder\r\n \r\n\r\n this.cancelEditSermonFolder()}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleEditFormSubmit(e)}>\r\n Edit SermonFolder\r\n \r\n this.setState({ editSermonFolderName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ editSermonFolderNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.setState({ showEditFavoriteDialog: false })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleEditFavoriteFormSubmit(e)}>\r\n Edit Favorite\r\n \r\n this.setState({ editFavoriteNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.cancelAddSermonFolder()}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.handleAddFormSubmit(e)}>\r\n Add SermonFolder\r\n \r\n this.setState({ addSermonFolderName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ addSermonFolderNotes: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Notes')}\r\n helperText={}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete SermonFolder\r\n \r\n \r\n Are you sure you wish to delete the SermonFolder {selectedSermonFolder ? selectedSermonFolder.name : ''}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ showDeleteFavoriteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Delete Favorite\r\n \r\n \r\n Are you sure you wish to delete the Favorite {selectedFavorite ? selectedFavorite.title : ''}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n this.setState({ showMoveFavoriteDialog: false, selectedSermonFolderIdToMove: this.state.selectedSermonFolderId })}\r\n aria-labelledby=\"move-dialog-title\"\r\n aria-describedby=\"move-dialog-description\"\r\n >\r\n Move Favorite\r\n \r\n \r\n Select a folder to move to\r\n \r\n \r\n this.setState({ selectedSermonFolderIdToMove: parseInt(e.target.value, 10) })}>\r\n {this.state.sermonFolders.map(folder => {\r\n return (\r\n }\r\n label={folder.name}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SermonFolders));","import HistoryResource from '../entities/HistoryResource';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class ResourceViewingHistoryService {\r\n\r\n public static async getResourceViewingHistory() {\r\n var response = await WebClient.Get(\"api/ResourceViewingHistory/GetResourceViewingHistory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static deleteResourceViewingHistory(id: number) {\r\n return WebClient.Delete(\"api/ResourceViewingHistory/DeleteResourceViewingHistory\", { id });\r\n }\r\n\r\n public static deleteResourceViewingHistories() {\r\n return WebClient.Delete(\"api/ResourceViewingHistory/DeleteResourceViewingHistories\", null);\r\n }\r\n\r\n public static enableResourceViewingHistory() {\r\n return WebClient.Post(\"api/ResourceViewingHistory/EnableResourceViewingHistory\", null);\r\n }\r\n\r\n public static disableResourceViewingHistory() {\r\n return WebClient.Post(\"api/ResourceViewingHistory/DisableResourceViewingHistory\", null);\r\n }\r\n}","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { green } from '@material-ui/core/colors';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Switch from '@material-ui/core/Switch';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport HistoryIcon from '@material-ui/icons/History';\r\nimport * as React from 'react';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport AppConfig from '../../entities/AppConfig';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport HistoryResource from '../../entities/HistoryResource';\r\nimport { ResourceViewingHistoryService } from '../../services/ResourceViewingHistory';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n title: {\r\n flex: '0 0 auto',\r\n },\r\n spacer: {\r\n flexGrow: 1,\r\n },\r\n toolbar: {\r\n flexWrap: 'wrap'\r\n },\r\n formControl: {\r\n margin: theme.spacing(),\r\n minWidth: 200,\r\n },\r\n cardContainer: {\r\n width: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n cardImage: {\r\n height: 150,\r\n },\r\n cardTitle: {\r\n fontSize: 14,\r\n display: \"inline-block\"\r\n },\r\n cardStatus: {\r\n float: \"right\"\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n cardContainer: {\r\n width: \"100%\",\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n },\r\n avatar: {\r\n margin: '8px 0px'\r\n },\r\n cardHeader: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n cardHeaderContent: {\r\n width: '83%'\r\n },\r\n contributorLink: {\r\n color: theme.palette.primary.main,\r\n textDecoration: 'none'\r\n },\r\n titleLink: {\r\n textDecoration: 'none'\r\n }\r\n });\r\n\r\ninterface Props extends RouteComponentProps<{ id: string | undefined }>, WithStyles {\r\n config: AppConfig;\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n resources: HistoryResource[];\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n showDeleteDialog: boolean;\r\n showDeleteAllDialog: boolean;\r\n historyEnabled: boolean;\r\n enableSubmit: boolean;\r\n selectedResourceIdToDelete: number | undefined;\r\n}\r\n\r\nclass ViewingHistory extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n resources: [],\r\n errors: [],\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: '',\r\n showDeleteDialog: false,\r\n showDeleteAllDialog: false,\r\n historyEnabled: true,\r\n enableSubmit: true,\r\n selectedResourceIdToDelete: undefined\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Viewing History\";\r\n\r\n try {\r\n const resources = await ResourceViewingHistoryService.getResourceViewingHistory();\r\n\r\n if (resources) {\r\n this.setState({ resources, loading: false, historyEnabled: this.props.user.isRecordingHistory });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteResource() {\r\n if (this.state.selectedResourceIdToDelete) {\r\n try {\r\n const response = await ResourceViewingHistoryService.deleteResourceViewingHistory(this.state.selectedResourceIdToDelete);\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let resources = this.state.resources;\r\n resources = resources.filter(l => l.id !== this.state.selectedResourceIdToDelete!);\r\n\r\n this.setState({\r\n resources: resources,\r\n selectedResourceIdToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'History Resource was deleted successfully'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n }\r\n\r\n async deleteAllResources() {\r\n try {\r\n const response = await ResourceViewingHistoryService.deleteResourceViewingHistories();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n resources: [],\r\n enableSubmit: true,\r\n showDeleteAllDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'All History Resources were deleted successfully'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteAllDialog: false });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async toggleRecording() {\r\n try {\r\n const response = this.state.historyEnabled ? await ResourceViewingHistoryService.disableResourceViewingHistory() : await ResourceViewingHistoryService.enableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n historyEnabled: !this.state.historyEnabled\r\n },\r\n () => this.setState({\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: `History Recording ${this.state.historyEnabled ? 'Enabled' : 'Disabled'}`\r\n }));\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async enableRecording() {\r\n try {\r\n const response = await ResourceViewingHistoryService.enableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Viewing History Enabled'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async disableRecording() {\r\n try {\r\n const response = await ResourceViewingHistoryService.disableResourceViewingHistory();\r\n if (ServerResponse.isServerResponse(response)) {\r\n this.setState({\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'Viewing History Disabled'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n\r\n \r\n
\r\n \r\n Viewing History\r\n \r\n {!this.state.loading &&\r\n this.toggleRecording()}\r\n value=\"checkedB\"\r\n color=\"primary\"\r\n />\r\n }\r\n label={this.state.historyEnabled ? 'History Enabled' : 'History Disabled'}\r\n />\r\n }\r\n
\r\n
\r\n {!this.state.loading &&\r\n \r\n }\r\n \r\n \r\n {this.state.loading ?\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n :\r\n (\r\n <>\r\n {this.state.resources.length === 0 &&\r\n \r\n \r\n
\r\n You have no items in your history.\r\n
\r\n }\r\n {!this.state.historyEnabled &&\r\n \r\n \r\n
\r\n Your history viewing feature is disabled.\r\n
\r\n }\r\n {this.state.historyEnabled && this.state.resources.length > 0 && this.state.resources.map((resource, index) =>\r\n \r\n \r\n \r\n Visited on {new Date(resource.dateViewed).toDateString()}\r\n \r\n \r\n {resource.resourceType.replace('_', ' ')}\r\n \r\n \r\n }\r\n title={{resource.title}}\r\n subheader={{resource.resourceUserName && resource.resourceUserName ? <>By: {resource.resourceUserName} : ''}}\r\n />\r\n \r\n \r\n {resource.summary.replace(/<(?:.|\\n)*?>/gi, \" \")}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n )\r\n }\r\n this.setState({ showDeleteDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Remove item from viewing history\r\n \r\n \r\n Are you sure you wish to remove this item from your viewing history?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showDeleteAllDialog: false })}\r\n aria-labelledby=\"delete-dialog-title\"\r\n aria-describedby=\"delete-dialog-description\"\r\n >\r\n Clear viewing history\r\n \r\n \r\n Are you sure you wish to clear all items from your viewing history?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ViewingHistory));","import Newsletter from '../entities/Newsletter';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\nimport { BibleTranslation } from '../entities/BibleTranslation';\r\n\r\nexport interface NewsletterSubscriptions {\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n}\r\n\r\nexport class PreferencesService {\r\n\r\n public static async getNewsletterSubscriptions() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetNewsletterSubscriptions\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updateNewsletterSubscriptions(newsletterIds: number[]) {\r\n return WebClient.Post(\"api/Preferences/UpdateNewsletterSubscriptions\", { newsletterIds });\r\n }\r\n\r\n public static async getBibleTranslations() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetBibleTranslations\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getPreferredBibleTranslation() {\r\n\r\n var response = await WebClient.Get(\"api/Preferences/GetPreferredBibleTranslation\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updatePreferredBibleTranslation(translationId: string) {\r\n return WebClient.Post(\"api/Preferences/UpdatePreferredBibleTranslation\", { translationId });\r\n }\r\n\r\n public static async getNotificationPreferences() {\r\n\r\n var response = await WebClient.Get<{ receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean }>(\"api/Preferences/GetNotificationPreferences\");\r\n if (ServerResponse.isServerResponse<{ receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean }>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static updateNotificationPreferences(receiveFeedbackMessageNotifications: boolean, receiveSermonCommentNotifications: boolean) {\r\n return WebClient.Post(\"api/Preferences/UpdateNotificationPreferences\", { receiveFeedbackMessageNotifications, receiveSermonCommentNotifications });\r\n }\r\n\r\n}","import Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport Newsletter from '../../entities/Newsletter';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n checkBox: {\r\n padding: '17px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n saveButton: {\r\n marginLeft: 'auto',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n newsletters: Newsletter[];\r\n selectedNewsletterIds: number[];\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass NewsletterSubscriptions extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n newsletters: [],\r\n selectedNewsletterIds: [],\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Newsletter Subscriptions\";\r\n\r\n try {\r\n const newsletterSubscriptions = await PreferencesService.getNewsletterSubscriptions();\r\n\r\n if (newsletterSubscriptions) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n newsletters: newsletterSubscriptions.newsletters,\r\n selectedNewsletterIds: newsletterSubscriptions.selectedNewsletterIds,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n toggleNewsletterSelection = (id: number) => {\r\n\r\n var selectedList: number[] = this.state.selectedNewsletterIds;\r\n var index = selectedList.indexOf(id);\r\n\r\n if (index < 0) {\r\n selectedList.push(id);\r\n } else {\r\n selectedList.splice(index, 1);\r\n }\r\n\r\n this.setState({\r\n selectedNewsletterIds: selectedList\r\n });\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updateNewsletterSubscriptions(this.state.selectedNewsletterIds);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Newsletter subscriptions updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Newsletter Subscriptions\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n Select the newsletter subscriptions you wish to receive.\r\n \r\n \r\n \r\n {this.state.newsletters.filter(n => !n.proUsersOnly || this.props.user.proSubscription).map(newsletter => {\r\n return (\r\n = 0}\r\n className={classes.checkBox}\r\n onChange={(e) => this.toggleNewsletterSelection(parseInt(e.target.value, 10))}\r\n value={newsletter.id.toString()}\r\n color=\"primary\"\r\n />\r\n }\r\n label={(' + newsletter.name + '
' + newsletter.description }} />)}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(NewsletterSubscriptions));","import Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport FormGroup from '@material-ui/core/FormGroup';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n checkBox: {\r\n padding: '17px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n saveButton: {\r\n marginLeft: 'auto',\r\n display: 'block'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n receiveFeedbackMessageNotifications: boolean;\r\n receiveSermonCommentNotifications: boolean;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass NotificationPreferences extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n receiveFeedbackMessageNotifications: false,\r\n receiveSermonCommentNotifications: false,\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Notification Preferences\";\r\n\r\n try {\r\n const notificationPreferences = await PreferencesService.getNotificationPreferences();\r\n\r\n if (notificationPreferences) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n receiveFeedbackMessageNotifications: notificationPreferences.receiveFeedbackMessageNotifications,\r\n receiveSermonCommentNotifications: notificationPreferences.receiveSermonCommentNotifications,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updateNotificationPreferences(this.state.receiveFeedbackMessageNotifications, this.state.receiveSermonCommentNotifications);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Notification preferences updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Notification Preferences\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n \r\n this.setState({ receiveSermonCommentNotifications: !this.state.receiveSermonCommentNotifications })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Email me when someone comments on one of my sermons\"\r\n />\r\n this.setState({ receiveFeedbackMessageNotifications: !this.state.receiveFeedbackMessageNotifications })}\r\n color=\"primary\"\r\n />\r\n }\r\n label=\"Allow other registered SermonCentral visitors to send me private messages\"\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(NotificationPreferences));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport { BibleTranslation } from '../../entities/BibleTranslation';\r\nimport { PreferencesService } from '../../services/PreferencesService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n width: 550\r\n },\r\n form: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n submitButton: {\r\n marginLeft: 'auto',\r\n minWidth: '150px',\r\n display: 'block'\r\n },\r\n radioBox: {\r\n padding: '5px 12px'\r\n },\r\n formControl: {\r\n marginTop: theme.spacing() * 1.5,\r\n marginBottom: theme.spacing() * 1.5\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n root: {\r\n alignItems: 'normal'\r\n },\r\n paper: {\r\n width: '100%'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n bibleTranslations: BibleTranslation[];\r\n preferredTranslationId: string;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass BibleTranslationPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n bibleTranslations: [],\r\n preferredTranslationId: '',\r\n showUpdateSuccessMessage: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Bible Translation\";\r\n\r\n try {\r\n const bibleTranslations = await PreferencesService.getBibleTranslations();\r\n const preferredBibleTranslation = await PreferencesService.getPreferredBibleTranslation();\r\n\r\n if (bibleTranslations && preferredBibleTranslation) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n bibleTranslations: bibleTranslations,\r\n preferredTranslationId: preferredBibleTranslation.id,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await PreferencesService.updatePreferredBibleTranslation(this.state.preferredTranslationId);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Preferred Bible translation updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n Preferred Bible Translation\r\n \r\n \r\n
this.handleFormSubmit(e)}>\r\n \r\n Select which translation you would like to see when searching for scripture, browsing the Bible, using study tools or hovering over a scripture reference.\r\n \r\n \r\n this.setState({ preferredTranslationId: e.target.value })} >\r\n {this.state.bibleTranslations.map(translation => {\r\n return (\r\n }\r\n label={translation.name + ' (' + translation.id + ')'}\r\n />\r\n );\r\n })}\r\n \r\n \r\n \r\n
\r\n
\r\n }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(BibleTranslationPage));","import AboutMe from '../entities/AboutMe';\r\nimport ApplicationUser from '../entities/ApplicationUser';\r\nimport MyChurch from '../entities/MyChurch';\r\nimport MyStory from '../entities/MyStory';\r\nimport SharedLink from '../entities/SharedLink';\r\nimport { ServerResponse, WebClient } from '../services/ServiceHelper';\r\n\r\nexport class ProfileService {\r\n\r\n public static changeProfileImage(base64ImageUrl: string | null) {\r\n return WebClient.Post(\"api/Profile/ChangeProfileImage\", { base64ImageUrl: base64ImageUrl });\r\n }\r\n\r\n public static async getAboutMe() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetAboutMe\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateAboutMe(firstName: string, lastName: string, education: string, experience: string, jobPosition: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateAboutMe\", { firstName, lastName, education, experience, jobPosition });\r\n }\r\n\r\n public static async getMyChurch() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetMyChurch\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getDenominations() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetDenominations\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchAges() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchAges\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchAttendances() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchAttendances\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchMedianAudienceAges() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Profile/GetChurchMedianAudienceAges\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchPrimaryEthnicities() {\r\n\r\n var response = await WebClient.Get<{ name: string }[]>(\"api/Profile/GetChurchPrimaryEthnicities\");\r\n if (ServerResponse.isServerResponse<{ name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getChurchServiceStyles() {\r\n\r\n var response = await WebClient.Get<{ id: number, name: string }[]>(\"api/Profile/GetChurchServiceStyles\");\r\n if (ServerResponse.isServerResponse<{ id: number, name: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getUSStates() {\r\n\r\n var response = await WebClient.Get<{ name: string, postalAbbreviation: string }[]>(\"api/Profile/GetUSStates\");\r\n if (ServerResponse.isServerResponse<{ name: string, postalAbbreviation: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCanadianProvinces() {\r\n\r\n var response = await WebClient.Get<{ name: string, postalAbbreviation: string }[]>(\"api/Profile/GetCanadianProvinces\");\r\n if (ServerResponse.isServerResponse<{ name: string, postalAbbreviation: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async getCountries() {\r\n\r\n var response = await WebClient.Get<{ name: string, twoCharCode: string, threeCharCode: string }[]>(\"api/Profile/GetCountries\");\r\n if (ServerResponse.isServerResponse<{ name: string, twoCharCode: string, threeCharCode: string }[]>(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateMyChurch(name: string, description: string, denomination: string, age: string, attendance: string, medianAudienceAge: string, primaryEthnicity: string, serviceStyle: string, phoneNumber: string, emailAddress: string, website: string, streetAddress: string, city: string, state: string, postalCode: string, country: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateMyChurch\", { name, description, denomination, age, attendance, medianAudienceAge, primaryEthnicity, serviceStyle, phoneNumber, emailAddress, website, streetAddress, city, state, postalCode, country });\r\n }\r\n\r\n public static async getMyStory() {\r\n\r\n var response = await WebClient.Get(\"api/Profile/GetMyStory\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static async updateMyStory(family: string, hobbies: string, bestAdvice: string, sermonDifference: string, favoriteIllustration: string, bookImpact: string, somethingFunny: string, parentsThink: string, spouseThink: string, ifICould: string, tombstone: string, comment: string) {\r\n\r\n return WebClient.Post(\"api/Profile/UpdateMyStory\", { family, hobbies, bestAdvice, sermonDifference, favoriteIllustration, bookImpact, somethingFunny, parentsThink, spouseThink, ifICould, tombstone, comment });\r\n }\r\n\r\n public static async getSharedLinks() {\r\n var response = await WebClient.Get(\"api/Profile/GetSharedLinks\");\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n public static addSharedLink(text: string, url: string) {\r\n return WebClient.Post(\"api/Profile/SaveSharedLink\", { text, url });\r\n }\r\n\r\n public static deleteSharedLink(id: number) {\r\n return WebClient.Delete(\"api/Profile/DeleteSharedLink\", { id });\r\n }\r\n}","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport AboutMe from '../../entities/AboutMe';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n minHeight: '72vh',\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n firstName: string;\r\n lastName: string;\r\n education: string;\r\n experience: string;\r\n jobPosition: string;\r\n savedAboutMe?: AboutMe;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass AboutMePage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n firstName: '',\r\n lastName: '',\r\n education: '',\r\n experience: '',\r\n jobPosition: '',\r\n showUpdateSuccessMessage: false,\r\n errors: [],\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - About Me\";\r\n\r\n try {\r\n const aboutMe = await ProfileService.getAboutMe();\r\n\r\n if (aboutMe) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n firstName: aboutMe.firstName,\r\n lastName: aboutMe.lastName,\r\n education: aboutMe.education,\r\n experience: aboutMe.experience,\r\n jobPosition: aboutMe.jobPosition,\r\n savedAboutMe: aboutMe,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.state.firstName && this.state.lastName) {\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateAboutMe(this.state.firstName, this.state.lastName, this.state.education, this.state.experience, this.state.jobPosition);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.props.onSignIn(response.data);\r\n this.setState({\r\n savedAboutMe: {\r\n firstName: this.state.firstName,\r\n lastName: this.state.lastName,\r\n jobPosition: this.state.jobPosition,\r\n experience: this.state.experience,\r\n education: this.state.education\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
this.handleFormSubmit(e)}>\r\n this.setState({ firstName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'FirstName')}\r\n helperText={}\r\n />\r\n this.setState({ lastName: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'LastName')}\r\n helperText={}\r\n />\r\n this.setState({ jobPosition: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'JobPosition')}\r\n helperText={}\r\n />\r\n this.setState({ education: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Education')}\r\n helperText={}\r\n />\r\n this.setState({ experience: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Experience')}\r\n helperText={}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n About Me\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(AboutMePage));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Select from '@material-ui/core/Select';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport MyChurch from '../../entities/MyChurch';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport { Checkbox, FormControlLabel } from '@material-ui/core';\r\nimport { Link } from 'react-router-dom';\r\nimport AppConfig from '../../entities/AppConfig';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n minHeight: '75vh',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n lineWrapper: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n config: AppConfig;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n name: string;\r\n description: string;\r\n denomination: string;\r\n age: string;\r\n attendance: string;\r\n medianAudienceAge: string;\r\n primaryEthnicity: string;\r\n serviceStyle: string;\r\n phoneNumber: string;\r\n emailAddress: string;\r\n website: string;\r\n streetAddress: string;\r\n city: string;\r\n state: string;\r\n postalCode: string;\r\n country: string;\r\n savedMyChurch?: MyChurch;\r\n showUpdateSuccessMessage: boolean;\r\n religiousConsentChecked: boolean;\r\n errors: FieldValidationError[];\r\n denominations: { name: string }[];\r\n churchAges: { name: string }[];\r\n churchAttendances: { name: string }[];\r\n churchMedianAudienceAges: { id: number, name: string }[];\r\n churchPrimaryEthnicities: { name: string }[];\r\n churchServiceStyles: { id: number, name: string }[];\r\n usStates: { name: string, postalAbbreviation: string }[];\r\n canadianProvinces: { name: string, postalAbbreviation: string }[];\r\n countries: { name: string, twoCharCode: string, threeCharCode: string }[];\r\n}\r\n\r\nclass MyChurchPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n name: '',\r\n description: '',\r\n denomination: '',\r\n age: '',\r\n attendance: '',\r\n medianAudienceAge: '',\r\n primaryEthnicity: '',\r\n serviceStyle: '',\r\n phoneNumber: '',\r\n emailAddress: '',\r\n website: '',\r\n streetAddress: '',\r\n city: '',\r\n state: '',\r\n postalCode: '',\r\n country: '',\r\n showUpdateSuccessMessage: false,\r\n religiousConsentChecked: true,\r\n errors: [],\r\n denominations: [],\r\n churchAges: [],\r\n churchAttendances: [],\r\n churchMedianAudienceAges: [],\r\n churchPrimaryEthnicities: [],\r\n churchServiceStyles: [],\r\n usStates: [],\r\n canadianProvinces: [],\r\n countries: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - My Church\";\r\n\r\n try {\r\n const myChurch = await ProfileService.getMyChurch();\r\n\r\n if (myChurch) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n name: myChurch.name,\r\n description: myChurch.description,\r\n denomination: myChurch.denomination,\r\n age: myChurch.age,\r\n attendance: myChurch.attendance,\r\n medianAudienceAge: myChurch.medianAudienceAge,\r\n primaryEthnicity: myChurch.primaryEthnicity,\r\n serviceStyle: myChurch.serviceStyle,\r\n phoneNumber: myChurch.phoneNumber,\r\n emailAddress: myChurch.emailAddress,\r\n website: myChurch.website,\r\n streetAddress: myChurch.streetAddress,\r\n city: myChurch.city,\r\n state: myChurch.state,\r\n postalCode: myChurch.postalCode,\r\n country: myChurch.country,\r\n savedMyChurch: myChurch,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n\r\n // The following calls aren't necessary to use the interface, so if there are any errors, ignore them\r\n ProfileService.getDenominations()\r\n .then(denominations => this.setState({ denominations: denominations! }));\r\n\r\n ProfileService.getChurchAges()\r\n .then(churchAges => this.setState({ churchAges: churchAges! }));\r\n\r\n ProfileService.getChurchAttendances()\r\n .then(churchAttendances => this.setState({ churchAttendances: churchAttendances! }));\r\n\r\n ProfileService.getChurchMedianAudienceAges()\r\n .then(churchMedianAudienceAges => this.setState({ churchMedianAudienceAges: churchMedianAudienceAges! }));\r\n\r\n ProfileService.getChurchPrimaryEthnicities()\r\n .then(churchPrimaryEthnicities => this.setState({ churchPrimaryEthnicities: churchPrimaryEthnicities! }));\r\n\r\n ProfileService.getChurchServiceStyles()\r\n .then(churchServiceStyles => this.setState({ churchServiceStyles: churchServiceStyles! }));\r\n\r\n ProfileService.getUSStates()\r\n .then(usStates => this.setState({ usStates: usStates! }));\r\n\r\n ProfileService.getCanadianProvinces()\r\n .then(canadianProvinces => this.setState({ canadianProvinces: canadianProvinces! }));\r\n\r\n ProfileService.getCountries()\r\n .then(countries => this.setState({ countries: countries! }));\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit || !this.state.religiousConsentChecked) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateMyChurch(this.state.name, this.state.description, this.state.denomination, this.state.age, this.state.attendance, this.state.medianAudienceAge, this.state.primaryEthnicity, this.state.serviceStyle, this.state.phoneNumber, this.state.emailAddress, this.state.website, this.state.streetAddress, this.state.city, this.state.state, this.state.postalCode, this.state.country);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n savedMyChurch: {\r\n name: this.state.name,\r\n description: this.state.description,\r\n denomination: this.state.denomination,\r\n age: this.state.age,\r\n attendance: this.state.attendance,\r\n medianAudienceAge: this.state.medianAudienceAge,\r\n primaryEthnicity: this.state.primaryEthnicity,\r\n serviceStyle: this.state.serviceStyle,\r\n phoneNumber: this.state.phoneNumber,\r\n emailAddress: this.state.emailAddress,\r\n website: this.state.website,\r\n streetAddress: this.state.streetAddress,\r\n city: this.state.city,\r\n state: this.state.state,\r\n postalCode: this.state.postalCode,\r\n country: this.state.country,\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n
this.handleFormSubmit(e)}>\r\n
\r\n About My Church\r\n \r\n
\r\n
\r\n this.setState({ name: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Name')}\r\n helperText={}\r\n />\r\n this.setState({ description: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Description')}\r\n helperText={}\r\n />\r\n {this.state.denominations.length > 0 &&\r\n \r\n Denomination\r\n this.setState({ denomination: e.target.value as string })}\r\n inputProps={{\r\n name: 'denomination',\r\n id: 'denomination',\r\n }}\r\n >\r\n \r\n {this.state.denominations.map(denomination => {\r\n return (\r\n \r\n {denomination.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.denominations.length === 0 &&\r\n this.setState({ denomination: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Denomination')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchAges.length > 0 &&\r\n \r\n Age\r\n this.setState({ age: e.target.value as string })}\r\n inputProps={{\r\n name: 'churchAge',\r\n id: 'churchAge',\r\n }}\r\n >\r\n \r\n {this.state.churchAges.map(churchAge => {\r\n return (\r\n \r\n {churchAge.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchAges.length === 0 &&\r\n this.setState({ age: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Age')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchServiceStyles.length > 0 &&\r\n \r\n Service Style\r\n this.setState({ serviceStyle: e.target.value as string })}\r\n inputProps={{\r\n name: 'serviceStyle',\r\n id: 'serviceStyle',\r\n }}\r\n >\r\n \r\n {this.state.churchServiceStyles.map(serviceStyle => {\r\n return (\r\n \r\n {serviceStyle.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchServiceStyles.length === 0 &&\r\n this.setState({ serviceStyle: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ServiceStyle')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchPrimaryEthnicities.length > 0 &&\r\n \r\n Predominant Ethnicity\r\n this.setState({ primaryEthnicity: e.target.value as string })}\r\n inputProps={{\r\n name: 'primaryEthnicity',\r\n id: 'primaryEthnicity',\r\n }}\r\n >\r\n \r\n {this.state.churchPrimaryEthnicities.map(primaryEthnicity => {\r\n return (\r\n \r\n {primaryEthnicity.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchPrimaryEthnicities.length === 0 &&\r\n this.setState({ primaryEthnicity: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'PrimaryEthnicity')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchAttendances.length > 0 &&\r\n \r\n Average Attendance\r\n this.setState({ attendance: e.target.value as string })}\r\n inputProps={{\r\n name: 'attendance',\r\n id: 'attendance',\r\n }}\r\n >\r\n \r\n {this.state.churchAttendances.map(attendance => {\r\n return (\r\n \r\n {attendance.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchAttendances.length === 0 &&\r\n this.setState({ attendance: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Attendance')}\r\n helperText={}\r\n />\r\n }\r\n {this.state.churchMedianAudienceAges.length > 0 &&\r\n \r\n Average Audience Age\r\n this.setState({ medianAudienceAge: e.target.value as string })}\r\n inputProps={{\r\n name: 'medianAudienceAge',\r\n id: 'medianAudienceAge',\r\n }}\r\n >\r\n \r\n {this.state.churchMedianAudienceAges.map(medianAudienceAge => {\r\n return (\r\n \r\n {medianAudienceAge.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.churchMedianAudienceAges.length === 0 &&\r\n this.setState({ medianAudienceAge: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'MedianAudienceAge')}\r\n helperText={}\r\n />\r\n }\r\n\r\n this.setState({ religiousConsentChecked: e.target.checked })}\r\n size=\"small\"\r\n value={this.state.religiousConsentChecked}\r\n />\r\n }\r\n label={\r\n
\r\n By checking this box, I affirm that I am voluntarily providing information concerning my religious beliefs to Outreach, and\r\n I hereby give my consent for Outreach to collect this information and to use, store, disclose, analyze, delete, or modify\r\n any data containing this information in accordance with\r\n Outreach’s Privacy Policy.\r\n
\r\n }\r\n style={{marginTop: 15, marginBottom: 15}}\r\n />\r\n\r\n \r\n
\r\n
\r\n Church Location and Contact Info\r\n \r\n
\r\n
\r\n this.setState({ phoneNumber: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ContactPhoneNumber')}\r\n helperText={}\r\n />\r\n this.setState({ emailAddress: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ContactEmailAddress')}\r\n helperText={}\r\n />\r\n this.setState({ website: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'WebsiteUrl')}\r\n helperText={}\r\n />\r\n this.setState({ streetAddress: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'StreetAddress')}\r\n helperText={}\r\n />\r\n this.setState({ city: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'City')}\r\n helperText={}\r\n />\r\n {this.state.usStates.length > 0 && this.state.country === 'United States of America' &&\r\n \r\n State\r\n this.setState({ state: e.target.value as string })}\r\n inputProps={{\r\n name: 'state',\r\n id: 'state',\r\n }}\r\n >\r\n \r\n {this.state.usStates.map(state => {\r\n return (\r\n \r\n {state.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.canadianProvinces.length > 0 && this.state.country === 'Canada' &&\r\n \r\n Province\r\n this.setState({ state: e.target.value as string })}\r\n inputProps={{\r\n name: 'state',\r\n id: 'state',\r\n }}\r\n >\r\n \r\n {this.state.canadianProvinces.map(province => {\r\n return (\r\n \r\n {province.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {(!(this.state.country === 'United States of America' || this.state.country === 'Canada') || this.state.usStates.length === 0 || this.state.canadianProvinces.length === 0) &&\r\n this.setState({ state: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'State')}\r\n helperText={}\r\n />\r\n }\r\n this.setState({ postalCode: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'PostalCode')}\r\n helperText={}\r\n />\r\n {this.state.countries.length > 0 &&\r\n \r\n Country\r\n this.setState({ country: e.target.value as string })}\r\n inputProps={{\r\n name: 'country',\r\n id: 'country',\r\n }}\r\n >\r\n \r\n {this.state.countries.map(country => {\r\n return (\r\n \r\n {country.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n }\r\n {this.state.countries.length === 0 &&\r\n this.setState({ country: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Country')}\r\n helperText={}\r\n />\r\n }\r\n \r\n
\r\n\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n My Church\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MyChurchPage));","import Button from '@material-ui/core/Button';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport MyStory from '../../entities/MyStory';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n paper: {\r\n ...theme.mixins.gutters(),\r\n paddingTop: theme.spacing() * 2,\r\n paddingBottom: theme.spacing() * 2,\r\n marginBottom: theme.spacing() * 2,\r\n maxWidth: '700px',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n minHeight: '75vh',\r\n overflowY: 'auto'\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n editForm: {\r\n paddingTop: theme.spacing() * 1,\r\n paddingBottom: theme.spacing() * 1,\r\n paddingRight: theme.spacing() * 3,\r\n paddingLeft: theme.spacing() * 3,\r\n },\r\n formButton: {\r\n marginTop: '15px',\r\n marginLeft: 'auto',\r\n display: 'flex'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n loading: boolean;\r\n enableSubmit: boolean;\r\n family: string;\r\n hobbies: string;\r\n bestAdvice: string;\r\n sermonDifference: string;\r\n favoriteIllustration: string;\r\n bookImpact: string;\r\n somethingFunny: string;\r\n parentsThink: string;\r\n spouseThink: string;\r\n ifICould: string;\r\n tombstone: string;\r\n comment: string;\r\n savedMyStory?: MyStory;\r\n showUpdateSuccessMessage: boolean;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass MyStoryPage extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n enableSubmit: false,\r\n family: '',\r\n hobbies: '',\r\n bestAdvice: '',\r\n sermonDifference: '',\r\n favoriteIllustration: '',\r\n bookImpact: '',\r\n somethingFunny: '',\r\n parentsThink: '',\r\n spouseThink: '',\r\n ifICould: '',\r\n tombstone: '',\r\n comment: '',\r\n showUpdateSuccessMessage: false,\r\n errors: []\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - My Story\";\r\n\r\n try {\r\n const myStory = await ProfileService.getMyStory();\r\n\r\n if (myStory) {\r\n this.setState({\r\n loading: false,\r\n enableSubmit: true,\r\n family: myStory.family,\r\n hobbies: myStory.hobbies,\r\n bestAdvice: myStory.bestAdvice,\r\n sermonDifference: myStory.sermonDifference,\r\n favoriteIllustration: myStory.favoriteIllustration,\r\n bookImpact: myStory.bookImpact,\r\n somethingFunny: myStory.somethingFunny,\r\n parentsThink: myStory.parentsThink,\r\n spouseThink: myStory.spouseThink,\r\n ifICould: myStory.ifICould,\r\n tombstone: myStory.tombstone,\r\n comment: myStory.comment,\r\n savedMyStory: myStory,\r\n errors: [],\r\n });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n async handleFormSubmit(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.updateMyStory(this.state.family, this.state.hobbies, this.state.bestAdvice, this.state.sermonDifference, this.state.favoriteIllustration, this.state.bookImpact, this.state.somethingFunny, this.state.parentsThink, this.state.spouseThink, this.state.ifICould, this.state.tombstone, this.state.comment);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({\r\n savedMyStory: {\r\n family: this.state.family,\r\n hobbies: this.state.hobbies,\r\n bestAdvice: this.state.bestAdvice,\r\n sermonDifference: this.state.sermonDifference,\r\n favoriteIllustration: this.state.favoriteIllustration,\r\n bookImpact: this.state.bookImpact,\r\n somethingFunny: this.state.somethingFunny,\r\n parentsThink: this.state.parentsThink,\r\n spouseThink: this.state.spouseThink,\r\n ifICould: this.state.ifICould,\r\n tombstone: this.state.tombstone,\r\n comment: this.state.comment,\r\n },\r\n errors: [],\r\n enableSubmit: true,\r\n showUpdateSuccessMessage: true\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n\r\n renderEditMode() {\r\n\r\n const classes = this.props.classes;\r\n\r\n return (\r\n \r\n
this.handleFormSubmit(e)}>\r\n
\r\n this.setState({ family: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Family')}\r\n helperText={}\r\n />\r\n this.setState({ hobbies: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Hobbies')}\r\n helperText={}\r\n />\r\n this.setState({ sermonDifference: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SermonDifference')}\r\n helperText={}\r\n />\r\n this.setState({ bookImpact: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'BookImpact')}\r\n helperText={}\r\n />\r\n this.setState({ comment: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Comment')}\r\n helperText={}\r\n />\r\n this.setState({ tombstone: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'Tombstone')}\r\n helperText={}\r\n />\r\n this.setState({ spouseThink: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SpouseThink')}\r\n helperText={}\r\n />\r\n this.setState({ parentsThink: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'ParentsThink')}\r\n helperText={}\r\n />\r\n this.setState({ bestAdvice: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'BestAdvice')}\r\n helperText={}\r\n />\r\n this.setState({ somethingFunny: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'SomethingFunny')}\r\n helperText={}\r\n />\r\n this.setState({ favoriteIllustration: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'FavoriteIllustration')}\r\n helperText={}\r\n />\r\n this.setState({ ifICould: e.target.value })}\r\n error={FieldValidationError.isFieldInError(this.state.errors, 'IfICould')}\r\n helperText={}\r\n />\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n render() {\r\n const classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile has been updated\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n {this.state.loading &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {!this.state.loading &&\r\n \r\n \r\n \r\n My Story\r\n \r\n \r\n \r\n {this.renderEditMode()}\r\n \r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(MyStoryPage));","import Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Slider from '@material-ui/core/Slider';\r\nimport * as React from 'react';\r\nimport AvatarEditor from 'react-avatar-editor';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n\r\n },\r\n snackbarContent: {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n snackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n snackbarMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n avatar: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing() * 4,\r\n width: 250,\r\n height: 250,\r\n borderRadius: 0\r\n },\r\n input: {\r\n display: 'none',\r\n },\r\n button: {\r\n margin: '0 auto',\r\n marginTop: theme.spacing() * 2,\r\n },\r\n slider: {\r\n padding: '22px 0px',\r\n },\r\n cropDialog: {\r\n minWidth: '400px',\r\n overflow: 'hidden'\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n cropDialog: {\r\n minWidth: 'inherit'\r\n }\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n onSignIn: (user: ApplicationUser) => void;\r\n}\r\n\r\ninterface State {\r\n enableSubmit: boolean;\r\n user: ApplicationUser;\r\n showUpdateSuccessMessage: boolean;\r\n uploadedFileData: any;\r\n showCropDialog: boolean;\r\n cropScale: number;\r\n errors: FieldValidationError[];\r\n}\r\n\r\nclass ProfileImage extends React.Component {\r\n\r\n cropperRef: AvatarEditor | null = null;\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n enableSubmit: true,\r\n user: props.user,\r\n showUpdateSuccessMessage: false,\r\n uploadedFileData: '',\r\n showCropDialog: false,\r\n cropScale: 1,\r\n errors: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n document.title = \"SermonCentral Account - Profile Image\";\r\n }\r\n\r\n handleFileUpload(file: File) {\r\n\r\n const reader = new FileReader();\r\n\r\n reader.onload = (e) => {\r\n this.setState({ uploadedFileData: reader.result, showCropDialog: true });\r\n };\r\n\r\n reader.readAsDataURL(file);\r\n }\r\n\r\n handleFileUploadChange(e: React.ChangeEvent) {\r\n\r\n var file = e.target.files && e.target.files[0];\r\n if (file) {\r\n this.handleFileUpload(file);\r\n }\r\n }\r\n\r\n handleFileUploadDrop(e: React.DragEvent) {\r\n\r\n e.preventDefault();\r\n var file = e.dataTransfer.files[0];\r\n if (file) {\r\n this.handleFileUpload(file);\r\n }\r\n }\r\n\r\n async removeProfileImage() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.changeProfileImage(null);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ user: response.data, showUpdateSuccessMessage: true, errors: [], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n\r\n async updateProfileImage() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n\r\n if (this.cropperRef) {\r\n\r\n let canvas = document.createElement('canvas');\r\n canvas.width = 500;\r\n canvas.height = 500;\r\n const image = this.cropperRef.getImage();\r\n const ctx = canvas.getContext('2d');\r\n\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, 500, 500);\r\n const base64ImageUrl = canvas.toDataURL();\r\n\r\n try {\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.changeProfileImage(base64ImageUrl);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n this.setState({ user: response.data, showUpdateSuccessMessage: true, errors: [], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n this.props.onSignIn(response.data);\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showCropDialog: false, uploadedFileData: '', cropScale: 1 });\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n Your profile image has been updated.\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n \r\n Profile Image\r\n \r\n \r\n\r\n
e.preventDefault()} onDrop={(e) => this.handleFileUploadDrop(e)}>\r\n {this.state.user.profileImageUrl ?\r\n :\r\n \r\n }\r\n\r\n {this.state.user.profileImageUrl &&\r\n
\r\n \r\n
\r\n }\r\n\r\n
\r\n this.handleFileUploadChange(e)}\r\n />\r\n \r\n
\r\n
\r\n\r\n this.setState({ showCropDialog: false, uploadedFileData: '', cropScale: 1 })}\r\n aria-labelledby=\"crop-dialog-title\"\r\n aria-describedby=\"crop-dialog-description\"\r\n >\r\n Crop Image\r\n \r\n this.cropperRef = cropper}\r\n image={this.state.uploadedFileData}\r\n width={250}\r\n height={250}\r\n border={10}\r\n rotate={0}\r\n scale={this.state.cropScale}\r\n />\r\n Zoom\r\n this.setState({ cropScale: value as number })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(ProfileImage));","import Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport green from '@material-ui/core/colors/green';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { Theme } from '@material-ui/core/styles/createMuiTheme';\r\nimport createStyles from '@material-ui/core/styles/createStyles';\r\nimport withStyles, { WithStyles } from '@material-ui/core/styles/withStyles';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport SuccessIcon from '@material-ui/icons/CheckCircle';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport * as React from 'react';\r\nimport ApplicationUser from '../../entities/ApplicationUser';\r\nimport SharedLink from '../../entities/SharedLink';\r\nimport { ProfileService } from '../../services/ProfileService';\r\nimport { FieldValidationError, ServerModelValidationResponse, ServerResponse } from '../../services/ServiceHelper';\r\nimport withRoot from '../../withRoot';\r\nimport Fab from '@material-ui/core/Fab';\r\n\r\nconst styles = (theme: Theme) =>\r\n createStyles({\r\n root: {\r\n },\r\n viewButton: {\r\n marginLeft: 'auto'\r\n },\r\n fab: {\r\n position: 'absolute',\r\n bottom: theme.spacing() * 2,\r\n right: theme.spacing() * 2,\r\n },\r\n extendedFab: {\r\n marginRight: theme.spacing()\r\n },\r\n dialogContent: {\r\n minWidth: '300px'\r\n },\r\n errorSnackbarContent: {\r\n flexWrap: 'nowrap',\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n errorSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n errorSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n successSnackbarContent: {\r\n backgroundColor: green[600],\r\n },\r\n successSnackbarContentIcon: {\r\n fontSize: 20,\r\n opacity: 0.9,\r\n marginRight: theme.spacing(),\r\n },\r\n successSnackbarMessage: {\r\n width: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n close: {\r\n padding: theme.spacing() / 2,\r\n },\r\n cardContainer: {\r\n maxWidth: \"500px\",\r\n marginBottom: \"16px\"\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n dialogContent: {\r\n minWidth: 'auto',\r\n width: '100%'\r\n },\r\n },\r\n snackBarText: {\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\ninterface Props extends WithStyles {\r\n user: ApplicationUser;\r\n}\r\n\r\ninterface State {\r\n enableSubmit: boolean;\r\n links?: SharedLink[];\r\n showAddLinkDialog: boolean;\r\n addLinkText: string;\r\n addLinkUrl: string;\r\n showDeleteLinkDialog: boolean;\r\n selectedLinkToDelete?: SharedLink;\r\n showTooManyLinksDialog: boolean;\r\n errors: FieldValidationError[];\r\n showUpdateSuccessMessage: boolean;\r\n updateSuccessMessage: string;\r\n}\r\n\r\nclass SharedLinks extends React.Component {\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n this.state = {\r\n showAddLinkDialog: false,\r\n enableSubmit: true,\r\n showDeleteLinkDialog: false,\r\n showTooManyLinksDialog: false,\r\n errors: [],\r\n addLinkText: '',\r\n addLinkUrl: '',\r\n showUpdateSuccessMessage: false,\r\n updateSuccessMessage: ''\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n\r\n document.title = \"SermonCentral Account - Shared Links\";\r\n\r\n try {\r\n const links = await ProfileService.getSharedLinks();\r\n\r\n if (links) {\r\n this.setState({ links });\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError] });\r\n }\r\n }\r\n\r\n async deleteLink() {\r\n\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n if (this.state.links && this.state.selectedLinkToDelete) {\r\n\r\n this.setState({ enableSubmit: false });\r\n const response = await ProfileService.deleteSharedLink(this.state.selectedLinkToDelete.id);\r\n\r\n if (ServerResponse.isServerResponse(response)) {\r\n\r\n let links = this.state.links;\r\n links = links.filter(l => l.id !== this.state.selectedLinkToDelete!.id);\r\n\r\n this.setState({\r\n links,\r\n selectedLinkToDelete: undefined,\r\n enableSubmit: true,\r\n showDeleteLinkDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'The shared link was deleted'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showDeleteLinkDialog: false });\r\n }\r\n }\r\n\r\n async onAddUrl(e: React.FormEvent) {\r\n\r\n e.preventDefault();\r\n if (!this.state.enableSubmit) {\r\n return;\r\n }\r\n try {\r\n this.setState({ enableSubmit: false });\r\n\r\n const text = this.state.addLinkText;\r\n let url = this.state.addLinkUrl;\r\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\r\n url = 'http://' + url;\r\n }\r\n\r\n const response = await ProfileService.addSharedLink(text, url);\r\n\r\n if (ServerResponse.isServerResponse(response) && this.state.links) {\r\n\r\n let links = this.state.links;\r\n links.push(response.data);\r\n this.setState({\r\n links,\r\n enableSubmit: true,\r\n showAddLinkDialog: false,\r\n showUpdateSuccessMessage: true,\r\n updateSuccessMessage: 'A new shared link has been added'\r\n });\r\n }\r\n else if (ServerModelValidationResponse.isServerModelValidationResponse(response)) {\r\n if (response.valid) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddLinkDialog: false });\r\n }\r\n else {\r\n this.setState({ errors: response.errors, enableSubmit: true });\r\n }\r\n }\r\n else {\r\n const serverError: FieldValidationError = { field: \"\", errors: [response.message] };\r\n this.setState({ errors: [serverError], enableSubmit: true });\r\n }\r\n }\r\n catch (errorResult) {\r\n const serverError: FieldValidationError = { field: \"\", errors: ['An unknown error occurred. Please try again.'] };\r\n this.setState({ errors: [serverError], enableSubmit: true, showAddLinkDialog: false });\r\n }\r\n }\r\n\r\n render() {\r\n var classes = this.props.classes;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n \r\n {this.state.updateSuccessMessage}\r\n }\r\n action={[\r\n this.setState({ showUpdateSuccessMessage: false })}\r\n >\r\n \r\n ,\r\n ]}\r\n />\r\n \r\n \r\n \r\n Shared Links\r\n \r\n \r\n \r\n \r\n {!this.state.links &&\r\n
\r\n \r\n
\r\n \r\n Loading...\r\n \r\n
\r\n }\r\n {this.state.links &&\r\n \r\n {this.state.links.length === 0 &&\r\n \r\n \r\n
\r\n You haven't shared any links yet. Add one below.\r\n
\r\n }\r\n {this.state.links.map(link =>\r\n \r\n \r\n \r\n {link.text}\r\n \r\n \r\n {link.url}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n )}\r\n this.setState({ showAddLinkDialog: this.state.links!.length < 5, showTooManyLinksDialog: this.state.links!.length >= 5 })}>\r\n \r\n Add Link\r\n \r\n
\r\n }\r\n
\r\n this.setState({ showDeleteLinkDialog: false })}\r\n >\r\n Delete shared link\r\n \r\n Are you sure you wish to delete {this.state.selectedLinkToDelete !== undefined && this.state.selectedLinkToDelete.text}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n this.setState({ showAddLinkDialog: false, addLinkUrl: '', addLinkText: '', errors: [] })}\r\n aria-labelledby=\"form-dialog-title\"\r\n >\r\n
this.onAddUrl(e)}>\r\n \r\n Share a new link\r\n this.setState({ addLinkText: e.target.value })} helperText={} />\r\n this.setState({ addLinkUrl: e.target.value })} placeholder=\"https://www.example.com\" fullWidth required error={FieldValidationError.isFieldInError(this.state.errors, 'Url')} helperText={} />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n this.setState({ showTooManyLinksDialog: false })}\r\n >\r\n Unable to add link\r\n \r\n We're sorry, you can only share 5 links.\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withRoot(withStyles(styles)(SharedLinks));","import AppConfig from \"../entities/AppConfig\";\r\nimport { ServerResponse, WebClient } from \"../services/ServiceHelper\";\r\n\r\nexport class AppConfigService {\r\n\r\n public static async getAppConfig() {\r\n\r\n var response = await WebClient.Get(\"api/AppConfig\");\r\n if (ServerResponse.isServerResponse(response)) {\r\n return response.data;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { faCcAmex, faCcDiscover, faCcMastercard, faCcPaypal, faCcVisa } from '@fortawesome/free-brands-svg-icons';\r\nimport * as React from \"react\";\r\nimport { BrowserRouter, Redirect, Route, Switch } from \"react-router-dom\";\r\nimport './app.css';\r\nimport AnalyticsPageTracker from \"./components/AnalyticsPageTracker\";\r\nimport { PrivateRoute } from './components/PrivateRoute';\r\nimport AppConfig, { AppConfigEnvironment } from \"./entities/AppConfig\";\r\nimport ApplicationUser from './entities/ApplicationUser';\r\nimport Layout from './layout/layout';\r\nimport BillingStatements from './pages/account/billingStatements';\r\nimport ChangeEmail from './pages/account/changeEmail';\r\nimport ChangePassword from './pages/account/changePassword';\r\nimport ChangePhone from './pages/account/changePhone';\r\nimport AccountDashboard from './pages/account/home';\r\nimport MediaDashboard from './pages/account/mediaDashboard';\r\nimport PaymentMethods from './pages/account/paymentMethods';\r\nimport FreeProAccess from './pages/admin/freeProAccess';\r\nimport Impersonate from './pages/admin/impersonate';\r\nimport Notes from './pages/admin/notes';\r\nimport ForgotPassword from './pages/authentication/forgotPassword';\r\nimport ForgotPasswordSuccess from './pages/authentication/forgotPasswordSuccess';\r\nimport Register from './pages/authentication/register';\r\nimport ResetPassword from './pages/authentication/resetPassword';\r\nimport SignIn from './pages/authentication/signIn';\r\nimport EditSermon from './pages/contributions/editSermon';\r\nimport EditSermonIllustration from './pages/contributions/editSermonIllustration';\r\nimport AddEditSeries from './pages/contributions/editSermonSeries';\r\nimport ContributorDashboard from './pages/contributions/home';\r\nimport SermonIllustrations from './pages/contributions/sermonIllustrations';\r\nimport SermonSeries from './pages/contributions/sermonSeries';\r\nimport Sermons from './pages/contributions/sermons';\r\nimport Activations from './pages/media/activations';\r\nimport Downloads from './pages/media/downloads';\r\nimport ManageMedia from \"./pages/media/media-producer/manageMedia\";\r\nimport ApprovedVideoMedia from \"./pages/media/media-producer/video-media/approvedVideoMedia\";\r\nimport PendingVideoMedia from \"./pages/media/media-producer/video-media/pendingVideoMedia\";\r\nimport Purchases from './pages/media/purchases';\r\nimport DiscussionNotifications from \"./pages/misc/discussionNotifications\";\r\nimport PrivateMessages from './pages/misc/privateMessages';\r\nimport SermonFolders from './pages/misc/sermonFolders';\r\nimport ViewingHistory from \"./pages/misc/viewingHistory\";\r\nimport NewsletterSubscriptions from './pages/preferences/newsletterSubscriptions';\r\nimport Notifications from './pages/preferences/notificationsPreferences';\r\nimport BibleTranslation from './pages/preferences/preferredBibleTranslation';\r\nimport AboutMe from './pages/profile/aboutMe';\r\nimport MyChurch from './pages/profile/myChurch';\r\nimport MyStory from './pages/profile/myStory';\r\nimport ProfileImage from './pages/profile/profileImage';\r\nimport SharedLinks from './pages/profile/sharedLinks';\r\nimport { AppConfigService } from \"./services/AppConfigService\";\r\nimport { AuthenticationService } from './services/AuthenticationService';\r\n\r\nlibrary.add(faCcAmex);\r\nlibrary.add(faCcDiscover);\r\nlibrary.add(faCcMastercard);\r\nlibrary.add(faCcVisa);\r\nlibrary.add(faCcPaypal);\r\n\r\ninterface AppProps {\r\n baseUrl: string;\r\n}\r\n\r\ninterface AppState {\r\n loading: boolean;\r\n user: ApplicationUser | null;\r\n config: AppConfig | null;\r\n}\r\n\r\nclass App extends React.Component {\r\n\r\n constructor(props: AppProps) {\r\n super(props);\r\n this.state = {\r\n loading: true,\r\n user: null,\r\n config: {\r\n environment: AppConfigEnvironment.Production,\r\n googleAnalytics: {\r\n isEnabled: true,\r\n trackingId: 'UA-75701108-7'\r\n },\r\n paypalUrl: 'https://www.sermoncentral.com',\r\n mainSiteUrl: 'https://www.sermoncentral.com',\r\n paymentsSiteUrl: 'https://payments.sermoncentral.com',\r\n makerSiteUrl: 'https://maker.sermoncentral.com',\r\n sparkSiteUrl: 'https://research.sermoncentral.com',\r\n accountSiteUrl: 'https://account.sermoncentral.com',\r\n glooSubscriptionsUrl: 'https://app.gloo.us/settings/subscriptions',\r\n glooUserProfileUrl: \"https://app.gloo.us/settings/settings/profile/info\",\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n AppConfigService.getAppConfig()\r\n .then(config => {\r\n if (config) {\r\n this.setState({ config: config });\r\n }\r\n });\r\n\r\n AuthenticationService.getAuthenticatedUser()\r\n .then(user => this.setState({\r\n user: user,\r\n loading: false\r\n }))\r\n .catch(error => this.setState({\r\n user: null,\r\n loading: false\r\n }));\r\n }\r\n\r\n handleUpdateUser(user: ApplicationUser | null) {\r\n this.setState({\r\n user: user\r\n });\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n \"\"\r\n );\r\n }\r\n else {\r\n return (\r\n \r\n \r\n this.handleUpdateUser(user)} onSignOut={() => this.handleUpdateUser(null)}>\r\n \r\n this.handleUpdateUser(user)} />} />\r\n this.handleUpdateUser(user)} />} />\r\n } />\r\n } />\r\n this.handleUpdateUser(user)} />} />\r\n\r\n\r\n {this.state.user && this.state.user.roles.filter((r) => r === 'MediaProducer').length > 0 ?\r\n this.handleUpdateUser(user)} />} />\r\n :\r\n this.handleUpdateUser(user)} />} />\r\n }\r\n\r\n this.handleUpdateUser(user)} />} />\r\n } />\r\n } />\r\n\r\n this.handleUpdateUser(user)} />} />\r\n } />\r\n this.handleUpdateUser(user)} />} />\r\n } />\r\n } />\r\n\r\n \r\n \r\n \r\n } />\r\n } />\r\n } />\r\n } />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n } />\r\n } />\r\n } />\r\n\r\n \r\n } />\r\n \r\n\r\n this.handleUpdateUser(user)} />} />\r\n } />\r\n } />\r\n } />\r\n this.handleUpdateUser(user)} />} />\r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default App;","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport App from './app';\r\n\r\nimport axios from 'axios';\r\naxios.defaults.withCredentials = true;\r\n\r\nfunction renderApp() {\r\n const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href')!;\r\n ReactDOM.render(\r\n ,\r\n document.querySelector('#root')\r\n );\r\n}\r\n\r\nrenderApp();"],"sourceRoot":""}