Exemplo n.º 1
0
        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;
            }));
        }