This pull request introduces significant improvements to the stream and event services, focusing on streamlining functionality and enhancing the user experience. The changes include refactoring core services, adding DTOs for managing stream speakers, improving attendee join status handling, and adding support for stream reviews.
Key Changes:
Stream Speaker Management:
Added StreamSpeakerDto, AddStreamSpeakerDto, UpdateStreamSpeakerDto to manage stream speaker-related actions.
Added response classes: GetStreamSpeakersResponse, StreamSpeakerResponse, AddStreamSpeakerResponse, and UpdateStreamSpeakerResponse.
Added StreamSpeakerMapper to map StreamSpeaker domain entities to response objects.
Updated StreamSpeakerService and StreamSpeakerServiceImpl to handle stream speaker operations and interactions with StreamSpeakerRepository.
Join Status Handling:
Introduced JoinStatus to manage the UI label for user events or attendance.
Added StreamAttendeeSelect projection for retrieving event or stream IDs with join status.
Updated StreamService to include methods like determineUserJoinStatusForEventOrStream() and determineScheduleStatus() to verify attendee join statuses.
Stream Reviews:
Added StreamReviewService for adding and managing reviews for events or streams.
Added response classes for review actions: AddStreamReviewResponse and DeleteStreamReviewResponse.
Created StreamReviewController for handling review-related actions (adding, finding, deleting reviews).
Added mappers for StreamReview.
Refactorings:
Refactored EventService, EventServiceImpl, and LiveBroadcastServiceImpl to delegate tasks to StreamService.
Refactored DeleteStreamSpeakerDto to handle speaker objects.
Moved several classes including DataForCreateStreamResponse to the broadcast package.
Refactored FleenFeenResponse, GoogleCalendarEventService, and LiveBroadcastServiceImpl for better maintainability and cleaner code.
User Timezone Support:
Set the user’s timezone in FleenUser after successful authentication.
Added a timezone claim to FleenUser's access token.
Country Timezone Integration:
Added a new timezone column to the Country entity.
Updated the Liquibase init-data schema to include timezone details for all countries.
Updated CountryMapper to add timezone information to CountryResponse.
Added a CountryService.getCountryFromCache() method for retrieving country data with timezone information.
Service Refactoring:
Refactored CountryServiceImpl, EventServiceImpl, and LiveBroadcastServiceImpl to include AuthenticatedPrincipal and use EventMapper.
Refactored LiveBroadcastController.findLiveBroadcasts to improve the mapping process and reduce complexity.
Scheduling and Timezone Logic:
Enhanced DateTimeUtil to:
Convert timezone identifiers (e.g., Africa/Lagos to WAT).
Retrieve the GMT offset for a given timezone.
Convert times between timezones and create schedule details for streams or events.
Refactored FleenStreamResponse:
Removed the timezone, scheduledStartDate, and scheduledEndDate fields.
Added a new Schedule object to encapsulate schedule details for streams.
Updated StreamService to generate scheduling details based on the user’s timezone.
Liquibase Migration:
Updated the Liquibase migration script to make the code and timezone fields non-null in relevant tables for better data integrity.
Validation and Token Claims:
Refactored TimezoneValidValidator to support the new timezone logic for validation purposes.
Updated TokenClaimField to include the timezone field.
Other Improvements:
Replaced FleenStream.getFleenStreamId() with getStreamId() for consistency.
Added @JsonProperty for the email address field in StreamSpeakerDto.
Refactored EventController to add JoinEventOrStreamDto for joining events or streams.
Updated message source files and documentation for better i18n support.
Additional Updates:
Disabled guest-to-guest visibility.
Upgraded Spring Boot and other dependencies.
Added methods to StreamService for handling attendee join status.
General code clean-up and documentation improvements.
This pull request refines the overall structure of the services related to streams and events, enhancing functionality and improving maintainability.
Summary:
This pull request introduces significant improvements to the stream and event services, focusing on streamlining functionality and enhancing the user experience. The changes include refactoring core services, adding DTOs for managing stream speakers, improving attendee join status handling, and adding support for stream reviews.
Key Changes:
Stream Speaker Management:
StreamSpeakerDto
,AddStreamSpeakerDto
,UpdateStreamSpeakerDto
to manage stream speaker-related actions.GetStreamSpeakersResponse
,StreamSpeakerResponse
,AddStreamSpeakerResponse
, andUpdateStreamSpeakerResponse
.StreamSpeakerMapper
to mapStreamSpeaker
domain entities to response objects.StreamSpeakerService
andStreamSpeakerServiceImpl
to handle stream speaker operations and interactions withStreamSpeakerRepository
.Join Status Handling:
JoinStatus
to manage the UI label for user events or attendance.StreamAttendeeSelect
projection for retrieving event or stream IDs with join status.StreamService
to include methods likedetermineUserJoinStatusForEventOrStream()
anddetermineScheduleStatus()
to verify attendee join statuses.Stream Reviews:
StreamReviewService
for adding and managing reviews for events or streams.AddStreamReviewResponse
andDeleteStreamReviewResponse
.StreamReviewController
for handling review-related actions (adding, finding, deleting reviews).StreamReview
.Refactorings:
EventService
,EventServiceImpl
, andLiveBroadcastServiceImpl
to delegate tasks toStreamService
.DeleteStreamSpeakerDto
to handle speaker objects.DataForCreateStreamResponse
to thebroadcast
package.FleenFeenResponse
,GoogleCalendarEventService
, andLiveBroadcastServiceImpl
for better maintainability and cleaner code.User Timezone Support:
FleenUser
after successful authentication.FleenUser
's access token.Country Timezone Integration:
timezone
column to theCountry
entity.init-data
schema to include timezone details for all countries.CountryMapper
to add timezone information toCountryResponse
.CountryService.getCountryFromCache()
method for retrieving country data with timezone information.Service Refactoring:
CountryServiceImpl
,EventServiceImpl
, andLiveBroadcastServiceImpl
to includeAuthenticatedPrincipal
and useEventMapper
.LiveBroadcastController.findLiveBroadcasts
to improve the mapping process and reduce complexity.Scheduling and Timezone Logic:
DateTimeUtil
to:Africa/Lagos
toWAT
).FleenStreamResponse
:timezone
,scheduledStartDate
, andscheduledEndDate
fields.Schedule
object to encapsulate schedule details for streams.StreamService
to generate scheduling details based on the user’s timezone.Liquibase Migration:
code
andtimezone
fields non-null in relevant tables for better data integrity.Validation and Token Claims:
TimezoneValidValidator
to support the new timezone logic for validation purposes.TokenClaimField
to include the timezone field.Other Improvements:
FleenStream.getFleenStreamId()
withgetStreamId()
for consistency.@JsonProperty
for the email address field inStreamSpeakerDto
.EventController
to addJoinEventOrStreamDto
for joining events or streams.Additional Updates:
StreamService
for handling attendee join status.This pull request refines the overall structure of the services related to streams and events, enhancing functionality and improving maintainability.