{"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","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.58ad8c55.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\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 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 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":""}