public async Task <IActionResult> Buy(BuyInputModel purchasedMembershipModel)
        {
            var user = await this.userManager.GetUserAsync(this.User);

            var membershipByUser = this.purchasedMembershipsService.GetByUser(user);

            if (membershipByUser != null)
            {
                return(this.RedirectToAction("Renew"));
            }

            if (!this.ModelState.IsValid)
            {
                return(this.View(purchasedMembershipModel));
            }

            var membership = this.membershipsService.GetById <PurchasedMembershipModel>(purchasedMembershipModel.Id);

            if (membership == null)
            {
                return(this.BadRequest());
            }

            var purchase = new PurchasedMembershipInputServiceModel
            {
                MembershipId = purchasedMembershipModel.Id,
                UserId       = user.Id,
                StartDate    = purchasedMembershipModel.StartDate,
                EndDate      = purchasedMembershipModel.StartDate.AddDays((int)membership.Duration),
            };

            await this.purchasedMembershipsService.CreateAsync(purchase);

            return(this.RedirectToAction("ThankYou"));
        }
        public async Task CreateAsync(PurchasedMembershipInputServiceModel purchasedMembershipModel)
        {
            var purchasedMembership = new PurchasedMembership
            {
                UserId       = purchasedMembershipModel.UserId,
                MembershipId = purchasedMembershipModel.MembershipId,
                StartDate    = purchasedMembershipModel.StartDate,
                EndDate      = purchasedMembershipModel.EndDate,
            };

            await this.purchasedMembershipRepository.AddAsync(purchasedMembership);

            await this.purchasedMembershipRepository.SaveChangesAsync();
        }