Ejemplo n.º 1
0
        public HttpResponseMessage Post([FromBody] RegisterUserInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Provided data is invalid");
            }

            var isValidEmail = Regex.IsMatch(model.Email,
               @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
               @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$",
               RegexOptions.IgnoreCase);

            if (!isValidEmail)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Provided email format is invalid");
            }

            var registerUser = new RegisterUser(model.Name, model.Email);
            try
            {
                _bus.Send(registerUser);
            }
            catch (EmailAlreadyRegisteredException ex)
            {
                return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Email already registered for a user");
            }

            var response = Request.CreateResponse(HttpStatusCode.Created);
            response.Headers.Location = new Uri(Request.RequestUri, model.Email);
            return response;
        }
Ejemplo n.º 2
0
 public void Handle(RegisterUser registerUser)
 {
     var user = _repository.GetById(registerUser.Email);
     if (user != null)
     {
         throw new EmailAlreadyRegisteredException(registerUser.Email);
     }
     var name = new Name(registerUser.Name);
     var emailAddress = new EmailAddress(registerUser.Email);
     user = new User(name, emailAddress);
     _repository.Save(user);
 }