Skip to content

Commit

Permalink
Merge pull request #184 from mansurskTarento/events
Browse files Browse the repository at this point in the history
Events
  • Loading branch information
venkykandagaddala authored Feb 18, 2025
2 parents 3ab07ce + 1ba8cf5 commit 1e19931
Show file tree
Hide file tree
Showing 13 changed files with 187 additions and 130 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<ng-container *ngIf="!showPreview && currentStepperIndex === 3">
<button mat-raised-button class="flex items-center publish-btn" (click)="preview()">Preview</button>
</ng-container>
<ng-container *ngIf="this.currentStepperIndex === 3 || this.currentStepperIndex === 4">
<ng-container *ngIf="currentStepperIndex >= 3 && openMode === 'edit'">
<button mat-raised-button class="flex items-center publish-btn" (click)="publish()">Send to Publisher</button>
</ng-container>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { MatStepper } from '@angular/material/stepper'
import { MatLegacySnackBar as MatSnackBar } from '@angular/material/legacy-snack-bar'
import { HttpErrorResponse } from '@angular/common/http'
import { DatePipe } from '@angular/common'
import { LoaderService } from '../../../../../../../../../../../src/app/services/loader.service'

@Component({
selector: 'ws-app-create-event',
Expand Down Expand Up @@ -39,7 +40,8 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
private formBuilder: FormBuilder,
private router: Router,
private matSnackBar: MatSnackBar,
private datePipe: DatePipe
private datePipe: DatePipe,
private loaderService: LoaderService,
) { }

//#region (onInit)
Expand All @@ -57,9 +59,8 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
startDate: new FormControl('', [Validators.required]),
startTime: new FormControl('', [Validators.required]),
endTime: new FormControl('', [Validators.required]),
resourceUrl: new FormControl('', [Validators.required]),
uploadUrl: new FormControl(''),
resourceUploadType: new FormControl('url'),
registrationLink: new FormControl('', [Validators.required]),
recordedLinks: new FormControl(''),
appIcon: new FormControl('', [Validators.required]),
})
}
Expand All @@ -82,12 +83,12 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
patchEventDetails() {
this.eventId = _.get(this.eventDetails, 'identifier')
const startDate = _.get(this.eventDetails, 'startDate', '')
const resourceUploadType = _.get(this.eventDetails, 'resourceUploadType', '')
if (resourceUploadType === 'upload') {
this.eventDetailsForm.controls.resourceUrl.clearAsyncValidators()
this.eventDetailsForm.controls.uploadUrl.setValidators([Validators.required])
this.eventDetailsForm.controls.uploadUrl.updateValueAndValidity()
this.eventDetailsForm.controls.resourceUrl.updateValueAndValidity()
const recordedLinks = _.get(this.eventDetails, 'recordedLinks', [])
if (recordedLinks.length > 0) {
this.eventDetailsForm.controls.registrationLink.clearValidators()
this.eventDetailsForm.controls.recordedLinks.setValidators([Validators.required])
this.eventDetailsForm.controls.recordedLinks.updateValueAndValidity()
this.eventDetailsForm.controls.registrationLink.updateValueAndValidity()
}
const eventBaseDetails = {
eventName: _.get(this.eventDetails, 'name', ''),
Expand All @@ -97,9 +98,8 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
startDate: startDate ? new Date(startDate) : startDate,
startTime: _.get(this.eventDetails, 'startTime', ''),
endTime: _.get(this.eventDetails, 'endTime', ''),
resourceUrl: resourceUploadType === 'url' ? _.get(this.eventDetails, 'registrationLink', '') : '',
uploadUrl: resourceUploadType === 'upload' ? _.get(this.eventDetails, 'registrationLink', '') : '',
resourceUploadType: resourceUploadType,
registrationLink: _.get(this.eventDetails, 'registrationLink', ''),
recordedLinks: _.get(this.eventDetails, 'recordedLinks', []),
appIcon: _.get(this.eventDetails, 'appIcon', '')
}
this.eventDetailsForm.setValue(eventBaseDetails)
Expand Down Expand Up @@ -211,15 +211,22 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
event: this.getFormBodyOfEvent(status)
}
}
this.loaderService.changeLoaderState(true)
this.eventSvc.updateEvent(formBody, this.eventId).subscribe({
next: res => {
if (res) {
const successMessage = status === 'Draft' ? 'Event details saved successfully' : 'Event details sent for approval successfully'
this.openSnackBar(successMessage)
this.navigateBack()
setTimeout(() => {
this.navigateBack()
this.loaderService.changeLoaderState(false)
}, 1000)
} else {
this.loaderService.changeLoaderState(false)
}
},
error: (error: HttpErrorResponse) => {
this.loaderService.changeLoaderState(false)
const errorMessage = _.get(error, 'error.message', 'Something went wrong while updating event, please try again')
this.openSnackBar(errorMessage)
}
Expand All @@ -242,10 +249,11 @@ export class CreateEventComponent implements OnInit, AfterViewInit {
eventDetails['resourceType'] = eventBaseDetails.eventCategory
eventDetails['streamType'] = eventBaseDetails.streamType
eventDetails['startDate'] = eventBaseDetails.startDate ? this.datePipe.transform(eventBaseDetails.startDate, 'yyyy-MM-dd') : ''
eventDetails['endDate'] = eventBaseDetails.startDate ? this.datePipe.transform(eventBaseDetails.startDate, 'yyyy-MM-dd') : ''
eventDetails['startTime'] = startTime
eventDetails['endTime'] = endTime
eventDetails['registrationLink'] = eventBaseDetails.resourceUploadType === 'url' ? eventBaseDetails.resourceUrl : eventBaseDetails.uploadUrl
eventDetails['resourceUploadType'] = eventBaseDetails.resourceUploadType
eventDetails['registrationLink'] = eventBaseDetails.registrationLink
eventDetails['recordedLinks'] = eventBaseDetails.recordedLinks
eventDetails['appIcon'] = eventBaseDetails.appIcon

if (status === 'SentToPublish') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
or upload from URL
</div>
<mat-form-field appearance="outline" class="">
<input matInput placeholder="Enter url" formControlName="resourceUrl">
<input matInput placeholder="Enter url" formControlName="registrationLink">
</mat-form-field>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { map, mergeMap } from 'rxjs/operators'
import { environment } from '../../../../../../../../../../../src/environments/environment'
import { HttpErrorResponse } from '@angular/common/http'
import moment from 'moment'
import { LoaderService } from '../../../../../../../../../../../src/app/services/loader.service'

@Component({
selector: 'ws-app-event-basic-details',
Expand All @@ -24,22 +25,28 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
evntCategorysList = ['Webinar', 'Karmayogi Talks', 'Karmayogi Saptah']
todayDate = new Date()

maxTimeToStart = '11:30 pm'
minTimeToEnd = '12:30 am'
maxTimeToStart = '11:45 pm'
minTimeToEnd = '12:15 am'
timeGap = 15

//#endregion

constructor(
private matSnackBar: MatLegacySnackBar,
private eventSvc: EventsService
private eventSvc: EventsService,
private loaderService: LoaderService
) { }

ngOnChanges(changes: SimpleChanges): void {
if (changes.eventDetails) {
const startTime = _.get(this.eventDetails, 'value.startTime')
if (startTime) {
this.eventDetails.controls.startTime.patchValue(this.convertTo12HourFormat(startTime))
const convertedStartTime = this.convertTo12HourFormat(startTime)
this.eventDetails.controls.startTime.patchValue(convertedStartTime)
setTimeout(() => {
const resetEndTime = false
this.generatMinTimeToEnd(convertedStartTime, resetEndTime)
}, 100)
}

const endTime = _.get(this.eventDetails, 'value.endTime')
Expand Down Expand Up @@ -72,23 +79,21 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
this.generatMinTimeToEnd(time)
})
}
if (this.eventDetails.controls.resourceUrl) {
this.eventDetails.controls.resourceUrl.valueChanges.subscribe((url) => {
if (this.eventDetails.controls.registrationLink) {
this.eventDetails.controls.registrationLink.valueChanges.subscribe((url) => {
if (url && url !== '') {
this.eventDetails.controls.uploadUrl.patchValue('')
this.eventDetails.controls.uploadUrl.clearValidators()
this.eventDetails.controls.resourceUrl.setValidators([Validators.required])
this.eventDetails.controls.resourceUploadType.patchValue('url')
this.eventDetails.controls.uploadUrl.updateValueAndValidity()
this.eventDetails.controls.resourceUrl.updateValueAndValidity()
this.eventDetails.controls.resourceUploadType.updateValueAndValidity()
this.eventDetails.controls.recordedLinks.patchValue([])
this.eventDetails.controls.recordedLinks.clearValidators()
this.eventDetails.controls.registrationLink.setValidators([Validators.required])
this.eventDetails.controls.recordedLinks.updateValueAndValidity()
this.eventDetails.controls.registrationLink.updateValueAndValidity()
}
})
}
}


generatMinTimeToEnd(time: string) {
generatMinTimeToEnd(time: string, resetEndTime = true) {
let [timePart, period] = time.split(' ')
let [hours, minutes] = timePart.split(':').map(Number)
minutes += this.timeGap
Expand All @@ -109,7 +114,7 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
}
const formattedTime = `${hours}:${minutes < 10 ? '0' + minutes : minutes} ${period}`
this.minTimeToEnd = formattedTime
if (this.eventDetails.controls.startTime) {
if (this.eventDetails.controls.startTime && resetEndTime) {
this.eventDetails.controls.endTime.patchValue('')
}
}
Expand All @@ -128,9 +133,9 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {

get uploadedVideoName(): string {
let name = ''
const uploadedVideoUrl = _.get(this.eventDetails, 'value.uploadUrl', '')
if (uploadedVideoUrl) {
const urlSplit = uploadedVideoUrl.split('_')
const uploadedVideoUrl = _.get(this.eventDetails, 'value.recordedLinks', [])
if (uploadedVideoUrl.length > 0) {
const urlSplit = uploadedVideoUrl[0].split('_')
if (urlSplit.length > 0) {
name = urlSplit[urlSplit.length - 1]
}
Expand All @@ -142,11 +147,11 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
if (item === 'appIcon' && this.eventDetails.controls.appIcon) {
this.eventDetails.controls.appIcon.patchValue('')
this.eventDetails.controls.appIcon.updateValueAndValidity()
} else if (item === 'uploadedVideo' && this.eventDetails.controls.uploadUrl) {
this.eventDetails.controls.uploadUrl.patchValue('')
this.eventDetails.controls.uploadUrl.updateValueAndValidity()
this.eventDetails.controls.resourceUrl.setValidators([Validators.required])
this.eventDetails.controls.resourceUrl.updateValueAndValidity()
} else if (item === 'uploadedVideo' && this.eventDetails.controls.recordedLinks) {
this.eventDetails.controls.recordedLinks.patchValue([])
this.eventDetails.controls.recordedLinks.updateValueAndValidity()
this.eventDetails.controls.registrationLink.setValidators([Validators.required])
this.eventDetails.controls.registrationLink.updateValueAndValidity()
}
}

Expand All @@ -156,8 +161,8 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
return
}
const mimeType = files[0].type
if (!mimeType.startsWith('video/')) {
this.openSnackBar('Only video files are supported')
if (!mimeType.startsWith('image/')) {
this.openSnackBar('Only images are supported')
return
}
const reader = new FileReader()
Expand Down Expand Up @@ -194,6 +199,7 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
},
},
}
this.loaderService.changeLoaderState(true)
this.eventSvc.createContent(request).pipe(mergeMap((res: any) => {
const contentID = _.get(res, 'result.identifier')
const formData: FormData = new FormData()
Expand All @@ -207,6 +213,7 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
}
})).subscribe({
next: res => {
this.loaderService.changeLoaderState(false)
if (res) {
const createdUrl = res
const urlToReplace = 'https://storage.googleapis.com/igot'//https://portal.dev.karmayogibharat.net
Expand All @@ -221,20 +228,19 @@ export class EventBasicDetailsComponent implements OnInit, OnChanges {
this.eventDetails.controls.appIcon.updateValueAndValidity()
}
} else {
if (this.eventDetails.controls.uploadUrl) {
this.eventDetails.controls.uploadUrl.patchValue(appIcon)
this.eventDetails.controls.uploadUrl.setValidators([Validators.required])
this.eventDetails.controls.resourceUrl.patchValue('')
this.eventDetails.controls.resourceUrl.clearValidators()
this.eventDetails.controls.resourceUploadType.patchValue('upload')
this.eventDetails.controls.uploadUrl.updateValueAndValidity()
this.eventDetails.controls.resourceUrl.updateValueAndValidity()
this.eventDetails.controls.resourceUploadType.updateValueAndValidity()
if (this.eventDetails.controls.recordedLinks) {
this.eventDetails.controls.recordedLinks.patchValue([appIcon])
this.eventDetails.controls.recordedLinks.setValidators([Validators.required])
this.eventDetails.controls.registrationLink.patchValue('')
this.eventDetails.controls.registrationLink.clearValidators()
this.eventDetails.controls.recordedLinks.updateValueAndValidity()
this.eventDetails.controls.registrationLink.updateValueAndValidity()
}
}
}
},
error: (error: HttpErrorResponse) => {
this.loaderService.changeLoaderState(false)
const errorMessage = _.get(error, 'error.message', 'Something went wrong please try again')
this.openSnackBar(errorMessage)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<div class="competency-details flex-grow">
<div class="mt-4 flex justify-between">
<div class="title">Add Competency</div>
<div class="add-theme" (click)="showAddCompetencyDialog()">Add Competency</div>
<ng-container *ngIf="openMode === 'edit'">
<button mat-button class="add-theme" (click)="showAddCompetencyDialog()">Add Competency</button>
</ng-container>
</div>
<div class="add-theme-sec mt-4" *ngIf="competencies?.length">
<div class="" *ngFor="let competency of competencies, let index=c">
Expand All @@ -16,9 +18,11 @@
<div>{{competency.competencyAreaName}}</div>
</div>
</div>
<div>
<mat-icon class="cursor-pointer" (click)="removeNode(competency)">delete</mat-icon>
</div>
<ng-container *ngIf="openMode === 'edit'">
<div>
<mat-icon class="cursor-pointer" (click)="removeNode(competency)">delete</mat-icon>
</div>
</ng-container>
</div>
<ng-container *ngIf="competency?.themes?.length">
<div class="themes-card" *ngFor="let theme of competency.themes, let i=index">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import * as _ from 'lodash'
import { ActivatedRoute } from '@angular/router'
import { environment } from '../../../../../../../../../../../src/environments/environment'
import { HttpErrorResponse } from '@angular/common/http'
import { LoaderService } from '../../../../../../../../../../../src/app/services/loader.service'


@Component({
Expand All @@ -28,7 +29,8 @@ export class EventMaterialsComponent implements OnInit {
constructor(
private matSnackBar: MatSnackBar,
private eventSvc: EventsService,
private activeRoute: ActivatedRoute
private activeRoute: ActivatedRoute,
private loaderService: LoaderService
) { }

ngOnInit(): void {
Expand All @@ -54,7 +56,9 @@ export class EventMaterialsComponent implements OnInit {
// return
// }
reader.readAsDataURL(files[0])
this.loaderService.changeLoaderState(true)
reader.onload = _event => {
this.loaderService.changeLoaderState(false)
this.fileURL = reader.result
this.saveFile()
}
Expand Down Expand Up @@ -83,6 +87,7 @@ export class EventMaterialsComponent implements OnInit {
},
},
}
this.loaderService.changeLoaderState(true)
this.eventSvc.createContent(request).pipe(mergeMap((res: any) => {
const contentID = _.get(res, 'result.identifier')
const formData: FormData = new FormData()
Expand All @@ -96,6 +101,7 @@ export class EventMaterialsComponent implements OnInit {
}
})).subscribe({
next: res => {
this.loaderService.changeLoaderState(false)
if (res) {
const createdUrl = res
const urlToReplace = 'https://storage.googleapis.com/igot'
Expand All @@ -108,6 +114,7 @@ export class EventMaterialsComponent implements OnInit {
}
},
error: (error: HttpErrorResponse) => {
this.loaderService.changeLoaderState(false)
const errorMessage = _.get(error, 'error.message', 'Something went wrong please try again')
this.openSnackBar(errorMessage)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,6 +225,8 @@ export class EventsListComponent implements OnInit, OnDestroy {
filters: {
status: ['Live'],
contentType: 'Event',
createdFor: _.get(this.userProfile, 'rootOrgId', '')

},
sort_by: {
lastUpdatedOn: 'desc',
Expand Down
Loading

0 comments on commit 1e19931

Please sign in to comment.