BuildIt.Web.Services.NotificationService.CreateOrUpdateRegistrationAsync C# (CSharp) Method

CreateOrUpdateRegistrationAsync() public method

public CreateOrUpdateRegistrationAsync ( PushRegistration pushRegistration ) : Task
pushRegistration BuildIt.Web.Models.PushNotifications.PushRegistration
return Task
        public async Task<string> CreateOrUpdateRegistrationAsync(PushRegistration pushRegistration)
        {
            UserRegistrationResult userRegistrationResult = await RegisterUserAsync(pushRegistration);
            if (userRegistrationResult == null)
            {
                return pushRegistration.RegistrationId;
            }

            RegistrationDescription registration = null;
            switch (pushRegistration.Platform)
            {
                case PushPlatform.APNS:
                    registration = new AppleRegistrationDescription(pushRegistration.Handle);
                    break;
                case PushPlatform.GCM:
                    registration = new GcmRegistrationDescription(pushRegistration.Handle);
                    break;
                case PushPlatform.WNS:
                    registration = new WindowsRegistrationDescription(pushRegistration.Handle);
                    break;
                default:
                    //throw new HttpResponseException(HttpStatusCode.BadRequest);
                    throw new Exception();
            }

            registration.RegistrationId = userRegistrationResult.RegistrationId;
            if (pushRegistration.Tags?.Any() ?? false)
            {
                registration.Tags = new HashSet<string>(pushRegistration.Tags);
            }

            await notificationHub.CreateOrUpdateRegistrationAsync(registration);

            return registration.RegistrationId;
        }