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); }
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); }
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); } }
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); } }
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 })); }
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()); }
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 } ")}?";