Пример #1
0
        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));
            }
        }
Пример #2
0
        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);
            }
        }