public IHttpActionResult Create([FromBody] RegistrationViewModel data) { try { var eventItem = _eventRepository.GetById(data.EventId); var visitor = _visitorRepository.GetByEmail(data.Email); if (visitor == null) { visitor = Visitor.Create(data.Name, data.City, data.Email, data.Postcode); _visitorRepository.Insert(visitor); } var numberOfVisitors = Convert.ToInt32(data.NumberOfVisitors); var registration = Registration.Create(visitor, eventItem, numberOfVisitors, false); registration.Confirmed = true; registration.ConfirmationDate = DateTime.Now; _registrationRepository.Insert(registration); var logoUrl = Request.RequestUri.GetLeftPart(UriPartial.Authority) + "/img"; var barcodeUrl = @"https://chart.googleapis.com/chart?chl=" + Uri.EscapeUriString(registration.Id.ToString()) + @"&chs=200x200&cht=qr&chld=H%7C0"; var settings = _settingRepository.GetById(1); ConfirmationEmail email = new ConfirmationEmail() { To = visitor.Email, Name = visitor.Name, Date = eventItem.TimeRange.Start.ToString("dd-MM-yyyy"), TimeFrom = eventItem.TimeRange.Start.ToShortTimeString(), TimeTill = eventItem.TimeRange.End.ToShortTimeString(), NumberOfVisitors = registration.NumberOfVisitors, LogoUrl = logoUrl, BarcodeUrl = barcodeUrl, RegistrationId = registration.Id.ToString(), Disclaimer = settings.EmailDisclaimer, }; email.Send(); return(Ok(new { message = "Registratie is verzonden en bevestigd" })); } catch (Exception e) { return(BadRequest(e.Message)); } }
public ActionResult Create(FormCollection collection) { try { var eventItem = _eventRepository.GetById(new Guid(collection["EventId"])); var ipAddress = GetIPAddress(); var visitor = _visitorRepository.GetByEmail(collection["Email"]); if (visitor == null) { visitor = Visitor.Create(collection["Name"], collection["City"], collection["Email"], collection["Postcode"]); _visitorRepository.Insert(visitor); } /* * // Check if the visitor already registered on this day or earlier than legacy deadline * var registrations = _registrationRepository.GetByVisitorAndEvent(visitor.Id, eventItem); * if (registrations.Count() > 0) * { * DateTime legacyDate = eventItem.TimeRange.Start; * switch (_settings.LegacyPeriod.Unit) * { * case Profilan.SharedKernel.Unit.Hours: * legacyDate = eventItem.TimeRange.Start.AddHours(-1 * _settings.LegacyPeriod.Amount); * break; * case Profilan.SharedKernel.Unit.Minutes: * legacyDate = eventItem.TimeRange.Start.AddMinutes(-1 * _settings.LegacyPeriod.Amount); * break; * case Profilan.SharedKernel.Unit.Seconds: * legacyDate = eventItem.TimeRange.Start.AddSeconds(-1 * _settings.LegacyPeriod.Amount); * break; * case Profilan.SharedKernel.Unit.Days: * legacyDate = eventItem.TimeRange.Start.AddDays(-1 * _settings.LegacyPeriod.Amount); * break; * case Profilan.SharedKernel.Unit.Months: * legacyDate = eventItem.TimeRange.Start.AddMonths(-1 * _settings.LegacyPeriod.Amount); * break; * case Profilan.SharedKernel.Unit.Years: * legacyDate = eventItem.TimeRange.Start.AddYears(-1 * _settings.LegacyPeriod.Amount); * break; * default: * break; * } * * // Haal de bezochte registraties op (bezocht of bevestigd?) * var visitedRegistrations = _registrationRepository.GetVisitedByVisitor(visitor.Id); * * if (visitedRegistrations.Count() > 0) * { * var lastEvent = _eventRepository.GetById(visitedRegistrations.Last().Event.Id); * if (lastEvent.TimeRange.Start >= legacyDate) * { * return RedirectToAction("EarlyRegistered"); * } * } * * * if (registrations.Last().Confirmed == true) * { * return RedirectToAction("AlreadyRegistered"); * } * } */ // Voeg registratie toe var numberOfVisitors = Convert.ToInt32(collection["NumberOfVisitors"]); var registration = Registration.Create(visitor, eventItem, numberOfVisitors, false); registration.IPAddress = ipAddress; _registrationRepository.Insert(registration); // Verstuur een activatie email string themeTitle = ""; if (eventItem.Theme != null) { Theme theme = _themeRepository.GetById(eventItem.Theme.Id); themeTitle = "[" + theme.Title + "]"; } var activationUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/registration/confirm/" + registration.Id; var logoUrl = Request.Url.GetLeftPart(UriPartial.Authority) + "/img"; ActivationEmail email = new ActivationEmail() { To = collection["Email"], ActivationUrl = activationUrl, Name = collection["Name"], Date = eventItem.TimeRange.Start.ToString("dd-MM-yyyy"), TimeFrom = eventItem.TimeRange.Start.ToShortTimeString(), TimeTill = eventItem.TimeRange.End.ToShortTimeString(), NumberOfVisitors = numberOfVisitors, LogoUrl = logoUrl, ThemeTitle = themeTitle, }; email.Send(); return(RedirectToAction("ThankYou")); } catch (Exception e) { throw new Exception(e.Message); } }