{"version":3,"sources":["webpack:///src/app/modules/home/chat-box-ui/chat-box-ui.model.ts","webpack:///src/app/modules/home/chat-box-ui/conversation/conversation.component.html","webpack:///src/app/modules/home/chat-box-ui/conversation/conversation.component.ts","webpack:///src/app/modules/home/chat-box-ui/chat-sidebar/chat-sidebar.component.html","webpack:///src/app/modules/home/chat-box-ui/chat-sidebar/chat-sidebar.component.ts","webpack:///src/app/modules/home/chat-box-ui/chat-title/chat-title.component.ts","webpack:///src/app/modules/home/chat-box-ui/chat-title/chat-title.component.html","webpack:///src/app/modules/home/chat-box-ui/chat-box-form-input/chat-box-form-input.component.ts","webpack:///src/app/modules/home/chat-box-ui/chat-box-form-input/chat-box-form-input.component.html","webpack:///src/app/modules/home/chat-box-ui/messages-chip/messages-chip.component.html","webpack:///src/app/modules/home/chat-box-ui/messages-chip/messages-chip.component.ts","webpack:///src/app/modules/home/chat-box-ui/chat-box-ui.component.html","webpack:///src/app/modules/home/chat-box-ui/chat-box-ui.component.ts","webpack:///src/app/modules/home/empty-layout/empty-layout.component.ts","webpack:///src/app/modules/home/empty-layout/empty-layout.component.html","webpack:///src/app/modules/home/master-layout/expired/expired.component.ts","webpack:///src/app/modules/home/master-layout/expired/expired.component.html","webpack:///src/app/modules/home/master-layout/reset-password/reset-password-fail/reset-password-fail.component.ts","webpack:///src/app/modules/home/master-layout/reset-password/reset-password-fail/reset-password-fail.component.html","webpack:///src/app/modules/home/master-layout/reset-password/reset-password-success/reset-password-success.component.ts","webpack:///src/app/modules/home/master-layout/reset-password/reset-password-success/reset-password-success.component.html","webpack:///src/app/modules/home/master-layout/reset-password/reset-password.model.ts","webpack:///src/app/modules/home/master-layout/reset-password/reset-password.component.html","webpack:///src/app/modules/home/master-layout/reset-password/reset-password.component.ts","webpack:///src/app/shared/components/onboarding-form/onboarding-form-profile.model.ts","webpack:///src/app/shared/components/onboarding-form/artist-details-tab/artist-details-tab.component.html","webpack:///src/app/shared/components/onboarding-form/artist-details-tab/artist-details-tab.component.ts","webpack:///src/app/shared/components/onboarding-form/contact-details-tab/contact-details-tab.component.html","webpack:///src/app/shared/components/onboarding-form/contact-details-tab/contact-details-tab.component.ts","webpack:///src/app/shared/components/onboarding-form/act-details-tab/act-details-tab.component.html","webpack:///src/app/shared/components/onboarding-form/act-details-tab/act-details-tab.component.ts","webpack:///src/app/shared/components/onboarding-form/agreement-tab/agreement-tab.component.html","webpack:///src/app/shared/components/onboarding-form/agreement-tab/agreement-tab.component.ts","webpack:///src/app/shared/components/onboarding-form/onboarding-form.component.html","webpack:///src/app/shared/components/onboarding-form/onboarding-form.component.ts","webpack:///src/app/modules/home/page-onboarding-form/page-onboarding-form.component.ts","webpack:///src/app/modules/home/page-onboarding-form/page-onboarding-form.component.html","webpack:///src/app/shared/services/access-log.service.ts","webpack:///src/app/modules/home/tracking-layout/tracking-layout.component.html","webpack:///src/app/modules/home/tracking-layout/tracking-layout.component.ts","webpack:///src/app/modules/home/external-action/external-action.service.ts","webpack:///src/app/modules/home/external-action/external-action.component.ts","webpack:///src/app/modules/home/master-layout/forgot-password/forgot-password.model.ts","webpack:///src/app/modules/home/master-layout/forgot-password/forgot-password.component.html","webpack:///src/app/modules/home/master-layout/forgot-password/forgot-password.component.ts","webpack:///src/app/modules/home/master-layout/forgot-password/fotgot-password-success/fotgot-password-success.component.ts","webpack:///src/app/modules/home/master-layout/forgot-password/fotgot-password-success/fotgot-password-success.component.html","webpack:///src/app/modules/home/send-support-ticket/send-support-ticket.component.html","webpack:///src/app/modules/home/home-routing.module.ts","webpack:///src/app/modules/home/send-support-ticket/send-support-ticket.component.ts","webpack:///src/app/modules/home/home.module.ts"],"names":["MessageHistory","ChatHistoryPagingViewModel","numberOfNewMessages","UserConversationPaging","ConversationComponent","router","chatBoxShareService","displayName","receiverId","userId","changeConversation","EventEmitter","messageDateToLocalTime","messageDateAfterConvert","this","conversationObj","messageHistory","Date","dateCreated","toLocaleString","hour","minute","month","day","year","Helper","emit","navigate","handleClick","ChatSidebarComponent","chatService","sharedService","userService","frmBuilder","userConversationPaging","emitToChatBox","listAllConversation","listRecentlyConversation","totalElementsListAll","totalElementsListRecently","totalPagesListAll","totalPagesListRecently","pageSize","_onDestroy","Subject","loading","userSearch","userSearchInputFrm","group","userSearchInput","pageNumber","size","getRecentlyUserConversation","pipe","concatMap","resp1","result","data","getAllUserConversation","subscribe","resp2","page","totalElements","Math","round","filter","obj1","some","obj2","sendNewMessage","newMessage","loadNewRecentlyConversation","autocompleteAgent","get","valueChanges","startWith","map","value","_filter","fromEvent","searchBox","nativeElement","debounceTime","distinctUntilChanged","res","getUserFromInputAsync","getUserList","takeUntil","resp","inputAutoComplete","closePanel","openPanel","next","complete","completeLoadRecentlyConversationList","$event","hostElement","target","scrollHeight","scrollTop","clientHeight","loadNextPageOfAllList","setValue","filterValue","toLowerCase","contact","firstName","includes","option","item","id","userName","clearUserSearch","onScroll","selectUserFromSearch","ChatTitleComponent","chatTitle","refreshConversation","ChatBoxFormInputComponent","service","el","cdr","modelMessageHistory","changes","messageChanges","firstChange","previousValue","currentValue","chatInput","querySelector","focus","detectChanges","event","message","receiverType","model","messageType","saveMessage","sendMessage","MessagesChipComponent","isDeleted","messageData","ChatBoxUiComponent","authService","signalrService","destroy$","paging","messageHistories","totalPages","numberOfNewMessage","isListRendered","isLoading","isFetching","checkRoute","formatModel","getOldMessage","getFistLoadUserName","messageReceived","dynamicDataType","push","JSON","parse","reloadConversation","formatMessage","getToken","connect","getValue","onDispose","url","window","location","pathname","splitUrl","split","length","params","splitParams","ex","console","log","getChatHistories","floor","temp","status","reverse","distinctArray","obj","index","self","findIndex","t","messageHistoryId","onMessageReceived","pageYOffset","loadNextPage","chat","document","body","scrollTo","Array","from","querySelectorAll","onWindowScroll","loadNewConverSation","EmptyLayoutComponent","ExpiredComponent","redirectUrl","query","search","startsWith","returnUrl","join","navigateByUrl","redirectUser","ResetPasswordFailComponent","redirectToLogin","ResetPasswordSuccessComponent","ResetPassword","fieldName","ResetPasswordComponent","hideNewPwd","hideConfirmNewPwd","frmResetPwd","formGroup","valid","resetSecret","resetPassword","add","resetPwd","LocationProps","OnBoardingFormViewModel","ArtistDetails","Contacts","ActDetails","VideoLinks","PhotoLinks","FilePhotos","TestimonialsForm","Country","WillTravel","Consent","x","Media","Testimonials","Tags","conditionalExpression","ReasonOnBoardViewModel","MediaOnBoardViewModel","ContactOnBoardViewModel","isSameAsArtist","ContactTypeID","expression","phone","ObjectChangedModel","PID","EntityTypeID","ActionID","PropertyName","EntityID","PropertyValue","Signature","DateModified","ActionOnboardingFormEnums","ADDED","MODIFIED","DELETED","EntityTypeOnboardingFormEnums","ACT","CONTACT","ARTIST_DETAILS","CONTACTBLOCK","ACTBLOCK","LOCATION","AgreementOnboardingForm","ArtistDetailsTabComponent","formBuilder","locationService","cd","changesList","countriesArr","rawLocation","lstDataCountry","lstDataCity","lstDataState","isReadOnlyState","isReadOnlyCity","lstNearBigCity","willTravelFlag","initial","artistDetailsForm","artistDetails","markAllAsTouched","Object","entries","controls","forEach","key","control","detectChangesArtistDetails","setupLocationFirstLoad","dataChanges","stringify","ngOnInit","propName","newPropName","changedPropertyIndex","toLocaleLowerCase","newChanges","undefined","find","contactID","getDefaultLocation","toPromise","setupLocation","type","error","getNearBigCity","locationLst","country","countryData","name","locationUrl","iso2","states","state","stateData","state_code","parentCode","cities","city","cityData","State","emitEvent","City","NearestBigCity","resetLocationData","valueCountry","disableCity","valueState","valueCity","valueNearBigCity","majorCity","countryControl","cityControl","disable","enable","Promise","all","getDefaultBigCity","resolve","setTimeout","selectedState","selectedCity","getChildrenFromParentLocation","ContactDetailsTabComponent","contactOnBoardingViewModelForms","newContactLstFrm","contactOnBoardingViewModel","mainProfileId","i","cont","newValue","setValidators","clearValidators","mainControl","tempContact","newContact","splice","checkChanged","sameAsArtistLabelChecked","addMoreContacts","ActDetailsTabComponent","mediaService","profileService","toast","actDetails","validForm","actDetailsForm","act","createFormAct","clickAddAct","inputAct","uploadRiderAttachment","addedFiles","file","patchValue","FileRider","uploadRiderAttachmentOnboardingForm","RiderAttachment","uploadPhoto","files","uploadImageAsset","newPhotos","str","photo","MediaID","MediaTypeID","err","info","danger","indexFile","indexOf","videoLink","ClientNames","Testimonial","loopStr","convertJson","replace","SetList","PreviousClients","Rider","testimonial","RealName","addLinkVideo","formatTestimonialForm","formatInnerHTML","setValidatorsForms","assign","newForm","actForm","statusChanges","invalid","actModel","listIndex","video","AgreementTabComponent","settingService","termForm","agreementForm","getSettingByKeyAndGroupAllow","Term","OnboardingFormComponent","dialog","taskService","titleService","titleForm","createNew","selectedFrom","onboardingData","onboardingDataBackup","isNext","lockSubmit","originalTitle","getTitle","setTitle","pid","getProfileToken","cookieData","getLocalOnboardingData","parsedData","cacheDataDialog","open","afterClosed","ContactID","deleteLocalStorage","redirectToFrontFacingUrl","selectedIndex","checkSubmitForm","stepIndex","appArtistDetails","validateContactDetails","validateActDetails","appAgreement","validate","contactForm","contactDetails","element","actForms","validateForm","artistDetailsChanges","agreementFormData","getAgreementOnboardingForm","getArtistDetails","Notes","Note","Signatures","getChangesArtistDetails","contactDetailsPart","getContactDetails","actDetailsPart","getActDetails","getActDetailChanges","artistData","Address","Address2","Zipcode","getContactDetailChanges","onboardingFormSubmit","Scarlettname","signupArtists","concat","attachNoteForChanges","attachSignatureForChanges","artistUpdate","switchMap","saveSubmitOnBoardingForm","autoCreateTaskOnBoardingData","rs","contacts","oldContactIndex","oldCont","prop","trim","isAlreadyAdded","oldContactIds","newContacIds","y","removedContactIds","removeContactInfo","signature","acts","oldActIndex","oldAct","medias","media","oldActIds","newActIds","removedActIds","removeActInfo","savedData","localStorage","setItem","getItem","saveDataToLocal","removeItem","agreementData","frontFacingUrl","performRedirection","href","endsWith","selectionChangeTab","SubmitForm","PageOnboardingFormComponent","route","configCompany","isNotfound","getConfigCompany","queryParams","AccessLogService","http","baseUrl","environment","trackingId","TrackingLayoutComponent","accessLogService","checkingMessage","permittedAccess","backupRedirect","getSettingByName","trackingScript","loadScript","verifyTrackingRedirect","isAllowed","orgUrl","openUrl","chatScript","createElement","async","src","appendChild","ExternalActionService","tokenUrl","authURL","token","post","ExternalActionComponent","checkQueryParam","callUrl","tokenId","dataLogin","phoneNumber","addinImageUrl","substring","listQuery","tokenQuery","shift","tokenIdQuery","returnURLQuery","phoneNumberQuery","callUrlQuery","addinImageUrlQuery","tokenEncode","atob","toString","checkAPITokenValid","getDataLogin","decodeURIComponent","nebularToken","createdAt","now","ownerStrategyName","accessToken","ForgotPassword","ForgotPasswordComponent","frmForgotPwd","forgotPassword","FotgotPasswordSuccessComponent","routes","path","component","children","loadChildren","then","m","MasterLayoutModule","canActivate","SendSupportTicketComponent","campaignService","frmTitle","title","imageUrl","loadingSupportTicket","emailTemplate","showEditorEmail","isFromOutlookAddin","onTokenChange","isValid","user","getPayload","editorQuill","getUserInformation","configSentEmail","setupEditorStyle","getElementsByClassName","style","maxHeight","getUserById","nameid","userModel","decodeURI","HtmlTemplate","bodyEmail","getEmailHtmlQuill","html","titleEmail","senderId","sender","getSettingByKeyAndGroup","sendSupportTicketEmail","shareReplay","HomeRoutingModule","HomeModule","FormsModule","ReactiveFormsModule","N"],"mappings":"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","file":"x","sourcesContent":["import { prop, required } from \"@rxweb/reactive-form-validators\";\nimport { Page } from \"src/app/shared/models/paging/page\";\n\nexport class MessageHistory {\n messageHistoryId: number;\n @required()\n userId: string;\n @required()\n receiverId: string;\n @required()\n message: string;\n @required()\n messageType: string;\n @required()\n receiverType: string;\n deleted: boolean;\n dateDeleted: string | null;\n dateModified: string | null;\n dateCreated: string | null;\n}\n\nexport class ChatHistoryPagingViewModel extends Page {\n @required()\n receiverId: string;\n @required()\n receiverType: string;\n @required()\n userId: string;\n numberOfNewMessages: number = 0;\n}\nexport class UserConversationPaging extends Page {\n userId: string;\n}\nexport class UserConversationInfo{\n userId: string;\n displayName: string;\n}\nexport enum ReceiverType {\n PERSONAL,\n GROUP\n}\n\nexport enum MessageType {\n TEXT,\n IMAGE,\n}\n","
\n
\n
\n {{conversationObj.displayName}}\n
\n
\n {{pipeLastMessage() }}\n {{conversationObj?.messageHistory?.message}}\n ·\n \n {{ messageDateToLocalTime | date: 'hh:mm a'}}\n \n {{ messageDateToLocalTime | date: 'M/d'}}\n \n {{ messageDateToLocalTime | date: 'M/d/yyyy'}}\n
\n
\n
","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SharedEventService } from '../shared-event.service';\nimport { Helper } from 'src/app/shared/utility/Helper';\n\n@Component({\n selector: 'app-conversation',\n templateUrl: './conversation.component.html',\n styleUrls: ['./conversation.component.scss']\n})\nexport class ConversationComponent implements OnInit {\n\n @Input() displayName: string = \"Test\";\n @Input() receiverId: string = \"Test\";\n @Input() userId: string = \"Test\";\n @Input() conversationObj\n @Output() changeConversation = new EventEmitter();\n messageDateToLocalTime = \"\"\n messageDateAfterConvert = '-1'\n constructor(\n private router: Router,\n private chatBoxShareService: SharedEventService\n\n ) { }\n pipeLastMessage() {\n if (this.conversationObj?.messageHistory) {\n return this.conversationObj?.userId !== this.conversationObj?.messageHistory?.userId ? \"you:\" : \"\"\n }\n return \"\"\n }\n\n ngOnInit(): void {\n this.messageDateToLocalTime = new Date(this.conversationObj?.dateCreated).toLocaleString('en-US', { hour: '2-digit', minute: 'numeric', month: 'numeric', day: 'numeric', year: 'numeric' })\n this.messageDateAfterConvert = Helper.checkTimePassOfMessageTime(this.messageDateToLocalTime)\n }\n handleClick() {\n this.changeConversation.emit({\n receiverId: this.conversationObj.userId,\n displayName: this.conversationObj.displayName\n });\n this.router.navigate([`/message/${this.userId}_${this.conversationObj.userId}_PERSONAL`])\n }\n}\n","
\n
\n
\n

Chats

\n
\n
\n
\n
\n \n Search user...\n \n \n \n {{user.userName}}\n \n \n Not Found\n \n \n clear\n \n
\n
\n
\n
\n
\n
\n
\n
\n Recently\n
\n \n
\n
\n
\n
\n
\n All\n
\n \n
\n
\n
\n \n
\n","import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { UserConversationPaging } from '../chat-box-ui.model';\nimport { ChatBoxUiService } from '../chat-box-ui.service';\nimport { concatMap, debounceTime, distinctUntilChanged, map, startWith, takeUntil } from 'rxjs/operators';\nimport { SharedEventService } from '../shared-event.service';\nimport { UserModel } from 'src/app/modules/admin/user-management/user-model';\nimport { FormBuilder } from '@angular/forms';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\n\n@Component({\n selector: 'app-chat-sidebar',\n templateUrl: './chat-sidebar.component.html',\n styleUrls: ['./chat-sidebar.component.scss']\n})\nexport class ChatSidebarComponent implements OnInit, OnDestroy {\n\n @ViewChild('searchUserInput', { static: true }) searchBox: ElementRef;\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) inputAutoComplete: MatAutocompleteTrigger;\n @ViewChild('scrollContainer') scrollContainer: ElementRef;\n @Input() userConversationPaging = new UserConversationPaging()\n @Input() receiverId;\n @Output() emitToChatBox = new EventEmitter();\n listAllConversation = []\n listRecentlyConversation = []\n totalElementsListAll = 0;\n totalElementsListRecently = 0;\n totalPagesListAll = 0;\n totalPagesListRecently = 0;\n pageSize = 25;\n\n protected _onDestroy = new Subject();\n loading = false;\n autocompleteAgent: Observable;\n userSearch: UserModel[] = [];\n userSearchInputFrm = this.frmBuilder.group({\n userSearchInput: '',\n });\n\n constructor(\n private chatService: ChatBoxUiService,\n private sharedService: SharedEventService,\n private userService: UserService,\n private frmBuilder: FormBuilder,\n ) { }\n\n ngOnInit(): void {\n this.userConversationPaging.pageNumber = 0;\n this.userConversationPaging.size = this.pageSize;\n this.chatService.getRecentlyUserConversation(this.userConversationPaging).pipe(\n concatMap(resp1 => {\n if (resp1?.result) {\n // this.totalElementsListRecently = resp1?.result?.page.totalElements;\n // this.totalPagesListRecently = Math.round(this.totalElementsListRecently / this.userConversationPaging.size);\n this.listRecentlyConversation = [...resp1?.result?.data];\n }\n return this.chatService.getAllUserConversation(this.userConversationPaging);\n })\n ).subscribe(resp2 => {\n if (resp2?.result) {\n this.totalElementsListAll = resp2?.result?.page.totalElements;\n this.totalPagesListAll = Math.round(this.totalElementsListAll / this.userConversationPaging.size);\n this.listAllConversation = [...resp2?.result?.data];\n //filter the conversation that arl have at recently\n this.listAllConversation = this.listAllConversation\n .filter(obj1 => !this.listRecentlyConversation.some(obj2 => obj2.userId === obj1.userId && obj2.displayName === obj1.displayName));\n }\n });\n this.sharedService.sendNewMessage.subscribe((newMessage) => {\n if (newMessage) {\n this.loadNewRecentlyConversation(newMessage)\n }\n })\n\n this.autocompleteAgent = this.userSearchInputFrm.get('userSearchInput').valueChanges.pipe(\n startWith(''),\n map(value => this._filter(this.userSearchInputFrm.get('userSearchInput').value))\n );\n\n const keyup$ = fromEvent(this.searchBox.nativeElement, 'keyup');\n keyup$.pipe(\n // add delay to prevent traffic\n debounceTime(1000),\n distinctUntilChanged()\n ).subscribe(res => {\n this.userService.getUserFromInputAsync(this.userSearchInputFrm.get('userSearchInput').value);\n });\n this.loading = true;\n this.userService.getUserList().pipe(\n takeUntil(this._onDestroy)\n ).subscribe(resp => {\n this.userSearch = resp;\n this.loading = false;\n this.inputAutoComplete.closePanel();\n this.inputAutoComplete.openPanel();\n });\n }\n\n ngOnDestroy(): void {\n this._onDestroy.next();\n this._onDestroy.complete();\n }\n\n loadNewRecentlyConversation(newMessage : string) {\n this.chatService.getRecentlyUserConversation(this.userConversationPaging).subscribe(resp => {\n if (resp?.result) {\n // this.totalElementsListRecently = resp?.result?.page.totalElements;\n // this.totalPagesListRecently = Math.round(this.totalElementsListRecently / this.userConversationPaging.size);\n this.listRecentlyConversation = [...resp?.result?.data];\n this.listAllConversation = this.listAllConversation\n .filter(obj1 => !this.listRecentlyConversation.some(obj2 => obj2.userId === obj1.userId && obj2.displayName === obj1.displayName));\n this.sharedService.completeLoadRecentlyConversationList.emit(newMessage)\n\n }\n })\n }\n changeConversation(value: any) {\n this.emitToChatBox.emit(value)\n }\n loadNextPageOfAllList(): void {\n this.userConversationPaging.pageNumber += 1;\n this.chatService.getAllUserConversation(this.userConversationPaging).subscribe(resp => {\n if (resp?.result) {\n this.totalElementsListAll = resp?.result?.page.totalElements\n this.totalPagesListAll = Math.round(this.totalElementsListAll / this.userConversationPaging.size)\n this.listAllConversation = [...this.listAllConversation, ...resp?.result?.data]\n //filter the conversation that arl have at recently\n this.listAllConversation = this.listAllConversation\n .filter(obj1 => !this.listRecentlyConversation.some(obj2 => obj2.userId === obj1.userId && obj2.displayName === obj1.displayName));\n }\n })\n }\n @HostListener(\"scroll\", [\"$event\"]) onScroll($event: any): void {\n const hostElement = $event.target;\n const atBottom = hostElement.scrollHeight - hostElement.scrollTop === hostElement.clientHeight;\n if (atBottom && this.userConversationPaging.pageNumber <= this.totalPagesListAll) {\n this.loadNextPageOfAllList()\n }\n }\n\n clearUserSearch() {\n this.userSearchInputFrm.setValue({ userSearchInput: '' });\n }\n\n private _filter(value: string): UserModel[] {\n const filterValue = value.toLowerCase();\n return this.userSearch.filter(contact => contact.firstName.toLowerCase().includes(filterValue));\n }\n\n selectUserFromSearch(value: any) {\n const receiverId = value.option.value;\n const displayName = this.userSearch.filter(item => item.id === receiverId)[0]?.userName;\n\n this.clearUserSearch();\n this.changeConversation({ receiverId: receiverId, displayName: displayName })\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { SharedEventService } from '../shared-event.service';\n\n@Component({\n selector: 'app-chat-title',\n templateUrl: './chat-title.component.html',\n styleUrls: ['./chat-title.component.scss']\n})\nexport class ChatTitleComponent implements OnInit {\n\n @Input() chatTitle = \"\";\n constructor(\n private chatBoxShareService: SharedEventService\n ) { }\n\n ngOnInit(): void {\n }\n handleRefreshConversation(){\n this.chatBoxShareService.refreshConversation.emit()\n }\n}\n","
\n
\n \n {{chatTitle}}\n \n
\n \n
","import { ChangeDetectorRef, Component, ElementRef, Input, OnChanges, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { ChatBoxUiService } from '../chat-box-ui.service';\nimport { MessageHistory } from '../chat-box-ui.model';\nimport { SharedEventService } from '../shared-event.service';\n\n@Component({\n selector: 'app-chat-box-form-input',\n templateUrl: './chat-box-form-input.component.html',\n styleUrls: ['./chat-box-form-input.component.scss']\n})\nexport class ChatBoxFormInputComponent implements OnInit, OnChanges {\n\n @Input() modelMessageHistory: MessageHistory = new MessageHistory();\n @ViewChild('chatInput') chatInput: ElementRef;\n loading: Boolean = false;\n constructor(\n private service: ChatBoxUiService,\n private sharedService: SharedEventService,\n private el: ElementRef,\n private cdr: ChangeDetectorRef\n ) {\n\n }\n\n ngOnInit(): void {\n }\n ngOnChanges(changes: SimpleChanges): void {\n let messageChanges = changes['modelMessageHistory']\n if (messageChanges && !messageChanges.firstChange) {\n if (messageChanges.previousValue !== messageChanges.currentValue) {\n if (this.chatInput) {\n this.el.nativeElement?.querySelector('#chatInput')?.focus();\n this.cdr.detectChanges();\n }\n }\n }\n }\n sendMessage(event = null) {\n let message = this.chatInput.nativeElement.value;\n if (message && this.modelMessageHistory?.userId && this.modelMessageHistory?.receiverId && this.modelMessageHistory?.receiverType) {\n const model: MessageHistory = {\n ...this.modelMessageHistory,\n message: message,\n messageType: 'TEXT'\n }\n this.service.saveMessage(model).subscribe(resp => {\n if (resp.result) {\n this.chatInput.nativeElement.value = '';\n this.el.nativeElement?.querySelector('#chatInput')?.focus();\n }\n })\n }\n }\n}\n","
\n \n
\n \n \n
\n
","
\n \n
\n \n {{messageDateToLocalTime | date: 'hh:mm a'}}\n \n \n {{messageDateToLocalTime | date: 'M/d hh:mm a'}}\n \n \n {{messageDateToLocalTime | date: 'M/d/yyyy hh:mm a'}}\n \n
\n \n {{messageData.message}}\n \n
\n \n
\n \n
\n\n
\n This message has been deleted.\n
\n\n\n\n\n\n\n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Helper } from 'src/app/shared/utility/Helper';\n\n@Component({\n selector: 'app-messages-chip',\n templateUrl: './messages-chip.component.html',\n styleUrls: ['./messages-chip.component.scss']\n})\nexport class MessagesChipComponent implements OnInit {\n\n @Input() messageOwner;\n @Input() isDeleted = false;\n @Input() messageData;\n showAction: boolean;\n messageDateAfterConvert = '-1'\n messageDateToLocalTime = \"\"\n constructor() { }\n\n ngOnInit(): void {\n this.messageDateToLocalTime = new Date(this.messageData.dateCreated).toLocaleString('en-US', { hour: '2-digit', minute: 'numeric', month: 'numeric', day: 'numeric', year: 'numeric' })\n this.messageDateAfterConvert = Helper.checkTimePassOfMessageTime(this.messageDateToLocalTime)\n }\n}\n","\n \n \n \n \n
\n \n
\n \n
\n \n Loading Message\n \n
\n
\n \n
\n
\n You don't have any message yet!\n
\n
\n
\n \n
\n
\n
","import { AfterViewInit, HostListener, Component, OnDestroy, OnInit, ElementRef, ViewChild, AfterViewChecked, } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { NbAuthService } from '@nebular/auth';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { SignalrDynamicService } from 'src/app/shared/services/signalr-dynamic.service';\nimport { MessageHistory, UserConversationPaging } from './chat-box-ui.model';\nimport { ChatHistoryPagingViewModel } from './chat-box-ui.model';\nimport { ChatBoxUiService } from './chat-box-ui.service';\nimport { SharedEventService } from './shared-event.service';\n\n@Component({\n selector: 'app-chat-box-ui',\n templateUrl: './chat-box-ui.component.html',\n styleUrls: ['./chat-box-ui.component.scss']\n})\nexport class ChatBoxUiComponent implements OnInit, AfterViewInit, OnDestroy, AfterViewChecked {\n constructor(\n private router: Router,\n private chatService: ChatBoxUiService,\n private authService: NbAuthService,\n private signalrService: SignalrDynamicService,\n private sharedService: SharedEventService\n ) { }\n @ViewChild('chatBox', { static: true }) private chatBox: ElementRef;\n private destroy$: Subject = new Subject();\n userId: string;\n receiverId: string;\n receiverType: string;\n modelMessageHistory: MessageHistory = new MessageHistory();\n paging = new ChatHistoryPagingViewModel()\n messageHistories = []\n totalElements = 0;\n totalPages = 0;\n pageSize = 25;\n numberOfNewMessage = 0;\n userConversationPaging = new UserConversationPaging()\n chatTitle: string\n isListRendered = false;\n isLoading = true;\n isFetching = false;\n\n ngOnInit(): void {\n // if the route not match format /message/:userId_:receiverId_:receiverType, it will redirect to auth\n this.checkRoute();\n this.formatModel();\n // pass userId, receiverId, receiverType to modelMessageHistory\n this.paging.receiverId = this.receiverId\n this.paging.userId = this.userId\n this.paging.receiverType = \"PERSONAL\"\n this.paging.size = this.pageSize;\n this.paging.pageNumber = 0;\n\n\n this.getOldMessage();\n // signalRService to get new message (trigger when user/receiver message to another)\n this.chatService.getFistLoadUserName(this.paging.receiverId).subscribe(resp => {\n if (resp) {\n this.chatTitle = resp.result\n }\n })\n this.signalrService.messageReceived.pipe(takeUntil(this.destroy$)).subscribe(resp => {\n if (resp?.dynamicDataType !== null && resp.dynamicDataType === 6) {\n let newMessage: MessageHistory[] = []\n newMessage.push(JSON.parse(resp?.data))\n this.sharedService.sendNewMessage.emit(newMessage)\n }\n })\n this.userConversationPaging.userId = this.userId\n this.sharedService.refreshConversation.subscribe(() => {\n this.reloadConversation();\n })\n this.sharedService.completeLoadRecentlyConversationList.subscribe((newMessage) => {\n if (newMessage) {\n this.formatMessage(newMessage, \"new\")\n this.numberOfNewMessage += 1;\n }\n })\n }\n\n ngAfterViewInit(): void {\n this.authService.getToken().subscribe((data) => {\n this.signalrService.connect(\n \"dynamicHub\",\n \"dynamicHubMethod\",\n data.getValue()\n );\n });\n }\n\n ngOnDestroy(): void {\n this.signalrService.onDispose();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n checkRoute() {\n try {\n let url = window.location.pathname;\n if (url.includes('/')) {\n let splitUrl = url.split('/');\n if (splitUrl?.length > 0) {\n let params = splitUrl[splitUrl.length - 1]\n if (params.includes('_')) {\n let splitParams = params.split('_');\n if (splitParams?.length === 3) {\n this.userId = splitParams[0];\n this.receiverId = splitParams[1];\n this.receiverType = splitParams[2];\n return;\n }\n }\n }\n }\n }\n catch (ex) {\n console.log(ex)\n }\n this.router.navigate(['/auth'])\n }\n\n formatModel() {\n if (this.userId && this.receiverId && this.receiverType) {\n this.modelMessageHistory.userId = this.userId;\n this.modelMessageHistory.receiverId = this.receiverId;\n this.modelMessageHistory.receiverType = this.receiverType;\n }\n }\n\n getOldMessage() {\n\n this.paging.size = this.pageSize;\n this.paging.numberOfNewMessages = this.numberOfNewMessage\n this.chatService.getChatHistories(this.paging).subscribe((resp) => {\n if (resp?.result?.data) {\n this.totalElements = resp?.result?.page.totalElements\n this.totalPages = Math.floor(this.totalElements / this.paging.size)\n this.formatMessage(resp.result.data, 'old')\n }\n })\n }\n getNewMessage() {\n\n this.paging.size = 1;\n var temp = this.paging.pageNumber\n this.paging.pageNumber = 0;\n this.chatService.getChatHistories(this.paging).subscribe((resp) => {\n if (resp?.result?.data) {\n this.formatMessage(resp.result.data, \"new\")\n this.numberOfNewMessage += 1;\n this.sharedService.sendNewMessage.emit()\n }\n })\n this.paging.pageNumber = temp\n }\n reloadConversation() {\n\n this.paging.size = this.pageSize;\n this.chatService.getChatHistories(this.paging).subscribe((resp) => {\n if (resp?.result?.data) {\n this.totalElements = resp?.result?.page.totalElements\n this.totalPages = Math.floor(this.totalElements / this.paging.size)\n this.formatMessage(resp.result.data, 'reload')\n }\n })\n }\n\n formatMessage(message: MessageHistory[], status: string) {\n message.reverse()\n if (status === \"new\") {\n this.messageHistories = [...this.messageHistories, ...message]\n let distinctArray = this.messageHistories.filter((obj, index, self) => index === self.findIndex((t) => t.messageHistoryId === obj.messageHistoryId));\n this.messageHistories = [...distinctArray]\n this.isListRendered = false;\n }\n else if (status === \"old\") {\n this.messageHistories = [...message, ...this.messageHistories]\n this.isLoading = false;\n this.isFetching = false;\n }\n else if (status === \"reload\") {\n this.messageHistories = [...message]\n this.isListRendered = false;\n }\n this.onMessageReceived()\n\n // this.messageHistories.map((item, index) => {\n // if (this.messageHistories[index].userId != this.userId) {\n // if (this.messageHistories[index].userId !== this.messageHistories[index + 1]?.userId) {\n // item.showReceiverInfo = true;\n // }\n // else if (this.messageHistories.length == index + 1) {\n // item.showReceiverInfo = true;\n // }\n // }\n // else {\n // item.showReceiverInfo = false;\n // }\n // })\n }\n loadNewConverSation(value: any) {\n // this.checkRoute()\n // this.formatModel()\n this.isFetching = true;\n this.numberOfNewMessage = 0;\n this.modelMessageHistory.receiverId = value.receiverId;\n this.chatTitle = value.displayName\n this.paging.pageNumber = 0;\n this.paging.receiverId = value.receiverId\n this.messageHistories = []\n this.getOldMessage();\n this.isListRendered = false;\n\n }\n loadNextPage(): void {\n if (this.isListRendered) {\n this.paging.pageNumber += 1;\n if (this.paging.pageNumber <= this.totalPages) {\n this.isLoading = true;\n this.getOldMessage()\n }\n else {\n this.paging.pageNumber -= 1;\n }\n }\n }\n @HostListener('window:scroll', ['$event'])\n onWindowScroll(event) {\n if (window.pageYOffset === 0) {\n this.loadNextPage();\n }\n }\n onMessageReceived() {\n let chat = document.body.querySelector(\".chat-container\")\n window.scrollTo(0, chat.scrollHeight);\n }\n ngAfterViewChecked() {\n if (!this.isListRendered) {\n const lastElement = Array.from(document.querySelectorAll('nb-layout-column app-messages-chip'))[this.messageHistories.length - 1];\n if (lastElement) {\n this.isListRendered = true;\n this.onMessageReceived();\n }\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-empty-layout',\n templateUrl: './empty-layout.component.html',\n styleUrls: ['./empty-layout.component.scss']\n})\nexport class EmptyLayoutComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit() {\n }\n\n}\n","
\n empty layout work!\n
","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-expired',\n templateUrl: './expired.component.html',\n styleUrls: ['./expired.component.scss']\n})\nexport class ExpiredComponent implements OnInit {\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n redirectUser() {\n let query = window.location.search;\n let redirectUrl;\n\n //check format returnUrl\n if (query.startsWith(\"?returnUrl=\")) {\n let returnUrl = query.split(\"?returnUrl=\")[1];\n\n if (returnUrl.includes(\"%2F\")) {\n redirectUrl = returnUrl.split(\"%2F\").join(\"/\");\n }\n }\n\n //handle redirect\n if (redirectUrl) {\n this.router.navigateByUrl(`${redirectUrl}`);\n }\n else {\n this.router.navigate([`/auth`]);\n }\n }\n}\n","\n \n \n \n \"expired-pic\"\n
\n Your session has expired\n Please refresh the page. Don't worry, we kept all of your filters and breakdown in\n place\n
\n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-reset-password-fail',\n templateUrl: './reset-password-fail.component.html',\n styleUrls: ['./reset-password-fail.component.scss']\n})\nexport class ResetPasswordFailComponent implements OnInit {\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n redirectToLogin() {\n this.router.navigate([`/auth`]);\n }\n\n}\n","\n \n \n \n
\n \n
\n \n Invalid token.
\n Sorry, can not reset your password. Please contact the administrator.\n
\n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-reset-password-success',\n templateUrl: './reset-password-success.component.html',\n styleUrls: ['./reset-password-success.component.scss']\n})\nexport class ResetPasswordSuccessComponent implements OnInit {\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n redirectToLogin() {\n this.router.navigate([`/auth`]);\n }\n}\n","\n \n \n \n
\n \n
\n \n Reset password successfully\n \n \n
\n
\n
\n
\n","\nimport { compare, required, minLength } from '@rxweb/reactive-form-validators';\n\nexport class ResetPassword {\n @required()\n @minLength({ value: 6 })\n newPassword: string;\n @required()\n @minLength({ value: 6 })\n @compare({ fieldName: 'newPassword', message: 'Confirm New Password are not matched' })\n confirmNewPassword: string;\n}\n","\n \n \n \n

Reset password

\n
\n \n
\n \n Your new password must be different from previously used password\n \n
\n \n New password\n \n {{hideNewPwd ? 'visibility' :\n 'visibility_off'}}\n \n {{frmResetPwd.controls.newPassword['errorMessage']}}\n \n\n \n Confirm new password\n \n {{hideConfirmNewPwd ?\n 'visibility' : 'visibility_off'}}\n \n {{frmResetPwd.controls.confirmNewPassword['errorMessage']}}\n \n \n
\n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { ResetPassword } from './reset-password.model';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: './reset-password.component.html',\n styleUrls: ['./reset-password.component.scss']\n})\nexport class ResetPasswordComponent implements OnInit {\n frmResetPwd: FormGroup;\n hideNewPwd: boolean = true;\n hideConfirmNewPwd: boolean = true;\n isLoading: boolean = false;\n\n constructor(\n private frmBuilder: RxFormBuilder,\n private service: UserService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n this.frmResetPwd = this.frmBuilder.formGroup(ResetPassword);\n }\n\n resetPwd() {\n if (this.frmResetPwd.valid) {\n this.isLoading = !this.isLoading; //loading state\n\n let query = window.location.search; //get query params\n let resetSecret;\n\n //make sure the split function not crash app\n if (query.startsWith(\"?token=\")) {\n resetSecret = query.split(\"?token=\")[1];\n }\n\n if (resetSecret) {\n this.service.resetPassword(resetSecret, this.frmResetPwd.value).subscribe(resp => {\n if (resp.result) {\n this.router.navigate(['reset-password-success']);\n }\n else {\n this.router.navigate(['reset-password-fail']);\n }\n }).add(() => {\n this.isLoading = !this.isLoading;\n });\n }\n else {\n this.router.navigate(['reset-password-fail']);\n }\n }\n }\n}\n","import { digit, email, pattern, prop, propObject, required } from \"@rxweb/reactive-form-validators\";\n\nexport const LocationProps = [\n 'Country', 'Region', 'City', 'Address', 'Address2', 'State', 'Zipcode', 'WillTravel', 'HowFar', 'NearestBigCity'\n]\nexport class OnBoardingFormViewModel {\n constructor() {\n // super();\n this.ArtistDetails = new ArtistDetails();\n this.Contacts = [];\n this.ActDetails = [];\n }\n ArtistDetails: ArtistDetails;\n Contacts: ContactOnBoardViewModel[];\n ActDetails: ArtistDetails[];\n}\n\nexport class ArtistDetails {\n /**\n *\n */\n constructor() {\n this.Country = 'United States of America';\n this.WillTravel = 0;\n // this.HowFar = 'International';\n this.Consent = 1;\n }\n @prop()\n PID: string;\n @prop()\n Scarlettname: string;\n @prop()\n Scarlettlink: string;\n @prop()\n RealName: string;\n @prop()\n Webpage: string;\n @prop()\n Scarlettbio: string;\n @prop()\n Country: string;\n @prop()\n Region: string;\n @prop()\n City: string;\n @prop()\n Address: string;\n @prop()\n Notes: string;\n @prop()\n Rider: string;\n @prop()\n Travel: number;\n @prop()\n Consent: number | boolean;\n @prop()\n Published: number;\n @prop()\n State: string;\n @prop()\n Address2: string;\n @prop()\n Zipcode: string;\n @prop()\n AltusState: string;\n // @prop()\n // DateModified: number;\n // @prop()\n // Datecreated: number;\n @prop()\n Tags: string;\n @prop()\n Lastuser: string;\n @prop()\n Facebook: string;\n @prop()\n SetList: string;\n @prop()\n Testimonials: string | any[];\n @prop()\n PreviousClients: string;\n @prop()\n ProfileRelationship: string;\n @prop()\n Signature: string;\n @prop()\n IsMaster: number;\n @prop()\n Instagram: string;\n @prop()\n Youtube: string;\n @prop()\n Tiktok: string;\n @prop()\n Twitter: string;\n @prop()\n NearestBigCity: string;\n @digit()\n WillTravel: number;\n @required({\n conditionalExpression: function () {\n return this.WillTravel && this.WillTravel == 1 ? true : false;\n }\n })\n HowFar: string;\n @prop()\n RiderAttachment: string;\n @prop()\n //Reason: ReasonOnBoardViewModel[] = [];\n Reason: string;\n @prop()\n Bio: string;\n @prop()\n VideoLinks: MediaOnBoardViewModel[] | any[] = [];\n @prop()\n PhotoLinks: MediaOnBoardViewModel[] | any[] = [];\n @prop()\n FileRider: File;\n @prop()\n FilePhotos: File[] = [];\n @prop()\n TestimonialsForm: TestimonialsForm[] = [];\n static standartlizeOutput(model: ArtistDetails): void {\n // standartlize videos\n if (model && model.VideoLinks && model.VideoLinks.length > 0 && typeof model.VideoLinks !== 'string')\n model.VideoLinks = model.VideoLinks.map(x => x.Media);\n if (model && model.PhotoLinks && model.PhotoLinks.length > 0 && typeof model.PhotoLinks !== 'string')\n model.PhotoLinks = model.PhotoLinks.map(x => x.Media);\n if (model && model.Testimonials && typeof model.Testimonials == 'string')\n model.Testimonials = JSON.parse(model.Testimonials);\n // consent to true:\n model.Consent = 1;\n model.Tags = 'newsignup';\n }\n}\nexport class ReasonOnBoardViewModel {\n @prop()\n RID: number;\n @prop()\n PID: string;\n @prop()\n Reason: string;\n}\nexport class MediaOnBoardViewModel {\n @prop()\n MediaID: number;\n @prop()\n PID: string;\n @prop()\n Media: string;\n @prop()\n MediaTypeID: number;\n}\n\nexport class ContactOnBoardViewModel {\n /**\n *\n */\n constructor() {\n this.isSameAsArtist = true;\n this.Country = 'United States of America';\n this.ContactTypeID = 1;\n }\n @prop()\n ContactID: number;\n @prop()\n PID: string;\n @pattern({ expression: { phone: /^[(]?(\\d|\\+)\\s?(?:[\\d-.x\\s()]*)$/ }, message: 'Invalid pattern of phone number' })\n @prop()\n ContactPhone: string;\n @prop()\n ContactTypeID: number;\n @prop()\n ContactName: string;\n @email()\n ContactEmail: string;\n @required({\n conditionalExpression: function () {\n return this.isSameAsArtist === false ? true : false;\n }\n })\n Country: string;\n @prop()\n State: string;\n @required({\n conditionalExpression: function () {\n return this.isSameAsArtist === false ? true : false;\n }\n })\n City: string;\n @prop()\n Zipcode: string;\n @prop()\n Address: string;\n @prop()\n Address2: string;\n @prop()\n ContactLastName: string;\n // @prop()\n PrimaryContact: number;\n @prop()\n @pattern({ expression: { phone: /^[(]?(\\d|\\+)\\s?(?:[\\d-.x\\s()]*)$/ }, message: 'Invalid pattern of phone number' })\n SecondaryPhone: string;\n @prop()\n @pattern({ expression: { phone: /^[(]?(\\d|\\+)\\s?(?:[\\d-.x\\s()]*)$/ }, message: 'Invalid pattern of phone number' })\n CellPhone: string;\n @email()\n SecondaryEmail: string;\n @prop()\n Facebook: string;\n @prop()\n Skype: string;\n @prop()\n WhatsApp: string;\n // extend prop for form:\n @prop()\n isSameAsArtist: boolean = true;\n}\n\nexport class ObjectChangedModel {\n /**\n *\n */\n constructor(PID, EntityTypeID, ActionID, PropertyName, EntityID, PropertyValue, Signature, DateModified) {\n this.PID = PID;\n this.EntityTypeID = EntityTypeID;\n this.ActionID = ActionID;\n this.DateModified = DateModified;\n this.PropertyName = PropertyName;\n this.PropertyValue = PropertyValue;\n this.Signature = Signature;\n this.EntityID = EntityID;\n }\n PID: string;\n EntityTypeID: string;\n ActionID: string;\n PropertyName: string;\n EntityID?: any | null;\n PropertyValue?: any | null;\n Signature?: any | null;\n DateModified?: number | null;\n}\n\nexport enum ActionOnboardingFormEnums {\n ADDED = \"ADDED\",\n MODIFIED = \"MODIFIED\",\n DELETED = \"DELETED\",\n}\nexport enum EntityTypeOnboardingFormEnums {\n ACT = \"ACT\",\n CONTACT = \"CONTACT\",\n ARTIST_DETAILS = \"ARTIST_DETAILS\",\n CONTACTBLOCK = \"CONTACTBLOCK\",\n ACTBLOCK = \"ACTBLOCK\",\n LOCATION = \"LOCATION\"\n}\nexport class TestimonialsForm {\n ClientNames: string;\n Testimonial: string;\n}\n\nexport class AgreementOnboardingForm {\n /**\n *\n */\n constructor() {\n }\n @prop()\n Note: string;\n @required()\n Term: boolean;\n @required()\n Signatures: string;\n}","
\n
\n \n
\n
\n \n \n \n {{artistDetailsForm.controls.Scarlettname['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{artistDetailsForm.controls.Webpage['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{artistDetailsForm.controls.Facebook['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{artistDetailsForm.controls.Country['errorMessage']}}\n
\n
\n \n
\n
\n 0; else MajorStateClassicMockup\">\n \n \n \n {{artistDetailsForm?.controls?.State['errorMessage']}}\n \n \n \n \n \n
\n
\n\n \n
\n
\n \n 0 && lstDataCity?.length > 0;else MajorCityClassicMockup\">\n \n \n \n \n \n \n {{artistDetailsForm?.controls?.City['errorMessage']}}\n
\n
\n\n \n
\n
\n \n \n \n \n \n {{artistDetailsForm?.controls?.NearestBigCity['errorMessage']}}\n \n \n \n \n \n
\n
\n\n \n
\n
\n \n \n
\n
\n\n \n
\n
\n \n \n
\n
\n\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n \n {{artistDetailsForm.controls.HowFar['errorMessage']}}\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
","import { ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { map } from 'rxjs/operators';\nimport { countriesArr } from 'src/app/shared/contances/country-constance';\nimport { ActionOnboardingFormEnums, ArtistDetails, EntityTypeOnboardingFormEnums, LocationProps, ObjectChangedModel } from '../onboarding-form-profile.model';\nimport { LocationService } from '../../stand-alone-component/location/location.service';\n\n@Component({\n selector: 'app-artist-details-tab',\n templateUrl: './artist-details-tab.component.html',\n styleUrls: ['./artist-details-tab.component.scss', '../onboarding-form.component.scss']\n})\nexport class ArtistDetailsTabComponent implements OnInit, OnChanges {\n @Input() artistDetails: ArtistDetails;\n @Input() contactID: number;\n artistDetailsForm: FormGroup;\n changesList: ObjectChangedModel[] = [];\n countriesArr = countriesArr;\n rawLocation = [];\n location = [];\n lstDataCountry = [];\n lstDataCity = [];\n lstDataState = [];\n isReadOnlyState: boolean = true;\n isReadOnlyCity: boolean = true;\n lstNearBigCity = [];\n constructor(\n private formBuilder: RxFormBuilder,\n private locationService: LocationService,\n private cd: ChangeDetectorRef,\n ) { }\n willTravelFlag = \"1\";\n initial = false;\n ngOnInit(): void {\n this.artistDetailsForm = this.formBuilder.formGroup(ArtistDetails, this.artistDetails);\n this.artistDetailsForm.markAllAsTouched();\n // add changes detect logic here:\n Object.entries(this.artistDetailsForm.controls).forEach(value => {\n const [key, control] = value;\n control.valueChanges.subscribe(\n (value) => {\n this.detectChangesArtistDetails(key, this.artistDetailsForm.controls.PID.value, value);\n },\n );\n });\n this.setupLocationFirstLoad();\n }\n ngOnChanges(changes: SimpleChanges): void {\n let dataChanges = changes?.artistDetails;\n let contactIDChanges = changes?.contactID;\n if (dataChanges?.previousValue && JSON.stringify(dataChanges?.previousValue) != JSON.stringify(dataChanges?.currentValue)) {\n this.ngOnInit();\n\n }\n }\n getArtistDetails(): ArtistDetails {\n if (this.artistDetailsForm.valid) {\n return this.artistDetailsForm.value;\n } else {\n return null;\n }\n }\n detectChangesArtistDetails(propName: string, PID: string, value: any) {\n\n let newPropName = propName;\n if (propName.toLowerCase() == 'Scarlettname'.toLowerCase())\n newPropName = 'DisplayName';\n if (PID) {\n // have PID then search if it has already added:\n let changedPropertyIndex = this.changesList.findIndex(x => x.PropertyName.toLocaleLowerCase() === newPropName.toLocaleLowerCase() && x.PID === PID)\n if (changedPropertyIndex != -1) {\n // has value:\n this.changesList[changedPropertyIndex].PropertyValue = value;\n this.changesList[changedPropertyIndex].DateModified = 0;\n this.changesList[changedPropertyIndex].DateModified = + new Date();\n console.log(this.changesList);\n } else {\n\n // add new \n let newChanges = new ObjectChangedModel(\n PID,\n LocationProps.find(x => x.toLowerCase() === newPropName.toLowerCase()) === undefined ? EntityTypeOnboardingFormEnums.ARTIST_DETAILS : EntityTypeOnboardingFormEnums.LOCATION,\n ActionOnboardingFormEnums.MODIFIED,\n newPropName,\n LocationProps.find(x => x.toLowerCase() === newPropName.toLowerCase()) === undefined ? null : (this.contactID),\n value,\n null,\n + new Date());\n // special case 'Scarlettname' ==> RealName:\n // remove first track for how far:\n if (!this.initial && propName === 'HowFar') {\n this.initial = true;\n return;\n }\n this.changesList.push(newChanges);\n console.log(this.changesList);\n }\n } else {\n // no pid mean new artist:\n\n }\n }\n getChangesArtistDetails(): ObjectChangedModel[] {\n return this.changesList;\n }\n async getDefaultLocation() {\n try{\n const location = await this.locationService.getDefaultLocation().toPromise();\n if(location){\n this.rawLocation = this.setupLocation(location);\n if(this.rawLocation){\n this.location = this.rawLocation;\n }\n if(this.location){\n this.lstDataCountry = this.location.filter(x=>x.type == \"COUNTRY\");\n }\n }\n }\n catch (error) {\n console.log(error);\n }\n }\n async getDefaultBigCity(){\n const location = await this.locationService.getNearBigCity().toPromise();\n if(location){\n this.lstNearBigCity = location;\n }\n }\n setupLocation(rawLocation) {\n try{\n let locationLst = [];\n if(rawLocation){\n rawLocation.forEach(country => {\n const countryData = {\n value: country.name == \"United States\" ? \"United States of America\" : country.name,\n locationUrl: country.iso2?.toLowerCase(),\n type: \"COUNTRY\"\n }\n locationLst.push(countryData);\n if (country.states) {\n country.states.forEach(state => {\n const stateData = {\n value: state.name,\n locationUrl: state.state_code?.toLowerCase(),\n type: \"STATE\",\n parentCode: countryData.value\n }\n locationLst.push(stateData);\n \n if (state.cities) {\n state.cities.forEach(city => {\n const cityData = {\n value: `${city.name}`,\n locationUrl: `${city.name.toLowerCase()?.split(\" \")?.join(\"-\")}`,\n type: \"CITY\",\n parentCode: stateData.value\n }\n locationLst.push(cityData);\n })\n }\n })\n }\n })\n }\n return locationLst;\n }catch(error){\n console.log(error);\n }\n \n }\n private resetLocationData() {\n this.artistDetailsForm?.controls?.State?.setValue(null, { emitEvent: false });\n this.artistDetailsForm?.controls?.City?.setValue(null, { emitEvent: false });\n this.artistDetailsForm?.controls?.NearestBigCity?.setValue(null, { emitEvent: false });\n this.lstDataState = [];\n this.lstDataCity = [];\n }\n\n getChildrenFromParentLocation(type: string){\n try{\n if (this.artistDetailsForm?.controls?.Country?.value === \"United States of America\") {\n this.artistDetailsForm?.controls?.NearestBigCity?.setValue(null, { emitEvent: false });\n \n switch(type) {\n case 'country':\n this.resetLocationData();\n const valueCountry = this.artistDetailsForm?.controls?.Country?.value;\n this.lstDataState = this.location.filter(x => x.type === \"STATE\" && x.parentCode === valueCountry);\n this.disableCity();\n break;\n \n case 'state':\n this.lstDataCity = [];\n const valueState = this.artistDetailsForm?.controls?.State?.value;\n if (valueState) {\n this.lstDataCity = this.location.filter(x => x.type === \"CITY\" && x.parentCode === valueState);\n }\n\n this.artistDetailsForm?.controls?.City?.setValue(null, { emitEvent: false });\n this.artistDetailsForm?.controls?.NearestBigCity?.setValue(null);\n this.disableCity();\n break;\n \n case 'city':\n const valueCity = this.artistDetailsForm?.controls?.City?.value;\n if (valueCity) {\n var valueNearBigCity = this.lstNearBigCity.filter(x => x.city === valueCity);\n if (valueNearBigCity.length > 0) {\n this.artistDetailsForm.controls.NearestBigCity.setValue(valueNearBigCity[0].majorCity);\n }\n }\n break;\n }\n } else {\n this.resetLocationData();\n this.disableCity();\n }\n }\n catch(error){\n console.log(error)\n }\n }\n disableCity(){\n const countryControl = this.artistDetailsForm?.controls?.Country;\n const cityControl = this.artistDetailsForm?.controls?.City;\n\n if (countryControl.value === \"United States of America\") {\n if (this.lstDataState?.length > 0 && this.lstDataCity?.length === 0) {\n cityControl.disable(); \n } else {\n cityControl.enable(); \n }\n } else {\n cityControl.enable();\n }\n }\n async setupLocationFirstLoad(){\n try {\n await Promise.all([\n this.getDefaultBigCity(),\n this.getDefaultLocation()\n ]);\n const valueCountry = this.artistDetailsForm?.controls?.Country?.value;\n \n if(valueCountry == \"United States of America\"){\n\n this.lstDataState = this.location.filter(x=>x.type == \"STATE\" && x.parentCode == valueCountry);\n\n const valueState = this.artistDetailsForm?.controls?.State?.value;\n if (valueState) {\n await new Promise(resolve => setTimeout(resolve, 0));\n const selectedState = this.lstDataState.find(state => state.value === valueState);\n if (selectedState) {\n this.artistDetailsForm.controls.State.setValue(selectedState.value, { emitEvent: false });\n }else{\n this.artistDetailsForm.controls.State.setValue(null, { emitEvent: false });\n }\n \n this.lstDataCity = this.location.filter(x => x.type === \"CITY\" && x.parentCode === valueState);\n const valueCity = this.artistDetailsForm?.controls?.City?.value || null;\n if(this.lstDataCity?.length === 0){\n this.artistDetailsForm?.controls?.City?.disable();\n }else{\n this.artistDetailsForm?.controls?.City?.enable();\n }\n if (valueCity) {\n await new Promise(resolve => setTimeout(resolve, 0));\n const selectedCity = this.lstDataCity.find(city => city.value === valueCity);\n if (selectedCity) {\n this.artistDetailsForm.controls.City.setValue(selectedCity.value, { emitEvent: false });\n }\n else{\n this.artistDetailsForm.controls.City.setValue(null, { emitEvent: false });\n }\n }\n }\n }\n\n setTimeout(() => {\n this.cd.detectChanges();\n }, 0);\n \n } catch (error) {\n console.log(error);\n }\n }\n}\n","
\n
\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.ContactName['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.ContactLastName['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.ContactPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.SecondaryPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.CellPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.ContactEmail['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.SecondaryEmail['errorMessage']}}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.Country['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.Address['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.Address2['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.City['errorMessage']}}\n
\n
\n \n
\n
\n \n \n \n {{contactOnBoardingViewModelForms[0]?.controls.State['errorMessage']}}\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n \n
1\">\n
\n \n \n
\n
\n \n \n
\n
\n\n\n
\n
\n \n \n
\n
\n Alternative contact {{index+1}}\n
\n \n
\n
\n
\n \n
\n
\n \n \n \n {{model?.controls.ContactName['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.ContactLastName['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.ContactPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.SecondaryPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.CellPhone['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.ContactEmail['errorMessage']}}\n
\n
\n
\n
\n \n \n \n {{model?.controls.SecondaryEmail['errorMessage']}}\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n \n {{model?.controls.Country['errorMessage']}}\n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n \n {{model?.controls.City['errorMessage']}}\n
\n
\n \n
\n
\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { RxFormBuilder, RxwebValidators } from '@rxweb/reactive-form-validators';\nimport { countriesArr } from 'src/app/shared/contances/country-constance';\nimport { ActionOnboardingFormEnums, ContactOnBoardViewModel, EntityTypeOnboardingFormEnums, ObjectChangedModel } from '../onboarding-form-profile.model';\n\n@Component({\n selector: 'app-contact-details-tab',\n templateUrl: './contact-details-tab.component.html',\n styleUrls: ['./contact-details-tab.component.scss', '../onboarding-form.component.scss']\n})\nexport class ContactDetailsTabComponent implements OnInit, OnChanges {\n @Input() contactOnBoardingViewModel: ContactOnBoardViewModel[];\n contactOnBoardingViewModelForms: FormGroup[] = [];\n\n constructor(private formBuilder: RxFormBuilder) {\n }\n isSameAsArtist: boolean = true;\n newContactLstFrm: any[] = [];\n // 2022-06-06 tienlm add start\n changesList: ObjectChangedModel[] = [];\n mainProfileId: string;\n countriesArr = countriesArr;\n // 2022-06-06 tienlm add end\n ngOnInit(): void {\n if (this.contactOnBoardingViewModel && this.contactOnBoardingViewModel.length > 0) {\n // set main profileid:\n this.mainProfileId = this.contactOnBoardingViewModel[0]?.PID ?? null;\n this.contactOnBoardingViewModel.forEach((i) => {\n i.isSameAsArtist = true;\n });\n this.contactOnBoardingViewModelForms = [];\n this.contactOnBoardingViewModel.forEach((cont, index) => {\n this.contactOnBoardingViewModelForms.push(this.formBuilder.formGroup(ContactOnBoardViewModel, cont));\n this.contactOnBoardingViewModelForms[index].markAllAsTouched();\n });\n } else {\n // new contact:\n this.contactOnBoardingViewModelForms[0] = this.formBuilder.formGroup(ContactOnBoardViewModel, new ContactOnBoardViewModel());\n this.contactOnBoardingViewModelForms[0].markAllAsTouched();\n }\n\n // add changes logic:\n // this.contactOnBoardingViewModelForms.forEach((contactForm, index) => {\n // // add changes detect logic here:\n // if (contactForm.controls.ContactID.value && contactForm.controls.ContactID.value > 0) {\n // Object.entries(contactForm.controls).forEach(value => {\n // const [key, control] = value;\n // control.valueChanges.subscribe(\n // (value) => {\n // this.detectContactChanges(key, value, index, contactForm.controls.contactID.value, contactForm.controls.PID.value);\n // },\n // );\n // });\n // }\n // });\n }\n sameAsArtistChecked(event) {\n // console.log(event);\n }\n sameAsArtistLabelChecked(value, model: AbstractControl) {\n let newValue = !value;\n model.setValue(newValue);\n if (newValue == false) {\n // add controls\n this.contactOnBoardingViewModelForms[0].controls.Country.setValidators([RxwebValidators.required()]);\n this.contactOnBoardingViewModelForms[0].controls.City.setValidators([RxwebValidators.required()]);\n } else {\n // value == true: \n this.contactOnBoardingViewModelForms[0].controls.Country.clearValidators();\n this.contactOnBoardingViewModelForms[0].controls.City.clearValidators();\n }\n\n }\n // for child model\n ContactSameAsArtistLabelChecked(value, model: AbstractControl, mainControl: FormGroup) {\n model.setValue(!value);\n if (value) {\n // \n mainControl.controls.Country.setValidators([RxwebValidators.required()]);\n mainControl.controls.City.setValidators([RxwebValidators.required()]);\n } else {\n mainControl.controls.Country.clearValidators();\n mainControl.controls.City.clearValidators();\n }\n }\n addMoreContacts() {\n let tempContact = new ContactOnBoardViewModel();\n tempContact.PID = this.mainProfileId ?? null;\n tempContact.ContactTypeID\n let newContact = this.formBuilder.formGroup(ContactOnBoardViewModel, tempContact);\n this.contactOnBoardingViewModelForms.push(newContact);\n this.contactOnBoardingViewModelForms[this.contactOnBoardingViewModelForms.length - 1].markAllAsTouched();\n }\n removeSubContacts(index) {\n this.contactOnBoardingViewModelForms.splice(index, 1);\n }\n ngOnChanges(changes: SimpleChanges): void {\n\n let dataChanges = changes.contactOnBoardingViewModel;\n if (dataChanges && dataChanges.previousValue && JSON.stringify(dataChanges.previousValue) != JSON.stringify(dataChanges.currentValue)) {\n\n this.ngOnInit();\n }\n }\n getContactDetails(): ContactOnBoardViewModel[] {\n if (this.contactOnBoardingViewModelForms.length > 0) {\n let contactViewModel: ContactOnBoardViewModel[] = this.contactOnBoardingViewModelForms.map(item => item.value);\n return contactViewModel;\n }\n return [];\n }\n zipcodeChanged(control: AbstractControl) {\n console.log(control);\n }\n checkChanged(mainControl: FormGroup) {\n console.log(mainControl.controls.isSameAsArtist.value);\n if (!mainControl.controls.isSameAsArtist.value) {\n mainControl.controls.Country.setValidators([RxwebValidators.required()]);\n mainControl.controls.City.setValidators([RxwebValidators.required()]);\n } else {\n mainControl.controls.Country.clearValidators();\n mainControl.controls.City.clearValidators();\n }\n }\n}\n","
\n \n Important Note\n
\n Please read the note before entering your information\n
\n
\n We consider an \"act\" to be a unique version of your show or performance.\n
\n Example #1: If you are a five-piece rock band that also does a two-piece acoustic performance, then that\n would be two separate acts. If you also have a version of your performance that includes a horn section, then\n that\n would be a third act. Please upload appropriate videos and photos for each act.\n
\n Example #2: If you are an acrobat that does multiple routines (aerial, contortion, etc.), then each one\n of\n those would be considered a separate act.\n
\n Example #3: If you are a production company, please list each show offering as a separate act, including\n both\n stage performances and atmosphere entertainment.\n
\n You can add as many different acts as you need to, and we can always add more later.\n
\n
\n\n\n
0\">\n \n \n
\n = 1\" [ngTemplateOutlet]=\"moreAct\"\n [ngTemplateOutletContext]=\"{model: actForm, index: i, isRemove: true}\">\n \n
\n
\n\n\n\n\n
\n
\n \n \n
\n
\n Act {{+index+1}} Details\n
\n \n
\n
\n
\n
\n
\n \n \n \n {{model?.controls?.RealName['errorMessage']}}\n \n
\n
\n
\n
\n \n

\n What are the best selling points of your act/show? Write as many as you can think of\n that\n would help our team sell you to a client.\n

\n \n

* One highlight per line

\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n \n Click or drop your file here to upload rider information.\n \n \n {{ model.controls?.FileRider?.value.name }} ({{\n model.controls?.FileRider?.value.type }})\n \n \n \n
\n
\n
0\"\n class=\"contact-expand notify-sec\">\n \n \n
\n \n \n \n
\n
\n
\n
\n
\n
\n \n

\n * At least 4 photos without your name or identifying information on them, at a minimum\n resolution of 450x450 pixels.\n

\n \n Click or drop your file here to upload photo.\n \n \n \n \n
\n
\n
\n
\n
\n \n \n \n\n
\n = 1\" [ngTemplateOutlet]=\"videoTemp\"\n [ngTemplateOutletContext]=\"{video: video, index: i, isRemove: true, indexAct: index}\">\n \n
\n \n
\n
\n
\n
\n \n \n

* One per line

\n
\n
\n
\n
\n \n \n

* One per line

\n
\n
\n
\n
\n \n \n \n
\n = 1\" [ngTemplateOutlet]=\"testimonialTemp\"\n [ngTemplateOutletContext]=\"{testimonial: testimonial, index: i, isRemove: true, indexAct: index}\">\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n\n\n\n
\n
\n \n \n
\n
\n\n\n
\n
\n

Client name

\n
\n \n \n
\n

Testimonial

\n \n
\n
","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { NbToastrService } from '@nebular/theme';\nimport { RxFormBuilder, RxwebValidators } from '@rxweb/reactive-form-validators';\nimport { filter } from 'rxjs/operators';\nimport { MediaManagementService } from 'src/app/modules/admin/media-management/media-management.service';\nimport { ProfileService } from 'src/app/modules/admin/profile-management/profile.service';\nimport { Helper } from 'src/app/shared/utility/Helper';\nimport { ArtistDetails, MediaOnBoardViewModel, TestimonialsForm } from '../onboarding-form-profile.model';\n\n@Component({\n selector: 'app-act-details-tab',\n templateUrl: './act-details-tab.component.html',\n styleUrls: ['./act-details-tab.component.scss', '../onboarding-form.component.scss']\n})\nexport class ActDetailsTabComponent implements OnInit, OnChanges {\n @Input() actDetails: ArtistDetails[] = [];\n @Output() validForm: EventEmitter = new EventEmitter();\n constructor(\n private formBuilder: RxFormBuilder,\n private mediaService: MediaManagementService,\n private profileService: ProfileService,\n private toast: NbToastrService\n ) { }\n\n actDetailsForm: FormGroup[];\n\n ngOnInit(): void {\n console.log(this.actDetails);\n this.actDetailsForm = [];\n if (this.actDetails && this.actDetails.length > 0) {\n this.actDetails.forEach((act, index) => {\n this.createFormAct(JSON.parse(JSON.stringify(act)), index);\n this.actDetailsForm[index].markAllAsTouched();\n });\n } else this.clickAddAct();\n console.log(this.actDetailsForm);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const inputAct = changes['actDetails'];\n if (inputAct && JSON.stringify(inputAct.previousValue) !== JSON.stringify(inputAct.currentValue))\n this.ngOnInit();\n }\n\n //#region rider file \n onSelectRider(event, index) {\n if (event) this.uploadRiderAttachment(event.addedFiles[0], index);\n }\n\n uploadRiderAttachment(file: File, index) {\n if (file) {\n this.actDetailsForm[index].patchValue({ FileRider: file });\n this.profileService.uploadRiderAttachmentOnboardingForm(file).subscribe(resp => {\n if (resp.result) this.actDetailsForm[index].patchValue({ RiderAttachment: resp.result });\n });\n }\n }\n\n onRemoveRider(file, index) {\n this.actDetailsForm[index].patchValue({ FileRider: null });\n }\n //#endregion rider file\n\n //#region photo\n onSelectPhoto(event, index) {\n if (event) this.uploadPhoto([...event.addedFiles], index);\n }\n\n uploadPhoto(files: File[], index) {\n if (files && files.length > 0 && index != null && index >= 0) {\n this.mediaService.uploadImageAsset(files).subscribe(resp => {\n if (resp.result && resp.result.length > 0) {\n // this.actDetailsForm[index].patchValue({ FilePhotos: files });\n this.actDetailsForm[index].patchValue({ FilePhotos: [...this.actDetailsForm[index]?.controls?.FilePhotos?.value || [], ...files] });\n var newPhotos = [];\n resp.result.forEach(str => {\n let photo = { MediaID: 0, PID: this.actDetailsForm[index].controls?.PID?.value, Media: str, MediaTypeID: 1 } as MediaOnBoardViewModel;\n newPhotos.push(photo);\n });\n\n this.actDetailsForm[index].patchValue({ PhotoLinks: [...this.actDetailsForm[index]?.controls?.PhotoLinks?.value || [], ...newPhotos] });\n }\n }, (err) => {\n if (files && files.length > 0) {\n this.toast.info(\"Reload upload images!\", \"Info\");\n files.forEach(file => {\n if ((file.size / 1024 / 1024) > 20) {\n this.toast.danger(\"Image have size > 20MB\", \"Error\");\n return;\n } else {\n this.mediaService.uploadImageAsset([file]).subscribe(resp => {\n if (resp.result && resp.result.length > 0) {\n this.actDetailsForm[index].patchValue({ FilePhotos: [...this.actDetailsForm[index].controls.FilePhotos.value ?? [], ...[file]] });\n let photo = { MediaID: 0, PID: this.actDetailsForm[index].controls?.PID?.value, Media: resp.result[0], MediaTypeID: 1 } as MediaOnBoardViewModel;\n this.actDetailsForm[index].patchValue({ PhotoLinks: [...this.actDetailsForm[index].controls.PhotoLinks.value ?? [], ...[photo]] });\n }\n });\n }\n });\n }\n });\n }\n }\n\n onRemovePhoto(file, index) {\n if (file) {\n var indexFile = this.actDetailsForm[index].controls.FilePhotos.value.indexOf(file);\n if (indexFile >= 0) {\n this.actDetailsForm[index].controls.FilePhotos.value.splice(indexFile, 1);\n this.actDetailsForm[index].patchValue({\n PhotoLinks: [...this.actDetailsForm[index].controls.PhotoLinks.value\n .filter(x => x.MediaID == 0)\n .filter((x, i) => i != indexFile)]\n });\n // this.actDetailsForm[index].controls.PhotoLinks.value\n\n }\n\n }\n }\n //#endregion photo\n\n //#region video\n addLinkVideo(index) {\n if (index != null && index >= 0) {\n let currentValue = this.actDetailsForm[index].controls?.VideoLinks?.value;\n currentValue.push({\n Media: '',\n MediaID: 0,\n MediaTypeID: 2,\n PID: this.actDetailsForm[index].controls?.PID?.value\n } as MediaOnBoardViewModel);\n this.actDetailsForm[index].patchValue({ VideoLinks: [...currentValue] });\n }\n }\n\n removeLinkPhoto(videoLink, index) {\n if (videoLink && index != null && index >= 0)\n this.actDetailsForm[index].controls.VideoLinks.value\n .splice(this.actDetailsForm[index].controls.VideoLinks.value.indexOf(videoLink), 1)\n }\n //#endregion video\n\n //#region testimonial\n formatTestimonialForm(index) {\n if (index != null && index >= 0) {\n var data = this.actDetailsForm[index]?.controls?.Testimonials?.value\n ?? JSON.stringify([{ ClientNames: '', Testimonial: '' } as TestimonialsForm]);\n var loopStr = data.indexOf('[{');\n for (let index = 0; index <= loopStr - 1; index++) {\n data = JSON.parse(data);\n }\n\n var convertJson = JSON.parse(!Helper.isEmptyOrSpaces(data) && !Helper.isNullOrEmpty(data) ? data\n : JSON.stringify([{ ClientNames: '', Testimonial: '' } as TestimonialsForm])) as TestimonialsForm[];\n\n if (convertJson && convertJson.length > 0) this.actDetailsForm[index].patchValue({\n TestimonialsForm: convertJson.map(x => ({\n ClientNames: x.ClientNames.replace(/\\\\n/g, '\\n'),\n Testimonial: x.Testimonial.replace(/\\\\n/g, '\\n'),\n }))\n })\n else this.actDetailsForm[index].patchValue({\n TestimonialsForm: [{ ClientNames: '', Testimonial: '' } as TestimonialsForm]\n });\n }\n }\n\n formatInnerHTML(index) {\n if (index != null && index >= 0) {\n this.actDetailsForm[index].patchValue({ SetList: this.actDetailsForm[index].controls.SetList.value.replace(/\\\\n/g, '\\n') });\n this.actDetailsForm[index].patchValue({ PreviousClients: this.actDetailsForm[index].controls.PreviousClients.value.replace(/\\\\n/g, '\\n') });\n this.actDetailsForm[index].patchValue({ Rider: this.actDetailsForm[index].controls.Rider.value.replace(/\\\\n/g, '\\n') });\n }\n }\n\n addTestimonial(index) {\n if (index != null && index >= 0) {\n let currentValue = this.actDetailsForm[index].controls?.TestimonialsForm?.value;\n currentValue.push({ ClientNames: '', Testimonial: '' } as TestimonialsForm);\n this.actDetailsForm[index].patchValue({ TestimonialsForm: [...currentValue] });\n }\n }\n\n removeTestimonial(testimonial, index) {\n if (testimonial && index != null && index >= 0)\n this.actDetailsForm[index].controls.TestimonialsForm.value\n .splice(this.actDetailsForm[index].controls.TestimonialsForm.value.indexOf(testimonial), 1)\n }\n //#endregion testimonial\n\n //#region act\n setValidatorsForms(index) {\n if (index != null && index >= 0) this.actDetailsForm[index]\n .controls.RealName.setValidators([RxwebValidators.required()]);\n }\n\n createFormAct(act: ArtistDetails, index: number) {\n this.actDetailsForm.push(this.formBuilder.formGroup(ArtistDetails, act));\n this.addLinkVideo(index);\n this.formatTestimonialForm(index);\n this.formatInnerHTML(index);\n this.setValidatorsForms(index);\n //this.eventStatusForm();\n }\n\n clickAddAct() {\n this.actDetailsForm.push(this.formBuilder.formGroup(ArtistDetails, Object.assign({})));\n var newForm = this.actDetailsForm[this.actDetailsForm.length - 1];\n if (newForm) {\n //this.validForm.emit(false);\n newForm.controls.RealName.setValidators([RxwebValidators.required()]);\n newForm.patchValue({\n VideoLinks: [], PhotoLinks: [], FilePhotos: [], TestimonialsForm: []\n })\n this.addLinkVideo(this.actDetailsForm.length - 1);\n this.formatTestimonialForm(this.actDetailsForm.length - 1);\n newForm.markAllAsTouched();\n //this.eventStatusForm();\n }\n }\n\n removeAct(actForm: FormGroup) {\n this.actDetailsForm.splice(this.actDetailsForm.indexOf(actForm), 1);\n }\n //#endregion act\n\n eventStatusForm() {\n this.actDetailsForm.forEach((item, index) => {\n if (item) {\n item.statusChanges.pipe(filter(() => this.actDetailsForm[index].valid))\n .subscribe(() => this.validForm.emit(true));\n\n item.statusChanges.pipe(filter(() => this.actDetailsForm[index].invalid))\n .subscribe(() => this.validForm.emit(false));\n }\n })\n }\n\n getActDetails(): ArtistDetails[] {\n if (this.actDetailsForm && this.actDetailsForm.length > 0) {\n let actModel: ArtistDetails[] = this.actDetailsForm.map(item => item.value);\n if (actModel && actModel.length > 0) {\n actModel.forEach(act => {\n if (act.TestimonialsForm && act.TestimonialsForm.length > 0) {\n var listIndex = [];\n act.TestimonialsForm.forEach((testimonial, index) => {\n if ((Helper.isNullOrEmpty(testimonial.ClientNames) || Helper.isEmptyOrSpaces(testimonial.ClientNames))\n && (Helper.isNullOrEmpty(testimonial.Testimonial) || Helper.isEmptyOrSpaces(testimonial.Testimonial)))\n listIndex.push(index);\n });\n\n act.TestimonialsForm = [...act.TestimonialsForm.filter((x, index) => !listIndex.includes(index))]\n }\n\n if (act.VideoLinks && act.VideoLinks.length > 0) {\n var listIndex = [];\n act.VideoLinks.forEach((video, index) => {\n if (Helper.isNullOrEmpty(video.Media) || Helper.isEmptyOrSpaces(video.Media))\n listIndex.push(index);\n });\n\n act.VideoLinks = [...act.VideoLinks.filter((x, index) => !listIndex.includes(index))]\n }\n });\n }\n\n actModel.map(item => item.Testimonials = JSON.stringify(item.TestimonialsForm) == '[]' ? '' : JSON.stringify(item.TestimonialsForm));\n return actModel;\n }\n return [];\n }\n}\n","
\n \n

By submitting content to Altus Entertainment, you hereby agree as follows:

\n
\n \n

{{i+1}}. {{line}}

\n
\n
\n\n
\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { SettingService } from 'src/app/shared/services/setting.service';\nimport { AgreementOnboardingForm } from '../onboarding-form-profile.model';\n\n@Component({\n selector: 'app-agreement-tab',\n templateUrl: './agreement-tab.component.html',\n styleUrls: ['./agreement-tab.component.scss', '../onboarding-form.component.scss']\n})\nexport class AgreementTabComponent implements OnInit {\n\n agreementForm: FormGroup;\n constructor(\n private formBuilder: RxFormBuilder,\n private settingService: SettingService\n ) {\n this.agreementForm = this.formBuilder.formGroup(AgreementOnboardingForm, new AgreementOnboardingForm());\n this.settingService.getSettingByKeyAndGroupAllow('TERMS_ONBOARDING', 'FRONT_FACING').subscribe(resp => {\n if (resp.result) {\n this.termForm = resp.result.value.split('/&nbs/');\n }\n });\n }\n\n termForm: string[] = [];\n\n ngOnInit(): void { }\n comfirmAgreementClicked(event) {\n this.agreementForm.controls.Term.setValue(event.target.value);\n }\n getAgreementOnboardingForm(): AgreementOnboardingForm {\n return this.agreementForm.value;\n }\n}\n","
\n
\n

{{titleForm}}

\n
\n \n = 0\">\n \n \n
\n \n
\n
\n\n = 1\">\n \n \n
\n \n \n
\n
\n\n = 2\">\n \n \n
\n \n \n
\n
\n\n = 3\">\n \n
\n \n \n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n\n
\n
\n \n
\n
","import { StepperSelectionEvent } from '@angular/cdk/stepper';\nimport { Component, HostListener, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatStepper } from '@angular/material/stepper';\nimport { RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { shareReplay, switchMap } from 'rxjs/operators';\nimport { ProfileService } from 'src/app/modules/admin/profile-management/profile.service';\nimport { ActDetailsTabComponent } from './act-details-tab/act-details-tab.component';\nimport { TaskBoardService } from 'src/app/modules/admin/task-management/task-board/task-board.service';\nimport { SettingService } from '../../services/setting.service';\nimport { AgreementTabComponent } from './agreement-tab/agreement-tab.component';\nimport { ArtistDetailsTabComponent } from './artist-details-tab/artist-details-tab.component';\nimport { ContactDetailsTabComponent } from './contact-details-tab/contact-details-tab.component';\nimport { ActionOnboardingFormEnums, ArtistDetails, ContactOnBoardViewModel, EntityTypeOnboardingFormEnums, ObjectChangedModel, OnBoardingFormViewModel } from './onboarding-form-profile.model';\nimport { Helper } from '../../utility/Helper';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ConfirmModalComponent } from '../confirm-modal/confirm-modal.component';\nimport { Title } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-onboarding-form',\n templateUrl: './onboarding-form.component.html',\n styleUrls: ['./onboarding-form.component.scss'],\n})\nexport class OnboardingFormComponent implements OnInit {\n @ViewChild('appArtistDetails', { static: true }) appArtistDetails: ArtistDetailsTabComponent;\n @ViewChild('contactDetails', { static: true }) contactDetails: ContactDetailsTabComponent\n @ViewChild('appArgreement', { static: true }) appAgreement: AgreementTabComponent;\n @ViewChild('actDetails', { static: true }) actDetails: ActDetailsTabComponent;\n @ViewChild('stepperForm', { static: false }) stepperForm: MatStepper;\n\n @Input() frontFacingUrl: string;\n @Input() titleForm = 'Artist information';\n @Input() pid: string;\n @Input() createNew: boolean = false;\n constructor(\n private dialog: MatDialog,\n private profileService: ProfileService,\n private formBuilder: RxFormBuilder,\n private taskService: TaskBoardService,\n private titleService: Title,\n private settingService: SettingService\n ) {\n }\n selectedFrom: number = 0;\n onboardingData: OnBoardingFormViewModel = new OnBoardingFormViewModel();\n onboardingDataForm: FormGroup;\n isLoading: boolean = false;\n // 2022-06-06 tienlm add start\n onboardingDataBackup: OnBoardingFormViewModel = new OnBoardingFormViewModel();\n changesList: ObjectChangedModel[] = [];\n isNext: boolean = false;\n cacheDataDialog;\n lockSubmit: boolean = false;\n taskType;\n taskStatus;\n contactID: number | null;\n originalTitle: string;\n // 2022-06-06 tienlm add end\n ngOnInit(): void {\n this.originalTitle = this.titleService.getTitle();\n this.titleService.setTitle('Altus - Artist Sign-up');\n if (this.pid) {\n this.isLoading = true;\n this.profileService.getProfileToken(this.pid).subscribe(res => {\n if (res) {\n this.onboardingData = res;\n // check cookie here:\n let cookieData = this.getLocalOnboardingData('onboardingdata');\n let parsedData: OnBoardingFormViewModel = cookieData ? JSON.parse(cookieData) : null;\n if (parsedData && this.pid === parsedData?.ArtistDetails?.PID) {\n // have data:\n this.cacheDataDialog = this.dialog.open(ConfirmModalComponent, {\n data: {\n message: 'Do you wish to continue entering artist data?'\n }\n }).afterClosed().subscribe(resp => {\n if (resp) {\n let cookieData = this.getLocalOnboardingData('onboardingdata');\n let parsedData: OnBoardingFormViewModel = JSON.parse(cookieData);\n this.onboardingData = parsedData;\n this.contactID = this.onboardingData.Contacts && this.onboardingData.Contacts.length > 0 ? this.onboardingData.Contacts[0]?.ContactID : null;\n this.onboardingDataBackup = JSON.parse(JSON.stringify(parsedData)) as OnBoardingFormViewModel;\n } else {\n this.contactID = this.onboardingData.Contacts && this.onboardingData.Contacts.length > 0 ? this.onboardingData.Contacts[0]?.ContactID : null;\n this.onboardingDataBackup = JSON.parse(JSON.stringify(res)) as OnBoardingFormViewModel;\n }\n this.deleteLocalStorage('onboardingdata');\n });\n } else {\n this.contactID = this.onboardingData.Contacts && this.onboardingData.Contacts.length > 0 ? this.onboardingData.Contacts[0]?.ContactID : null;\n this.onboardingDataBackup = JSON.parse(JSON.stringify(res)) as OnBoardingFormViewModel;\n console.log(this.onboardingDataBackup);\n }\n } else {\n // window.location.href = !this.frontFacingUrl?.endsWith('/') ? (this.frontFacingUrl + '/expired') : (this.frontFacingUrl + 'expired');\n this.redirectToFrontFacingUrl('expired');\n }\n this.isLoading = false;\n });\n\n } else {\n this.onboardingData = new OnBoardingFormViewModel();\n }\n }\n\n selectionChangeTab(event: StepperSelectionEvent) {\n if (event) {\n this.selectedFrom = event.selectedIndex;\n setTimeout(() => {\n if (!this.checkSubmitForm())\n return;\n }, 10);\n }\n }\n\n validateForm(stepIndex: number) {\n if (stepIndex === 0) {\n // artist details validate\n if (this.appArtistDetails.artistDetailsForm.valid) {\n return false;\n } else {\n return true;\n }\n } else if (stepIndex === 1) {\n // contact detail validate:\n return this.validateContactDetails();\n } else if (stepIndex === 2) {\n return this.validateActDetails();\n } else if (stepIndex === 3) {\n // agreement validate\n if (this.appAgreement.agreementForm.controls.Term.value === true && this.appAgreement.agreementForm.valid) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n }\n // function to validate contact list details\n validateContactDetails() {\n let validate = false;\n let contactForm = this.contactDetails.contactOnBoardingViewModelForms;\n if (contactForm.length > 0) {\n contactForm.forEach(element => {\n if (!element.valid) {\n validate = true;\n }\n });\n return validate;\n } else {\n return false;\n }\n }\n\n validateActDetails() {\n let validate = false;\n let actForms = this.actDetails.actDetailsForm;\n if (actForms && actForms.length > 0) {\n actForms.forEach(element => {\n if (!element.valid) {\n validate = true;\n }\n });\n return validate;\n } else {\n return false;\n }\n }\n\n checkSubmitForm() {\n for (let index = 0; index <= this.selectedFrom; index++) {\n if (this.validateForm(index)) {\n this.selectedFrom = index;\n return false;\n }\n }\n\n return true;\n }\n\n // function to combine all parts of regist form\n SubmitForm() {\n if (!this.checkSubmitForm())\n return;\n this.changesList = [];\n this.lockSubmit = true;\n // data from artist details\n let artistDetails: ArtistDetails;\n // changes from artist details\n let artistDetailsChanges: ObjectChangedModel[] = [];\n // get agreement details:\n let agreementFormData = this.appAgreement.getAgreementOnboardingForm();\n if (this.createNew) {\n // signup form contact data:\n artistDetails = this.appArtistDetails.getArtistDetails();\n // add profile note:\n artistDetails.Notes = agreementFormData.Note;\n artistDetails.Signature = agreementFormData.Signatures;\n artistDetails.Tags = 'newsignup';\n } else {\n // update if pid has data:\n // get all changes from artist details details\n artistDetailsChanges = this.appArtistDetails.getChangesArtistDetails();\n }\n\n // handle changes:\n let contactDetailsPart = this.contactDetails.getContactDetails();\n let actDetailsPart = this.actDetails.getActDetails();\n this.getActDetailChanges(actDetailsPart);\n // attaching location artist:\n if (contactDetailsPart && contactDetailsPart.length > 0) {\n // reuse artistDetails var base on createNew\n let artistData = !this.createNew ? this.appArtistDetails.getArtistDetails() : artistDetails;\n contactDetailsPart.forEach(cont => {\n if (cont.isSameAsArtist) {\n cont.Country = artistData.Country;\n cont.Address = artistData.Address;\n cont.Address2 = artistData.Address2;\n cont.City = artistData.City;\n cont.State = artistData.State;\n cont.Zipcode = artistData.Zipcode;\n }\n });\n }\n // get all changes from contact details\n this.getContactDetailChanges(contactDetailsPart);\n // handle submit update or signup:\n if (this.createNew) {\n // signup:\n let onboardingFormSubmit = new OnBoardingFormViewModel();\n onboardingFormSubmit.ArtistDetails = artistDetails;\n onboardingFormSubmit.ArtistDetails.RealName = onboardingFormSubmit.ArtistDetails.Scarlettname;\n onboardingFormSubmit.Contacts = contactDetailsPart;\n // actDetailsPart?.forEach(act => {\n // // convert test as tring to array\n // if (act.Testimonials && typeof act.Testimonials == 'string')\n // act.Testimonials = JSON.parse(act.Testimonials);\n // });\n // standartlize Output\n actDetailsPart.forEach((element, index) => {\n if (index == 0) {\n element.Notes = agreementFormData?.Note ?? null;\n }\n ArtistDetails.standartlizeOutput(element);\n });\n onboardingFormSubmit.ActDetails = actDetailsPart;\n // CALL API SIGNUP HERE\n this.profileService.signupArtists(onboardingFormSubmit).subscribe(res => {\n if (res.result) {\n this.redirectToFrontFacingUrl('thank-you');\n // window.location.href = !this.frontFacingUrl?.endsWith('/') ? (this.frontFacingUrl + '/thank-you/') : (this.frontFacingUrl + 'thank-you/');\n }\n this.lockSubmit = false;\n });\n } else {\n // attach signature:\n this.changesList = this.changesList.concat(artistDetailsChanges);\n //Add consent Artist details.\n let newChanges = new ObjectChangedModel(this.onboardingDataBackup.ArtistDetails.PID, EntityTypeOnboardingFormEnums.ARTIST_DETAILS, ActionOnboardingFormEnums.MODIFIED, 'Consent', this.onboardingDataBackup.ArtistDetails.PID, true, null, + new Date());\n this.changesList.push(newChanges);\n // attach note:\n this.attachNoteForChanges();\n this.attachSignatureForChanges(agreementFormData.Signatures);\n // CALL API SUBMIT ONBOARDING HERE:\n this.profileService.artistUpdate(this.changesList).pipe(\n switchMap(res => {\n if (res.result) {\n // create task:\n let artistData = this.appArtistDetails.getArtistDetails();\n this.taskService.saveSubmitOnBoardingForm(artistData?.PID).subscribe();\n return this.taskService.autoCreateTaskOnBoardingData(artistData?.PID);\n }\n })\n ).subscribe(rs => {\n if (rs.result) {\n this.redirectToFrontFacingUrl('thank-you');\n // window.location.href = !this.frontFacingUrl?.endsWith('/') ? (this.frontFacingUrl + '/thank-you/') : (this.frontFacingUrl + 'thank-you/');\n }\n })\n }\n }\n ngOnDestroy(): void {\n this.titleService.setTitle(this.originalTitle);\n }\n getContactDetailChanges(contacts: ContactOnBoardViewModel[]) {\n if (contacts.length > 0) {\n // contact pasted from data\n contacts.forEach(cont => {\n if (cont.ContactID > 0) {\n // already has:\n let oldContactIndex = this.onboardingDataBackup.Contacts.findIndex(oldCont => oldCont.ContactID == cont.ContactID);\n // if found it in backup\n if (oldContactIndex != -1) {\n // has in old contact block:\n for (var prop in cont) {\n // exception case\n if (prop.toLowerCase() == 'isSameAsArtist'.toLowerCase()) {\n continue;\n }\n // compare property:\n if (JSON.stringify(cont[prop]).trim() !== JSON.stringify(this.onboardingDataBackup.Contacts[oldContactIndex][prop]).trim()) {\n // check if it has already been added to change list:\n let isAlreadyAdded = this.changesList.findIndex(x => x.PID == cont.PID && (x.PropertyName && x.PropertyName.toLowerCase() == prop.toLowerCase()) && x.EntityID == cont.ContactID && x.ActionID == ActionOnboardingFormEnums.MODIFIED);\n if (isAlreadyAdded != -1) {\n // if not already added\n this.changesList[isAlreadyAdded].PropertyValue = cont[prop];\n this.changesList[isAlreadyAdded].DateModified = + new Date();\n } else {\n let newChanges = new ObjectChangedModel(cont.PID, EntityTypeOnboardingFormEnums.CONTACT, ActionOnboardingFormEnums.MODIFIED, prop, cont.ContactID, cont[prop], null, + new Date());\n this.changesList.push(newChanges);\n }\n }\n }\n }\n }\n // new contact:\n else {\n let artistDetails = this.appArtistDetails.getArtistDetails();\n // add pid if available\n cont.PID = artistDetails?.PID;\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.CONTACTBLOCK, ActionOnboardingFormEnums.ADDED, '', null, JSON.stringify(cont), null, + new Date())\n this.changesList.push(newChanges);\n }\n });\n // get removed contact:\n let oldContactIds = this.onboardingDataBackup.Contacts.map(x => x.ContactID);\n let newContacIds = contacts.map(x => x.ContactID).filter(y => y != 0);\n let removedContactIds = oldContactIds.filter(x => !newContacIds.includes(x));\n if (removedContactIds.length > 0) {\n for (let index = 0; index < removedContactIds.length; index++) {\n const removeContactInfo = this.onboardingDataBackup.Contacts.find(x => x.ContactID === removedContactIds[index]);\n // check if property has been added:\n let isChangesRemoved = this.changesList.findIndex(x => x.EntityID == removeContactInfo.ContactID && x.ActionID == ActionOnboardingFormEnums.DELETED && x.EntityTypeID == EntityTypeOnboardingFormEnums.CONTACTBLOCK)\n if (isChangesRemoved != -1) {\n continue;\n }\n let newChanges = new ObjectChangedModel(removeContactInfo.PID, EntityTypeOnboardingFormEnums.CONTACTBLOCK, ActionOnboardingFormEnums.DELETED, null, removeContactInfo.ContactID, null, null, + new Date());\n this.changesList.push(newChanges);\n }\n }\n }\n }\n attachSignatureForChanges(signature: string) {\n if (this.changesList.length > 0) {\n this.changesList.forEach(item => {\n item.Signature = signature;\n });\n }\n }\n\n getActDetailChanges(acts: ArtistDetails[]) {\n if (acts && acts.length > 0) {\n let artistDetails = this.appArtistDetails.getArtistDetails();\n acts.forEach(act => {\n if (!Helper.isNullOrEmpty(act.PID) && !Helper.isEmptyOrSpaces(act.PID)) { //modify\n let oldActIndex = this.onboardingDataBackup.ActDetails.findIndex(oldAct => oldAct.PID == act.PID);\n if (oldActIndex != -1) {\n //Add for each properties act.\n for (var prop in act) {\n if (JSON.stringify(act[prop]) !== JSON.stringify(this.onboardingDataBackup.ActDetails[oldActIndex][prop])) {\n switch (prop) {\n case 'RealName': case 'Rider': case 'SetList': case 'PreviousClients': case 'Testimonials': {\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.ACT, ActionOnboardingFormEnums.MODIFIED, prop, act.PID, act[prop], null, + new Date());\n this.changesList.push(newChanges);\n }\n break;\n case 'VideoLinks': case 'PhotoLinks': {\n var medias = act[prop].filter(x => !this.onboardingDataBackup.ActDetails[oldActIndex][prop].map(x => x.MediaID).includes(x.MediaID) && x.Media !== 'assets/images/error-photo.jpg');\n if (medias && medias.length > 0) {\n medias.forEach(media => {\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.ACT, ActionOnboardingFormEnums.ADDED, prop, act.PID, media.Media, null, + new Date());\n this.changesList.push(newChanges);\n });\n }\n }\n break;\n case 'Bio': case 'Reason': case 'RiderAttachment': {\n if (!Helper.isEmptyOrSpaces(act[prop]) && !Helper.isNullOrEmpty(act[prop])) {\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.ACT, ActionOnboardingFormEnums.ADDED, prop, act.PID, act[prop], null, + new Date());\n this.changesList.push(newChanges);\n }\n }\n break;\n }\n }\n }\n }\n } else { // new\n act.Consent = true;\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.ACTBLOCK, ActionOnboardingFormEnums.ADDED, '', null, JSON.stringify(act), null, + new Date())\n this.changesList.push(newChanges);\n }\n })\n\n let oldActIds = this.onboardingDataBackup.ActDetails.map(x => x.PID);\n let newActIds = acts.map(x => x.PID).filter(y => !Helper.isNullOrEmpty(y) && !Helper.isEmptyOrSpaces(y));\n let removedActIds = oldActIds.filter(x => !newActIds.includes(x));\n if (removedActIds.length > 0) {\n for (let index = 0; index < removedActIds.length; index++) {\n const removeActInfo = this.onboardingDataBackup.ActDetails.find(x => x.PID === removedActIds[index]);\n // check if property has been added:\n let isChangesRemoved = this.changesList.findIndex(x => x.EntityID == removeActInfo.PID && x.ActionID == ActionOnboardingFormEnums.DELETED && x.EntityTypeID == EntityTypeOnboardingFormEnums.ACTBLOCK)\n if (isChangesRemoved != -1) {\n continue;\n }\n let newChanges = new ObjectChangedModel(artistDetails.PID, EntityTypeOnboardingFormEnums.ACTBLOCK, ActionOnboardingFormEnums.DELETED, null, removeActInfo.PID, null, null, + new Date());\n this.changesList.push(newChanges);\n }\n }\n }\n }\n saveDataToLocal() {\n let savedData = new OnBoardingFormViewModel();\n savedData.ArtistDetails = this.appArtistDetails.getArtistDetails();\n savedData.Contacts = this.contactDetails.getContactDetails();\n savedData.ActDetails = this.actDetails.getActDetails();\n let approveSaveCookie = true;\n\n let data = JSON.stringify(savedData);\n window.localStorage.setItem('onboardingdata', data);\n }\n private getLocalOnboardingData(name: string) {\n return window.localStorage.getItem('onboardingdata') ?? ''\n }\n // listen\n @HostListener('window:beforeunload')\n saveData() {\n this.saveDataToLocal();\n }\n deleteLocalStorage(name) {\n window.localStorage.removeItem(name);\n }\n attachNoteForChanges() {\n if (!this.createNew) {\n let agreementData = this.appAgreement.getAgreementOnboardingForm();\n if (agreementData?.Note && agreementData?.Note.trim() !== '' && agreementData.Note !== this.onboardingDataBackup?.ArtistDetails?.Notes) {\n this.changesList.push(new ObjectChangedModel(this.pid, EntityTypeOnboardingFormEnums.ACT, ActionOnboardingFormEnums.MODIFIED, 'Notes', null, agreementData?.Note, agreementData?.Signatures, + new Date()))\n }\n }\n }\n redirectToFrontFacingUrl(type: string) {\n if (!this.frontFacingUrl) {\n this.settingService.getSettingByKeyAndGroupAllow('FONT-FACING', 'DOMAIN').subscribe({\n next: (res) => {\n if (res && res.result) {\n this.frontFacingUrl = res.result.value;\n }\n this.performRedirection(type);\n },\n error: (err) => {\n console.error(err);\n this.performRedirection(type);\n }\n });\n } else {\n this.performRedirection(type);\n }\n }\n \n private performRedirection(type: string) {\n if (!this.frontFacingUrl) {\n this.frontFacingUrl = 'https://altusentertainment.com/';\n }\n \n switch (type) {\n case 'thank-you':\n window.location.href = this.frontFacingUrl.endsWith('/')\n ? `${this.frontFacingUrl}thank-you/`\n : `${this.frontFacingUrl}/thank-you/`;\n break;\n case 'expired':\n window.location.href = this.frontFacingUrl.endsWith('/')\n ? `${this.frontFacingUrl}expired`\n : `${this.frontFacingUrl}/expired`;\n break;\n default:\n break;\n }\n }\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { of } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { ReturnResult } from 'src/app/shared/models/return-result';\nimport { Setting } from 'src/app/shared/models/setting.model';\nimport { SettingService } from 'src/app/shared/services/setting.service';\nimport { SettingCompanyViewModel } from '../../admin/setting-management/setting-company/setting-company';\n\n@Component({\n selector: 'app-page-onboarding-form',\n templateUrl: './page-onboarding-form.component.html',\n styleUrls: ['./page-onboarding-form.component.scss']\n})\nexport class PageOnboardingFormComponent implements OnInit {\n\n constructor(\n private settingService: SettingService,\n private route: ActivatedRoute,\n\n ) {\n this.settingService.getConfigCompany().subscribe(res => {\n if (res) this.configCompany = res;\n });\n\n this.route.queryParams.pipe(\n switchMap(x => {\n if ((x?.pid && x?.pid != \"NEW\") || (x?.id && x?.id != \"NEW\")) {\n this.pid = x?.pid || x?.id;\n this.createNew = false;\n }\n\n return this.settingService.getSettingByKeyAndGroupAllow('FONT-FACING', 'DOMAIN');\n })\n ).subscribe((res: ReturnResult) => {\n if (res && res.result) {\n this.frontFacingUrl = res.result.value;\n if (this.isNotfound) {\n window.location.href = !this.frontFacingUrl?.endsWith('/') ? (this.frontFacingUrl + '/expired') : (this.frontFacingUrl + 'expired');\n }\n }\n\n })\n }\n pid: string;\n configCompany: SettingCompanyViewModel = new SettingCompanyViewModel();\n createNew = true;\n frontFacingUrl: string;\n isNotfound = false;\n ngOnInit(): void {\n\n }\n}\n","\n \n
\n
\n
\n \"Company\n \n \n \n \n \n
\n
\n
\n
\n
","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { ReturnResult } from '../models/return-result';\nimport { TrackingRedirectModel } from '../models/tracking-redirect.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AccessLogService {\n baseUrl = environment.apiTracking;\nconstructor(private http: HttpClient) { }\n verifyTrackingRedirect(trackingId: string): Observable> {\n return this.http.get>(`${this.baseUrl}/${trackingId}`);\n }\n}\n","\n \n \n \n
\n

\n Please wait, {{checkingMessage}}.\n

\n
\n \n
\n
\n Click here \n if auto redirect is too long or not work.\n
\n
\n
\n
\n
\n
\n\n\n
\n

\n {{message}}\n

\n
\n \"\"\n
\n
\n
\n\n\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Setting } from 'src/app/shared/models/setting.model';\nimport { AccessLogService } from 'src/app/shared/services/access-log.service';\nimport { SettingService } from 'src/app/shared/services/setting.service';\n\n@Component({\n selector: 'app-tracking-layout',\n templateUrl: './tracking-layout.component.html',\n styleUrls: ['./tracking-layout.component.scss']\n})\nexport class TrackingLayoutComponent implements OnInit {\n\n constructor(\n private accessLogService: AccessLogService,\n private route: ActivatedRoute,\n private settingService: SettingService\n ) { }\n checkingMessage = \"We're checking some configuration. This will take a second..\";\n trackingId: string;\n message = \"SORRY, YOUR URL HAS EXPIRED\";\n permittedAccess = false;\n loading = false;\n trackingScript: Setting;\n backupRedirect = false;\n redirectUrl: string;\n ngOnInit() {\n this.loading = true;\n this.route.params.subscribe(params => {\n // debugger;\n if (params.id !== undefined) {\n this.trackingId = params.id;\n }\n });\n this.settingService.getSettingByName(\"IP_TRACKING_SCRIPT\", \"DOMAIN\").subscribe(res => {\n if (res.result) {\n this.trackingScript = res.result;\n // console.log(this.trackingScript.value);\n this.loadScript();\n }\n });\n if (this.trackingId) {\n this.accessLogService.verifyTrackingRedirect(this.trackingId).subscribe(res => {\n if (res.result) {\n // debugger;\n if (res.result.isAllowed) {\n this.permittedAccess = false;\n this.checkingMessage = \"you are about to be redirected to the link\";\n this.redirectUrl = res.result.orgUrl;\n this.openUrl(res.result.orgUrl);\n setTimeout(() => {\n this.backupRedirect = true;\n }, 3000);\n } else {\n // block user\n this.permittedAccess = true;\n }\n this.loading = false;\n }\n })\n }\n }\n loadScript() {\n try {\n let chatScript = document.createElement(\"script\");\n chatScript.type = \"text/javascript\";\n chatScript.async = true;\n chatScript.src = this.trackingScript.value;\n document.body.appendChild(chatScript);\n } catch (error) {\n\n }\n }\n\n openUrl(url: string) {\n window.location.href = url;\n }\n\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs\";\nimport { ReturnResult } from \"src/app/shared/models/return-result\";\nimport { environment } from \"src/environments/environment\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ExternalActionService {\n tokenUrl = environment.userApiToken;\n authURL = environment.apiAuth;\n\n constructor (private http: HttpClient) {}\n\n checkAPITokenValid(token: string): Observable {\n return this.http.post(`${this.tokenUrl}/ValidateToken?token=${token}`,null)\n }\n\n getDataLogin(token: string): Observable {\n return this.http.post(`${this.authURL}/GetMoreToken?token=${token}`,null)\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ExternalActionService } from './external-action.service';\nimport { Helper } from 'src/app/shared/utility/Helper';\n\n@Component({\n selector: 'app-external-action',\n templateUrl: './external-action.component.html',\n styleUrls: ['./external-action.component.scss']\n})\nexport class ExternalActionComponent implements OnInit {\n\n constructor(\n private router: Router,\n private service: ExternalActionService\n ) { }\n\n ngOnInit(): void {\n this.checkQueryParam();\n }\n\n async checkQueryParam() {\n let query = window.location.search;\n let callUrl = null;\n let tokenId = null;\n let dataLogin = null;\n let redirectUrl = null;\n let phoneNumber = null;\n let addinImageUrl = null;\n\n // Seperate Query URL\n if (query.startsWith('?')) query = query.substring(1);\n let listQuery = query.split('&') || [];\n var tokenQuery = listQuery.filter(x => x.includes('token='))?.shift();\n var tokenIdQuery = listQuery.filter(x => x.includes('tokenId='))?.shift();\n var returnURLQuery = listQuery.filter(x => x.includes('returnUrl='))?.shift();\n var phoneNumberQuery = listQuery.filter(x => x.includes('phoneNumber='))?.shift();\n var callUrlQuery = listQuery.filter(x => x.includes('callUrl='))?.shift();\n var addinImageUrlQuery = listQuery.filter(x => x.includes('addinImageUrl='))?.shift();\n\n // Check the Token\n if (tokenQuery) {\n // Get the token\n let tokenEncode = tokenQuery.split(\"token=\")[1];\n let token = atob(tokenEncode).toString();\n\n // Check the token\n var isTokenValid = await this.checkAPITokenValid(token);\n if (isTokenValid) {\n dataLogin = await this.getDataLogin(token);\n }\n else {\n this.router.navigate([`/auth?${returnURLQuery}`]);\n this.router.navigateByUrl(`/auth?${returnURLQuery}`);\n }\n }\n else {\n // this.router.navigate([`/auth?${returnURLQuery}`]);\n this.router.navigateByUrl(`/auth?${returnURLQuery}`);\n }\n\n // Check format returnUrl\n if (returnURLQuery) {\n // Get the returnURl from the query\n let returnUrl = returnURLQuery.split(\"returnUrl=\")[1];\n\n // Change %2F to /\n if (returnUrl.includes(\"%2F\")) {\n redirectUrl = returnUrl.split(\"%2F\").join(\"/\");\n }\n } else {\n this.router.navigate([`/auth`]);\n }\n\n // Check format activityLogId\n if (callUrlQuery) {\n // Get the activityLogId from the query\n callUrl = callUrlQuery.split(\"callUrl=\")[1];\n }\n\n // Check format tokenId\n if (tokenIdQuery) {\n // Get the tokenId from the query\n tokenId = tokenIdQuery.split(\"tokenId=\")[1];\n }\n\n // Check format phoneNumber\n if (phoneNumberQuery) {\n // Get the phoneNumber from the query\n phoneNumber = phoneNumberQuery.split(\"phoneNumber=\")[1];\n }\n\n // Check format addInImageUrl\n if (addinImageUrlQuery) {\n addinImageUrl = addinImageUrlQuery.split(\"addinImageUrl=\")[1];\n addinImageUrl = decodeURIComponent(window.atob(decodeURIComponent(addinImageUrl)));\n }\n\n //handle redirect\n if (redirectUrl && dataLogin) {\n // Setup the data\n let nebularToken = {\n createdAt: Date.now(),\n name: \"nb:auth:jwt:token\",\n ownerStrategyName: \"email\",\n value: dataLogin.token\n }\n\n if (nebularToken) localStorage.setItem(\"auth_app_token\", JSON.stringify(nebularToken));\n if (dataLogin?.accessToken) localStorage.setItem(\"accessToken\", dataLogin.accessToken);\n if (!Helper.isNullOrEmpty(callUrl)) localStorage.setItem(\"callUrl\", callUrl);\n localStorage.setItem(\"tokenid\", tokenId || \"0\");\n localStorage.setItem(\"phonenumber\", phoneNumber || \"\");\n localStorage.setItem(\"addinImageUrl\", addinImageUrl || \"\");\n\n this.router.navigate([`${redirectUrl}`]);\n }\n else {\n this.router.navigate([`/auth`]);\n }\n }\n\n async checkAPITokenValid(token: string) {\n try {\n let result = await this.service.checkAPITokenValid(token).toPromise();\n console.log(result);\n return result['valid'];\n }\n catch (err) {\n console.error(err);\n }\n }\n\n async getDataLogin(token: string) {\n try {\n let result = await this.service.getDataLogin(token).toPromise();\n return result;\n }\n catch (err) {\n console.error(err)\n }\n }\n}\n","\nimport { required, email } from '@rxweb/reactive-form-validators';\n\nexport class ForgotPassword {\n @required()\n @email()\n email: string;\n}\n","\n \n \n \n

Forgot password

\n
\n \n
\n \n Please enter your email to reset password\n \n
\n \n Email:\n \n \n {{frmForgotPwd.controls.email['errorMessage']}}\n \n \n
\n \n
\n
\n
\n
\n","import { ResetPassword } from './../reset-password/reset-password.model';\nimport { Component, OnInit } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { RxFormBuilder } from '@rxweb/reactive-form-validators';\nimport { ForgotPassword } from './forgot-password.model';\nimport { UserService } from 'src/app/modules/admin/user-management/user.service';\nimport { NbToastrService } from '@nebular/theme';\n\n@Component({\n selector: 'app-forgot-password',\n templateUrl: './forgot-password.component.html',\n styleUrls: ['./forgot-password.component.scss']\n})\nexport class ForgotPasswordComponent implements OnInit {\n\n frmForgotPwd: FormGroup;\n hideNewPwd: boolean = true;\n hideConfirmNewPwd: boolean = true;\n isLoading: boolean = false;\n\n constructor(\n private frmBuilder: RxFormBuilder,\n private service: UserService,\n private router: Router,\n ) { }\n\n ngOnInit(): void {\n this.frmForgotPwd = this.frmBuilder.formGroup(ForgotPassword);\n }\n\n resetPwd() {\n if (this.frmForgotPwd.valid) {\n this.isLoading = !this.isLoading; //loading state\n\n this.service.forgotPassword(this.frmForgotPwd.value).subscribe(resp => {\n this.router.navigate(['forgot-password-success']);\n }).add(() => {\n this.isLoading = !this.isLoading;\n });\n }\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'app-fotgot-password-success',\n templateUrl: './fotgot-password-success.component.html',\n styleUrls: ['./fotgot-password-success.component.scss']\n})\nexport class FotgotPasswordSuccessComponent implements OnInit {\n\n constructor(private router: Router) { }\n\n ngOnInit(): void {\n }\n\n redirectToLogin() {\n this.router.navigate([`/auth`]);\n }\n}\n","\n \n \n \n
\n \n
\n \n If the email address you provided is associated with an account in our system, we will send a password reset link to that email address.\n \n \n
\n
\n
\n
\n","\n \n\n
\n \n
\n \n Subject\n \n \n {{frmTitle.controls.title['errorMessage']}}\n \n
\n \n\n \n\n
\n \n
\n
\n
\n\n
\n
\n\n\n\n
Send support email successfully, please close the popup\n
\n
","import { NgModule } from \"@angular/core\";\nimport { Routes, RouterModule } from \"@angular/router\";\nimport { AuthGuardService } from \"../auth-guard.service\";\nimport { ChatBoxUiComponent } from \"./chat-box-ui/chat-box-ui.component\";\nimport { EmptyLayoutComponent } from \"./empty-layout/empty-layout.component\";\nimport { ExpiredComponent } from \"./master-layout/expired/expired.component\";\nimport { ResetPasswordFailComponent } from \"./master-layout/reset-password/reset-password-fail/reset-password-fail.component\";\nimport { ResetPasswordSuccessComponent } from \"./master-layout/reset-password/reset-password-success/reset-password-success.component\";\nimport { ResetPasswordComponent } from \"./master-layout/reset-password/reset-password.component\";\nimport { PageOnboardingFormComponent } from \"./page-onboarding-form/page-onboarding-form.component\";\nimport { TrackingLayoutComponent } from './tracking-layout/tracking-layout.component';\nimport { ExternalActionComponent } from \"./external-action/external-action.component\";\nimport { ForgotPasswordComponent } from \"./master-layout/forgot-password/forgot-password.component\";\nimport { FotgotPasswordSuccessComponent } from \"./master-layout/forgot-password/fotgot-password-success/fotgot-password-success.component\";\nimport { SendSupportTicketComponent } from \"./send-support-ticket/send-support-ticket.component\";\n\nconst routes: Routes = [\n {\n path: 'empty',\n component: EmptyLayoutComponent,\n\n },\n {\n path: 'tracking/:id',\n component: TrackingLayoutComponent,\n },\n {\n path: 'on-boarding-form',\n children: [\n {\n path: '**',\n component: PageOnboardingFormComponent,\n }\n ]\n },\n {\n path: 'auth',\n loadChildren: () => import('./master-layout/master-layout.module')\n .then(m => m.MasterLayoutModule),\n },\n {\n path: 'expired',\n component: ExpiredComponent\n },\n {\n path: 'reset-password',\n component: ResetPasswordComponent\n },\n {\n path: 'reset-password-success',\n component: ResetPasswordSuccessComponent\n },\n {\n path: 'forgot-password',\n component: ForgotPasswordComponent\n },\n {\n path: 'forgot-password-success',\n component: FotgotPasswordSuccessComponent\n },\n {\n path: 'reset-password-fail',\n component: ResetPasswordFailComponent\n },\n {\n path: 'message/:userId_:receiverId_:receiverType',\n canActivate: [AuthGuardService],\n component: ChatBoxUiComponent,\n },\n {\n path: 'external-action',\n component: ExternalActionComponent\n },\n {\n path: 'send-support-ticket',\n component: SendSupportTicketComponent\n },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class HomeRoutingModule {\n}\n","import { AfterViewInit, Component, OnInit, ViewChild } from '@angular/core';\nimport { RxFormBuilder, RxwebValidators } from '@rxweb/reactive-form-validators';\nimport { CampaignLinkscopeService } from '../../admin/profile-management/profile-detail/action-block/campaign-linkscope.service';\nimport { NbToastrService } from '@nebular/theme';\nimport { SettingService } from 'src/app/shared/services/setting.service';\nimport { FormGroup } from '@angular/forms';\nimport { BodyEmbedded } from 'src/app/shared/models/body-embedded.model';\nimport { Observable } from 'rxjs';\nimport { ReturnResult } from 'src/app/shared/models/return-result';\nimport { EmailTemplate } from '../../admin/setting-management/setting-campaign/email-template';\nimport { Helper } from 'src/app/shared/utility/Helper';\nimport { ActivatedRoute } from '@angular/router';\nimport { EditorEmailComponent } from 'src/app/shared/components/stand-alone-component/editor-email/editor-email.component';\nimport { shareReplay } from 'rxjs/operators';\nimport { NbAuthJWTToken, NbAuthService } from '@nebular/auth';\nimport { UserModel } from '../../admin/user-management/user-model';\nimport { UserService } from '../../admin/user-management/user.service';\nimport { EmailQuillEditorComponent } from 'src/app/shared/components/stand-alone-component/email-quill-editor/email-quill-editor.component';\n\n@Component({\n selector: 'app-send-support-ticket',\n templateUrl: './send-support-ticket.component.html',\n styleUrls: ['./send-support-ticket.component.scss']\n})\nexport class SendSupportTicketComponent implements OnInit, AfterViewInit {\n\n // editorEmail: EditorEmailComponent;\n // @ViewChild('editorEmail', { static: false }) set setEditorEmail(item: EditorEmailComponent) { if (item) this.editorEmail = item; };\n\n editorQuill: EmailQuillEditorComponent\n @ViewChild('quillEditor', { static: false }) set setEditorQuill(item: EmailQuillEditorComponent) { if (item) this.editorQuill = item };\n\n frmTitle: FormGroup = this.frmBuilder.group({\n title: ['', RxwebValidators.required()],\n })\n\n user: any;\n imageUrl = null;\n loadingSupportTicket: boolean = false;\n emailTemplate: EmailTemplate = new EmailTemplate();\n userModel: UserModel;\n showEditorEmail: boolean = true;\n isFromOutlookAddin: boolean = false;\n\n constructor(\n private frmBuilder: RxFormBuilder,\n private route: ActivatedRoute,\n private campaignService: CampaignLinkscopeService,\n private toast: NbToastrService,\n private settingService: SettingService,\n private authService: NbAuthService,\n private userService: UserService,\n ) {\n // this.route.queryParams.subscribe(params => {\n // this.imageUrl = params['imageUrl'];\n // });\n this.authService.onTokenChange()\n .subscribe(async (token: NbAuthJWTToken) => {\n if (token.isValid()) {\n this.user = token.getPayload();\n }\n })\n\n this.imageUrl = localStorage.getItem(\"addinImageUrl\");\n if (!Helper.isNullOrEmpty(this.imageUrl)) {\n this.isFromOutlookAddin = true;\n }\n }\n\n ngOnInit(): void {\n this.getUserInformation();\n this.configSentEmail();\n }\n\n ngAfterViewInit(): void {\n this.setupEditorStyle();\n }\n\n setupEditorStyle() {\n try {\n setTimeout(() => {\n let editorDom: any = document.getElementsByClassName(\"ql-editor\")[0];\n editorDom.style.maxHeight = \"450px\";\n }, 1000);\n }\n catch (ex) {\n console.error(ex);\n }\n }\n\n getUserInformation() {\n this.userService.getUserById(this.user?.nameid || \"\").subscribe(resp => {\n if (resp.result) {\n this.userModel = resp.result;\n }\n })\n }\n\n configSentEmail() {\n try {\n this.imageUrl = decodeURI(this.imageUrl);\n\n // config input for quill editor:\n var current = new Date();\n\n // no user found:\n this.emailTemplate.HtmlTemplate = `\n
\n
\n
\n
\n
\n \n \n \n `.trim();\n }\n catch (error) {\n console.error(error);\n }\n }\n\n async sendSupportTicketClicked() {\n try {\n if (this.frmTitle.valid) {\n var bodyEmail = (this.editorQuill.getEmailHtmlQuill())?.html;\n var titleEmail = this.frmTitle.controls['title'].value;\n\n var senderId = \"\";\n var sender = await this.settingService.getSettingByKeyAndGroup(\"DEFAULT_EMAIL\", \"CAMPAIGN\").toPromise();\n if (sender && sender.result) {\n senderId = sender.result.value;\n }\n\n if (!Helper.isNullOrEmpty(senderId)) {\n this.campaignService.sendSupportTicketEmail(null, this.userModel, titleEmail, bodyEmail, senderId).pipe(shareReplay(1)).subscribe(resp => {\n if (resp.result) {\n this.showEditorEmail = !this.showEditorEmail;\n } else {\n this.toast.danger(`Send support email fail`, 'Error');\n }\n });\n }\n else {\n this.toast.danger(`Send support email fail`, 'Error');\n }\n\n // this.editorEmail.exportHtml();\n // this.editorEmail.getEmailHtml().subscribe(async (data) => {\n // if (data) {\n // var bodyEmail = data.html;\n // var titleEmail = this.frmTitle.controls['title'].value;\n\n // // var senderId = \"\";\n // // var sender = await this.settingService.getSettingByKeyAndGroup(\"DEFAULT_EMAIL\", \"CAMPAIGN\").toPromise();\n // // if (sender && sender.result) {\n // // senderId = sender.result.value;\n // // }\n\n // // if (!Helper.isNullOrEmpty(senderId)) {\n // // this.campaignService.sendSupportTicketEmail(null, this.userModel, titleEmail, bodyEmail, senderId).pipe(shareReplay(1)).subscribe(resp => {\n // // if (resp.result) {\n // // this.showEditorEmail = !this.showEditorEmail;\n // // } else {\n // // this.toast.danger(`Send support email fail`, 'Error');\n // // }\n // // });\n // // }\n // // else {\n // // this.toast.danger(`Send support email fail`, 'Error');\n // // }\n // }\n // });\n }\n }\n catch (error) {\n console.error(error);\n }\n }\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { HomeRoutingModule } from './home-routing.module';\nimport { SharedModule } from 'src/app/shared/shared.module';\nimport { EmptyLayoutComponent } from './empty-layout/empty-layout.component';\nimport { NbMenuModule, NbThemeModule,NbSidebarModule, NbTabsetModule } from '@nebular/theme';\nimport { ThemeModule } from 'src/app/@theme/theme.module';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgxEchartsModule } from 'ngx-echarts';\nimport { NgxDropzoneModule } from 'ngx-dropzone';\nimport { NgxThumbnailVideoModule } from 'ngx-thumbnail-video';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { RxReactiveFormsModule } from '@rxweb/reactive-form-validators';\nimport { ProfileDetailComponent } from '../admin/profile-management/profile-detail/profile-detail.component';\nimport { NbSecurityModule } from '@nebular/security';\nimport { TrackingLayoutComponent } from './tracking-layout/tracking-layout.component';\nimport { PageOnboardingFormComponent } from './page-onboarding-form/page-onboarding-form.component';\nimport { ExpiredComponent } from './master-layout/expired/expired.component';\nimport { MessagesChipComponent } from './chat-box-ui/messages-chip/messages-chip.component';\nimport { ChatBoxFormInputComponent } from './chat-box-ui/chat-box-form-input/chat-box-form-input.component';\nimport { ChatBoxUiComponent } from './chat-box-ui/chat-box-ui.component';\nimport { ChatTitleComponent } from './chat-box-ui/chat-title/chat-title.component';\nimport { ConversationComponent } from './chat-box-ui/conversation/conversation.component';\nimport { ChatSidebarComponent } from './chat-box-ui/chat-sidebar/chat-sidebar.component';\nimport { ExternalActionComponent } from './external-action/external-action.component';\nimport { CustomerRegisterSuccessComponent } from './customer-layout/customer-register/customer-register-success/customer-register-success.component';\nimport { SendSupportTicketComponent } from './send-support-ticket/send-support-ticket.component';\n@NgModule({\n imports: [\n HomeRoutingModule,\n SharedModule,\n ThemeModule,\n NbMenuModule,\n ScrollingModule,\n ImageCropperModule,\n RxReactiveFormsModule,\n FormsModule,\n ReactiveFormsModule,\n NgxDropzoneModule,\n NgxEchartsModule,\n NbSecurityModule.forRoot(),\n NgxThumbnailVideoModule,\n DragDropModule,\n NbSidebarModule,\n NbTabsetModule\n\n ],\n declarations: [EmptyLayoutComponent, TrackingLayoutComponent, PageOnboardingFormComponent, ExpiredComponent, MessagesChipComponent, ChatBoxUiComponent, ChatBoxFormInputComponent, ChatTitleComponent, ConversationComponent, ChatSidebarComponent, ExternalActionComponent, CustomerRegisterSuccessComponent, SendSupportTicketComponent]\n})\nexport class HomeModule { }\n"]}