/// <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)); }