Example #1
0
        /// <summary>
        /// Subscribes a the given user to the event in the DTO
        /// </summary>
        /// <param name="subscriptionRequest">The DTO containing information about de subscription</param>
        /// <param name="userId">the user subscribing to de event</param>
        /// <returns>Subscription information in case the subscription is successful, otherwise return null</returns>
        public async Task <SubscribeToEventResponse> SubscribeAsync(SubscribeToEventRequest subscriptionRequest, long userId)
        {
            if (!IsValidSubscription(subscriptionRequest))
            {
                return(null);
            }

            var eventSubscription = await _subscriptionRepository.GetSubscriptionAsync(
                userId,
                subscriptionRequest.EventCode);

            if (eventSubscription != null)
            {
                return(new SubscribeToEventResponse(eventSubscription));
            }

            eventSubscription = new EventSubscription(
                userId,
                subscriptionRequest.Email,
                subscriptionRequest.EventCode,
                subscriptionRequest.EventStartTime.Value,
                TimeSpan.FromMinutes(subscriptionRequest.EventDuration.Value),
                subscriptionRequest.EventName,
                subscriptionRequest.EventDescription,
                subscriptionRequest.EventRoom,
                subscriptionRequest.EnablePushNotification,
                subscriptionRequest.NotificationService,
                subscriptionRequest.NotificationToken);

            eventSubscription = await _subscriptionRepository.InsertAsync(eventSubscription);

            return(new SubscribeToEventResponse(eventSubscription));
        }
Example #2
0
        private bool IsValidSubscription(SubscribeToEventRequest subscription)
        {
            if (subscription.Email.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEmail);
            }

            if (!subscription.Email.IsNullOrWhiteSpace() && !Email.IsValid(subscription.Email))
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.InvalidEmail, subscription.Email);
            }

            if (subscription.EventCode.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventCode);
            }

            if (subscription.EventName.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventName);
            }

            if (subscription.EventDescription.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventDescription);
            }

            if (!subscription.EventStartTime.HasValue)
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventStartTime);
            }

            if (!subscription.EventDuration.HasValue)
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventDuration);
            }

            if (subscription.EventRoom.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingEventRoom);
            }

            if (subscription.EnablePushNotification && subscription.NotificationToken.IsNullOrWhiteSpace())
            {
                _notification.RaiseError(LocalizationSources.Application, SubscriptionError.MissingNotificationToken);
            }

            var hasErrors = _notification.HasErrorNotification();

            return(!hasErrors);
        }
Example #3
0
        public async Task <IActionResult> PostAsync([FromBody] SubscribeToEventRequest subscriptionDto)
        {
            if (subscriptionDto == null)
            {
                return(BadRequest());
            }

            if (!_session.UserId.HasValue)
            {
                return(BadRequest());
            }

            var userId = _session.UserId.GetValueOrDefault();

            var subscription = await _subscriptionService.SubscribeAsync(subscriptionDto, userId);

            return(CreateResponseOnPost(subscription));
        }