public ActionResult Index(RegistrationPostModel model) { if (!_settingsRepository.RegistrationOpen) { return(View("Message", model: Resources.Global.RegistrationClosed)); } if (!ModelState.IsValid) { model.Password = null; model.RepeatPassword = null; return(View(model)); } // check fo existing user if (!_userRepository.CheckEmail(model.Email)) { ModelState.AddModelError(nameof(RegistrationPostModel.Email), Resources.Global.EmailTaken); model.Password = null; model.RepeatPassword = null; return(View(model)); } if (model.Password != model.RepeatPassword) { ModelState.AddModelError(nameof(RegistrationPostModel.RepeatPassword), Resources.Global.Registration_Form_Repeat_Password_Invalid); model.Password = null; model.RepeatPassword = null; return(View(model)); } if (model.DateOfBirth.AddYears(_configProvider.MinimumAge) > DateTime.Today) { ModelState.AddModelError(nameof(RegistrationPostModel.DateOfBirth), Resources.Global.Registration_Form_DateOfBirth_NotEnough); model.Password = null; model.RepeatPassword = null; return(View(model)); } // set the correct fb uri: model.FacebookProfileUrl = FacebookUriHelper.GetUniformFacebookUri(model.FacebookProfileUrl); if (model.FacebookProfileUrl == null || !_userRepository.CheckFacebookProfileUri(model.FacebookProfileUrl)) { ModelState.AddModelError(nameof(RegistrationPostModel.FacebookProfileUrl), Resources.Global.FacebookURL_Invalid); model.Password = null; model.RepeatPassword = null; return(View(model)); } // save to db var domainModel = _mapper.Map <SantaUser>(model); _userRepository.InsertUser(domainModel); _emailService.SendConfirmationEmail(domainModel); return(View("Confirmation", model: model.Email)); }
public async Task Post([FromBody] RegistrationPostModel model) { var academicTerm = new AcademicTerm( value: model.AcademicTerm.Value, academicYear: new AcademicYear( startYear: new Year(model.AcademicTerm.StartYear), endYear: new Year(model.AcademicTerm.EndYear) )); var entity = new Registration( id: Guid.NewGuid(), studentNumber: model.StudentNumber, academicTerm: academicTerm, courses: model.Courses .Select(x => new Course(x.Code, x.Name, x.Units)) .ToList()); var registrationRepository = new RegistrationRepository(); await registrationRepository.Save(entity, DateTimeOffset.UtcNow); }