public ViewModels.User Save(ViewModels.RegisterUser user) { try { if (!ValidateUser(user)) { base.ValidationFailed(); return(null); } base.ValidationPassed(); DataModels.User dbUser = new DataModels.User(); dbUser.CreatedDate = DateTime.Now; dbUser.EmailAddress = user.EmailAddress; dbUser.FirstName = user.FirstName; dbUser.LastName = user.LastName; dbUser.PasswordHash = hashGenerator.CalculateHash(user.Password); dbUser.PublicIdentifier = Guid.NewGuid(); DataModels.Site site = null; if (this.configuration["SingleSiteMode"].ToLower() == "true") { site = this.context.Site.FirstOrDefault(); dbUser.Site = site; } if (this.context.User.Count() == 0) { //Congrats you are the site admin! dbUser.Role = this.context.Role.Where(x => x.ID == 1).FirstOrDefault(); } else { //Lowly team member dbUser.Role = this.context.Role.Where(x => x.ID == 4).FirstOrDefault(); } this.context.User.Add(dbUser); this.context.SaveChanges(); ViewModels.User viewUser = new ViewModels.User(); viewUser.FirstName = dbUser.FirstName; viewUser.LastName = dbUser.LastName; viewUser.EmailAddress = dbUser.EmailAddress; viewUser.UserSite = site.PublicIdentifier; viewUser.userId = dbUser.PublicIdentifier; return(viewUser); } catch (Exception e) { base.SetError(e.Message); return(null); } }
public IActionResult Post([FromBody] ViewModels.RegisterUser user) { ViewModels.User returnedUser = userRepository.Save(user); if (!userRepository.ValidSubmission) { return(BadRequest(user)); } if (userRepository.ErrorDetected) { return(StatusCode(StatusCodes.Status500InternalServerError)); } return(new ObjectResult(returnedUser)); }
private bool ValidateUser(ViewModels.RegisterUser user) { if (String.IsNullOrEmpty(user.FirstName) || user.FirstName.Length > 50) { return(false); } if (String.IsNullOrEmpty(user.LastName) || user.LastName.Length > 50) { return(false); } if (String.IsNullOrEmpty(user.EmailAddress) || user.EmailAddress.Length > 50) { return(false); } DataModels.Site site = null; if (this.configuration["SingleSiteMode"].ToLower() == "true") { site = this.context.Site.FirstOrDefault(); if (site == null) { return(false); } } else { //Halt registration for now return(false); } //TODO: Update basic Repo class to allow setting validation error message (enum or code that client can display) DataModels.User[] users = this.context.User.Where(x => x.EmailAddress == user.EmailAddress).ToArray(); if (users.Count() > 0) { return(false); } return(true); }