public async Task<ActionResult> Register(RegisterDonorViewModel registration) {
            var userManager = HttpContext.GetOwinContext().GetUserManager<WishlistUserManager>();
            var user = await CreateDonor(registration, userManager);

            if (registration.DonorId.HasValue) {
                await AuthorizeDonorForUser(user, registration.DonorId.Value, userManager);
                await SendConfirmationEmail(user, userManager);
                await SignDonorIn(user, userManager);

                return RedirectToAction("Index", "Home");
            }

            var donor = new Donor();
            _db.Donors.Add(donor);

            var cart = new Cart {
                Donor = donor,
                ModifiedDate = DateTime.Now
            };
            _db.Carts.Add(cart);
            await _db.SaveChangesAsync();

            await AuthorizeDonorForUser(user, donor.Id, userManager);
            await SendConfirmationEmail(user, userManager);
            await SignDonorIn(user, userManager);
            return RedirectToAction("Index", "Home");
        }
        public async Task<ActionResult> SignInAnonymously() {
            var donor = new Donor();
            _db.Donors.Add(donor);

            var cart = new Cart { Donor = donor, ModifiedDate = DateTime.Now };
            _db.Carts.Add(cart);

            await _db.SaveChangesAsync();

            var identity = new ClaimsIdentity(DefaultAuthenticationTypes.ApplicationCookie);
            var anonymousIdentifier = Guid.NewGuid().ToString();
            identity.AddClaim(new Claim("Donor", donor.Id.ToString()));
            identity.AddClaim(new Claim(ClaimTypes.NameIdentifier, anonymousIdentifier));
            identity.AddClaim(new Claim(IdentityProviderClaimType, anonymousIdentifier));
            var authManager = HttpContext.GetOwinContext().Authentication;
            authManager.SignIn(new AuthenticationProperties { IsPersistent = true }, identity);

            return RedirectToAction("Index", "Home");
        }