// POST api/<controller> // // Add user to the database // public HttpResponseMessage Post([FromBody] JsonUser value) { if (value == null) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid user information")); } Models.Repository repository = new Models.Repository(); var user = repository.GetUserByEmail(value.Email); if (user != null) { return(Request.CreateErrorResponse(HttpStatusCode.Conflict, "User with same email already exists")); } string groupCode = HttpContext.Current.Request.QueryString["code"]; Models.Group defaultGroup = repository.FindGroupByCode((string.IsNullOrEmpty(groupCode) ? "JYMF" : groupCode)); if (defaultGroup == null) { return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Group code not found")); } string userid; do { Random random = new Random(); userid = (!string.IsNullOrEmpty(value.UserId) ? value.UserId : System.Web.Security.Membership.GeneratePassword(16, 0)); userid = Regex.Replace(userid, @"[^a-zA-Z0-9]", m => random.Next(0, 9).ToString()); user = repository.GetUserById(userid); } while (user != null); MFUser fbUser = new MFUser { UserId = userid, Email = value.Email, Password = value.Password, FirstName = value.FirstName, LastName = value.LastName, Name = value.Name }; var mfUser = repository.CreateUser(fbUser); repository.SaveChanges(); if (repository.IsUserInGroup(mfUser, defaultGroup) == GroupRoleEnum.empty) { repository.DefaultGroup(mfUser, defaultGroup, GroupRoleEnum.member); repository.SaveChanges(); } // Send an email notification // var smtp = new SmtpClient(); // Settings in config file var message = new MailMessage("*****@*****.**", ConfigurationManager.AppSettings["AdminEmail"]); message.Subject = "JYMF RaceDay New User"; message.IsBodyHtml = true; message.Priority = MailPriority.High; message.Body = File.ReadAllText(HttpContext.Current.Server.MapPath("~/App_Data/NewUser.txt")); message.Body = message.Body.Replace("@FIRSTNAME@", fbUser.FirstName) .Replace("@LASTNAME@", fbUser.LastName) .Replace("@EMAIL@", fbUser.Email); smtp.Send(message); return(Request.CreateResponse(HttpStatusCode.Created, "User added to application")); }