public async Task <ActionResult <Registration> > RegisterCamper(int portalId, int eventId, [FromBody] CamperOverrideModel camper) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { await ValidateCustomFields(portalId, camper.CustomFields); } catch (Exception ex) { return(BadRequest(ex.Message)); } Event dbEvent = await _eventRepository.GetEventById(portalId, eventId); Registration dbRegistration = await Register(portalId, camper, dbEvent, camper.PaymentId); return(Ok(dbRegistration)); }
private async Task <Registration> Register(int portalId, CamperOverrideModel camper, Event dbEvent, int?paymentId) { Camper dbCamper = await _camperRepository.CreateCamper(portalId, camper); if (!string.IsNullOrEmpty(camper.Coupon)) { IEnumerable <Coupon> dbCoupons = await _couponRepository.GetCouponsByCode(portalId, camper.Coupon); List <Coupon> coupons = dbCoupons.ToList(); if (coupons.Any()) { await _redeemedCouponRepository.RedeemCoupon(coupons.First().Id, dbCamper.Id); } } await SaveCustomFields(dbCamper.Id, camper.CustomFields); RegistrationModel registrationModel = new RegistrationModel { Event = dbEvent, EventId = dbEvent.Id, CamperId = dbCamper.Id, IsActive = true, StartingBalance = camper.StartingBalance, }; Registration registration = await _registrationRepository.CreateRegistration(portalId, registrationModel); if (paymentId != null) { await _paymentDonationRepository.AddRegistrationPayment(paymentId.Value, registration.Id); } return(registration); }