Exemplo n.º 1
0
    public async Task ExtendMemberSubscription(string email, System.DateTime subscriptionEndDate)
    {
        var userId = await _userLookup.FindUserIdByEmailAsync(email);

        var spec   = new MemberByUserIdSpec(userId);
        var member = await _memberRepository.GetBySpecAsync(spec);

        if (member is null)
        {
            throw new MemberWithEmailNotFoundException(email);
        }
        member.ExtendCurrentSubscription(subscriptionEndDate);
    }
Exemplo n.º 2
0
    public async Task <Member> GetMemberByEmailAsync(string memberEmail)
    {
        var userId = await _userLookup.FindUserIdByEmailAsync(memberEmail);

        var spec   = new MemberByUserIdSpec(userId);
        var member = await _memberRepository.GetBySpecAsync(spec);

        if (member is null)
        {
            throw new MemberWithEmailNotFoundException(memberEmail);
        }

        return(member);
    }
Exemplo n.º 3
0
    public async Task OnGetAsync(string userId)
    {
        var spec   = new MemberByUserIdSpec(userId);
        var member = await _memberRepository.GetBySpecAsync(spec);

        var EmailToUnsubscribe = await GetEmail(userId);

        if (member != null)
        {
            NameToUnsubscribe = member.UserFullName();
            Message           = $"If you are sure you want to unsubscribe {NameToUnsubscribe} with email {EmailToUnsubscribe} from DevBetter, click below.";
        }
        else
        {
            Message = "Invalid Link. Please try again.";
        }
    }
        private async Task HandleNewCustomerSubscriptionWithEmailAlreadyMember(string subscriptionId, decimal paymentAmount)
        {
            var customerId = _paymentHandlerSubscription.GetCustomerId(subscriptionId);
            var email      = _paymentHandlerCustomer.GetCustomerEmail(customerId);

            await AddNewSubscriberBillingActivity(subscriptionId, email, paymentAmount);

            var subscriptionDateTimeRange = _paymentHandlerSubscription.GetDateTimeRange(subscriptionId);

            var userId = await _userLookupService.FindUserIdByEmailAsync(email);

            var spec   = new MemberByUserIdSpec(userId);
            var member = await _repository.GetBySpecAsync(spec);

            if (member != null)
            {
                member.AddSubscription(subscriptionDateTimeRange);
            }
        }
Exemplo n.º 5
0
        public async Task OnGet(string userId)
        {
            // I don't think we need this - SAS
            //var user = await _userManager.FindByIdAsync(id);
            //if (user == null)
            //{
            //    BadRequest();
            //}

            var spec   = new MemberByUserIdSpec(userId);
            var member = await _repository.GetBySpecAsync(spec);

            if (member == null)
            {
                // TODO: Add logging
                BadRequest();
            }

            UserDetailsViewModel = new UserDetailsViewModel(member !);
        }
    private async Task HandleNewCustomerSubscriptionWithEmailAlreadyMember(string subscriptionId, decimal paymentAmount)
    {
        var customerId             = _paymentHandlerSubscription.GetCustomerId(subscriptionId);
        var paymentHandlerCustomer = _paymentHandlerCustomerService.GetCustomer(customerId);

        await AddNewSubscriberBillingActivity(subscriptionId, paymentHandlerCustomer.Email, paymentAmount);

        var subscriptionDateTimeRange = _paymentHandlerSubscription.GetDateTimeRange(subscriptionId);

        var userId = await _userLookupService.FindUserIdByEmailAsync(paymentHandlerCustomer.Email);

        var spec   = new MemberByUserIdSpec(userId);
        var member = await _repository.GetBySpecAsync(spec);

        if (member != null)
        {
            // TODO this should take in the subscription plan id - currently hard-coded to monthly
            member.AddSubscription(subscriptionDateTimeRange, 1);
        }
    }
Exemplo n.º 7
0
        public async Task <IActionResult> OnPostAddSubscriptionAsync(string userId, SubscriptionDTO subscription)
        {
            var memberByUserSpec = new MemberByUserIdSpec(userId);
            var member           = await _repository.GetAsync(memberByUserSpec);

            if (member == null)
            {
                member = await _memberRegistrationService.RegisterMemberAsync(userId);
            }

            var subscriptionByMemberSpec = new SubscriptionsByMemberSpec(member.Id);
            var subscriptionsFromDb      = await _repository.ListAsync(subscriptionByMemberSpec);

            // return error message if new subscription overlaps an existing subscription
            foreach (var subscriptionFromDb in subscriptionsFromDb)
            {
                if ((subscription.StartDate >= subscriptionFromDb.Dates.StartDate && subscription.StartDate <= subscriptionFromDb.Dates.EndDate) ||
                    (subscription.EndDate >= subscriptionFromDb.Dates.StartDate && subscription.EndDate <= subscriptionFromDb.Dates.EndDate))
                {
                    ModelState.AddModelError("OverlappingSubscription", "Subscriptions cannot overlap");
                    return(BadRequest(ModelState));
                }
            }

            try
            {
                await _repository.AddAsync(new Subscription()
                {
                    Dates = new DateTimeRange(subscription.StartDate, subscription.EndDate), MemberId = member.Id
                });
            }

            //DateTimeRange throws an error if EndDate is prior to StartDate
            catch (ArgumentException e)
            {
                ModelState.AddModelError("InvalidSubscription", e.Message);
                return(BadRequest(ModelState));
            }

            return(RedirectToPage("./User", new { userId = userId }));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> OnGetAsync(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                NotFound();
            }

            var currentUser = await _userManager.Users.FirstOrDefaultAsync(x => x.Id == userId);

            if (currentUser == null)
            {
                return(BadRequest());
            }

            var roles = await _roleManager.Roles.ToListAsync();

            var unassignedRoles = new List <IdentityRole>();
            var assignedRoles   = new List <IdentityRole>();

            foreach (var role in roles)
            {
                if (!(await _userManager.GetUsersInRoleAsync(role.Name)).Contains(currentUser))
                {
                    unassignedRoles.Add(role);
                }
                else
                {
                    assignedRoles.Add(role);
                }
            }

            IdentityUser           = currentUser;
            RolesNotAssignedToUser = unassignedRoles.Select(x => new SelectListItem(x.Name, x.Id)).ToList();
            Roles = assignedRoles.ToList();

            var memberByUserSpec = new MemberByUserIdSpec(userId);
            var member           = await _repository.GetAsync(memberByUserSpec);

            var subscriptions = new List <Subscription>();

            if (member != null)
            {
                var subscriptionByMemberSpec = new SubscriptionsByMemberSpec(member.Id);
                subscriptions = await _repository.ListAsync(subscriptionByMemberSpec);

                foreach (var subscription in subscriptions)
                {
                    Subscriptions.Add(new SubscriptionDTO()
                    {
                        Id        = subscription.Id,
                        StartDate = subscription.Dates.StartDate,
                        EndDate   = subscription.Dates.EndDate,
                    });

                    var totalDaysInSubscription = subscription.Dates.EndDate != null ? ((DateTime)subscription.Dates.EndDate - subscription.Dates.StartDate).TotalDays : (DateTime.Today - subscription.Dates.StartDate).TotalDays;
                    TotalDaysInAllSubscriptions += totalDaysInSubscription;
                }
            }

            return(Page());
        }
Exemplo n.º 9
0
        public async Task <IActionResult> OnGetAsync(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                NotFound();
            }

            var currentUser = await _userManager.Users.FirstOrDefaultAsync(x => x.Id == userId);

            if (currentUser == null)
            {
                return(BadRequest());
            }

            var roles = await _roleManager.Roles.ToListAsync();

            var unassignedRoles = new List <IdentityRole>();
            var assignedRoles   = new List <IdentityRole>();

            foreach (var role in roles)
            {
                if (!(await _userManager.GetUsersInRoleAsync(role.Name)).Contains(currentUser))
                {
                    unassignedRoles.Add(role);
                }
                else
                {
                    assignedRoles.Add(role);
                }
            }

            IdentityUser           = currentUser;
            RolesNotAssignedToUser = unassignedRoles.Select(x => new SelectListItem(x.Name, x.Id)).ToList();
            Roles = assignedRoles.ToList();

            var memberByUserSpec = new MemberByUserIdSpec(userId);
            var member           = await _memberRepository.GetBySpecAsync(memberByUserSpec);

            var subscriptions = new List <MemberSubscription>();

            if (member != null)
            {
                var subscriptionByMemberSpec = new MemberSubscriptionsByMemberSpec(member.Id);
                subscriptions = await _subscriptionRepository.ListAsync(subscriptionByMemberSpec);

                foreach (var subscription in subscriptions)
                {
                    Subscriptions.Add(new SubscriptionDTO()
                    {
                        Id        = subscription.Id,
                        StartDate = subscription.Dates.StartDate,
                        EndDate   = subscription.Dates.EndDate,
                    });

                    var totalDaysInSubscription = subscription.Dates.EndDate != null ? ((DateTime)subscription.Dates.EndDate - subscription.Dates.StartDate).TotalDays : (DateTime.Today - subscription.Dates.StartDate).TotalDays;
                    TotalDaysInAllSubscriptions += totalDaysInSubscription;
                }
            }

            EmailConfirmation.IsConfirmedString = IdentityUser.EmailConfirmed ? "Yes" : "No";
            string emailAddressMessage = "the email address";

            EmailConfirmation.EditEmailConfirmationMessage = @$ "Are you sure you want to {(IdentityUser.EmailConfirmed
        ? $" revoke {
                emailAddressMessage
            } confirmation "
        : $" confirm {
                emailAddressMessage
            } ")}?";