private int ProcessStep2(IDbConnection c, IDbTransaction t, EnrollmentData enroll) { // at this point, user has to be logged in (even if there is no password yet, only used the enrollment PIN). // Save data, encode password var result = 1; var dbPlayer = GetPlayer(c, t); if (!dbPlayer.Approved) { if (dbPlayer.Name != enroll.Name || dbPlayer.Surname != enroll.Surname) { // update user record too c.Execute("UPDATE users SET name = @name WHERE id = @idUser", new { idUser = GetUserId(), name = enroll.Name + " " + enroll.Surname }, t); } dbPlayer.Name = enroll.Name; dbPlayer.Surname = enroll.Surname; dbPlayer.Address1 = enroll.Address1; dbPlayer.Address2 = enroll.Address2; dbPlayer.City = enroll.City; dbPlayer.State = enroll.State; dbPlayer.CP = enroll.CP; dbPlayer.Country = enroll.Country; dbPlayer.IdCardNumber = enroll.IdCardNumber; dbPlayer.BirthDate = enroll.BirthDate; if (!enroll.IsEditing) { dbPlayer.EnrollmentStep = 3; } c.Update(dbPlayer, t); // Get current team var dbTeamPlayer = GetTeamPlayer(c, t, enroll.IdTeam); if (dbTeamPlayer != null) { // TeamPlayer fields dbTeamPlayer.FieldPosition = enroll.FieldPosition; dbTeamPlayer.FieldSide = enroll.FieldSide; c.Update(dbTeamPlayer, t); } result = 2; } // Join this to the case above that also edits the user, so only db update is needed. if (enroll.Password != null && enroll.Password != "") { var dbUser = c.Get <User>(GetUserId(), t); UsersController.UpdatePassword(dbUser, enroll.Password); c.Update(dbUser, t); } return(result); }
public IActionResult Edit([FromBody] User referee) { return(DbTransaction((c, t) => { if (referee == null) { throw new NoDataException(); } var isReferee = IsReferee(); if (!IsOrganizationAdmin() && !isReferee) { throw new UnauthorizedAccessException(); } if (isReferee && (GetUserId() != referee.Id)) { throw new UnauthorizedAccessException(); } var dbUser = c.Get <User>(referee.Id); if (dbUser == null) { throw new Exception("Error.NotFound"); } var isNewEmail = false; if (referee.Email != dbUser.Email) { UsersController.CheckEmail(c, null, referee.Email); isNewEmail = true; } Mapper.MapExplicit(referee, dbUser, new string[] { "Name", "Email", "Mobile", "AvatarImgUrl" }); if (!String.IsNullOrWhiteSpace(referee.Password)) { UsersController.UpdatePassword(dbUser, referee.Password); dbUser.EmailConfirmed = true; } var result = c.Update(dbUser, t); if (isNewEmail) { PlayersController.UpdateUserInGlobalDirectory(Request, dbUser.Id, referee.Email); } return result; })); }