Ejemplo n.º 1
0
        public ActionResult UpdateCoupon(int personId, int seminarId, decimal couponAmount)
        {
            var person = _personRepository.GetNullableById(personId);

            if (person == null)
            {
                Message = string.Format(Messages.NotFound, "Person", personId);
                return(this.RedirectToAction(a => a.SiteList()));
            }

            var reg     = person.GetLatestRegistration(Site);
            var seminar = SiteService.GetLatestSeminar(Site);

            // check if user is registered for the current seminar
            if (reg.Seminar == null || seminar == null || reg.Seminar.Id != seminar.Id)
            {
                Message = "User is not a part of the current seminar.  Coupon cannot be created.";
                return(this.RedirectToAction(a => a.AdminEdit(person.User.Id, seminarId, null)));
            }

            // check for a current coupon
            if (!string.IsNullOrWhiteSpace(reg.CouponCode))
            {
                _registrationService.CancelCoupon(seminar.RegistrationId.Value, reg.CouponCode);
                reg.CouponCode   = null;
                reg.CouponAmount = null;
            }

            // create new coupon
            var coupon = _registrationService.GenerateCoupon(seminar.RegistrationId.Value, person.User.Email, couponAmount);

            if (!string.IsNullOrWhiteSpace(coupon))
            {
                reg.CouponCode   = coupon;
                reg.CouponAmount = couponAmount;
            }

            _seminarPersonRepository.EnsurePersistent(reg);
            Message = string.Format(Messages.Saved, "coupon");

            var url = Url.Action("AdminEdit", new { id = person.User.Id, seminarId = seminarId });

            return(Redirect(string.Format("{0}#registration", url)));
        }