public async Task RemoveRedeemedCoupon(int camperId)
        {
            RedeemedCoupon camperCoupon = await GetCamperCoupon(camperId);

            Context.Remove(camperCoupon);
            await Context.SaveChangesAsync();
        }
        public async Task <RedeemedCoupon> RedeemCoupon(int couponId, int camperId)
        {
            RedeemedCoupon camperCoupon = await GetCamperCoupon(camperId);

            if (camperCoupon == null)
            {
                RedeemedCoupon newCamperCoupon = new RedeemedCoupon
                {
                    CamperId     = camperId,
                    CouponId     = couponId,
                    RedeemedDate = DateTimeOffset.Now,
                };

                await Context.RedeemedCoupons.AddAsync(newCamperCoupon);

                await Context.SaveChangesAsync();

                return(newCamperCoupon);
            }

            camperCoupon.CouponId     = couponId;
            camperCoupon.RedeemedDate = DateTimeOffset.Now;

            await Context.SaveChangesAsync();

            return(camperCoupon);
        }
Beispiel #3
0
        public async Task GetRedeemedCoupon()
        {
            // Arrange
            var offerer = UserRegisterModelFactory.getUserFactory("Offerer").getUser();
            var coupon  = CouponModelFactory.Default();

            offerer.AddCoupon(coupon);
            var student    = new Student(this.AuthenticatedUserId);
            var admin      = UserRegisterModelFactory.getUserFactory("Admin").getUser();
            var university = InstitutionsModelFactory.University();
            var faculty    = InstitutionsModelFactory.Faculty();

            university.AddFaculty(faculty);
            faculty.AddStudent(student);

            var redeemedcoupon = new RedeemedCoupon("Used", coupon.Id);

            student.AddRedeemedCoupon(redeemedcoupon);
            await ExecuteDatabaseAction(async couponelContext =>
            {
                await couponelContext.Users.AddAsync(admin);
                await couponelContext.Users.AddAsync(offerer);
                await couponelContext.Universities.AddAsync(university);
                await couponelContext.SaveChangesAsync();
            });

            //Act
            var response = await HttpClient.GetAsync($"/api/redeemedCoupons/{redeemedcoupon.Id}");

            // Assert
            response.IsSuccessStatusCode.Should().BeTrue();
            var redeemedcoupons = await response.Content.ReadAsAsync <RedeemedCoupon>();

            redeemedcoupons.Should().NotBeNull();
        }
        public async Task <RedeemedCouponModel> Add(Guid redeemedCouponId)
        {
            var userId  = Guid.Parse(_accessor.HttpContext.User.Claims.First(c => c.Type == "userId").Value);
            var student = await _repository.GetStudentRedeemedCouponsById(userId);

            var redeemedCoupon = new RedeemedCoupon(RedeemedCouponStatus.Valid, redeemedCouponId);

            student.AddRedeemedCoupon(redeemedCoupon);
            await _repository.SaveChanges();

            return(_mapper.Map <RedeemedCouponModel>(redeemedCoupon));
        }
Beispiel #5
0
        private async Task <AdjustedCamper> AdjustCamper(Camper camper)
        {
            RedeemedCoupon camperCoupon = await _redeemedCouponRepository.GetCamperCoupon(camper.Id);

            AdjustedCamper adjustedCamper = new AdjustedCamper(camper);

            if (camperCoupon != null)
            {
                adjustedCamper.CouponId = camperCoupon.CouponId;
            }

            IEnumerable <CamperCustomField> camperCustomFields =
                await _camperCustomFieldRepository.GetCamperCustomFields(camper.Id);

            adjustedCamper.CustomFields = camperCustomFields;

            return(adjustedCamper);
        }
Beispiel #6
0
        public async Task <ActionResult <AdjustedCamper> > UpdateCamper(int portalId, int camperId,
                                                                        [FromBody] CamperModel camper)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                await ValidateCustomFields(portalId, camper.CustomFields);
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }

            Camper updatedCamper = await _camperRepository.UpdateCamper(portalId, camperId, camper);

            RedeemedCoupon camperCoupon = await _redeemedCouponRepository.GetCamperCoupon(camperId);

            if (camper.CouponId != null && (camperCoupon == null || camper.CouponId != camperCoupon.CouponId))
            {
                await _redeemedCouponRepository.RedeemCoupon(camper.CouponId.Value, camperId);
            }
            else if (camper.CouponId == null && camperCoupon != null)
            {
                await _redeemedCouponRepository.RemoveRedeemedCoupon(camperId);
            }

            await SaveCustomFields(camperId, camper.CustomFields);

            AdjustedCamper adjustedCamper = await AdjustCamper(updatedCamper);

            return(Ok(adjustedCamper));
        }
Beispiel #7
0
 public void AddRedeemedCoupon(RedeemedCoupon redeemedCoupon)
 {
     RedeemedCoupons.Add(redeemedCoupon);
 }