コード例 #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));
        }