示例#1
0
        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));
        }
示例#2
0
        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);
        }