public Result UpdateMember(UserContext context, Member newMember) { //Get Existing Member var memQuery = new GetMemberByID_Q { MemberID = newMember.ID }; var existingMember = _queryDispatcher.Dispatch <GetMemberByID_Q, Member>(context.AccessToken, memQuery); if (existingMember == null) { throw new Exception("Unable to retrive Member for Update Request"); } var memCmd = new UpdateMember_C { ID = existingMember.ID, UserName = existingMember.UserName, //THIS FIELD WON'T BE UPDATED RSIHandle = newMember.RSIHandle, UserType = newMember.UserType, RankID = newMember.RankID, IsActive = newMember.IsActive }; var memResult = _commandDispatcher.Dispatch <UpdateMember_C>(context, memCmd); if (memResult.Status != System.Net.HttpStatusCode.OK) { throw new Exception("Error updating Member in DB"); } //If Rank Changed, Insert Row into History if (existingMember.RankID != newMember.RankID) { var rhCmd = new CreateMemberRankHistory_C { MemberID = existingMember.ID, PreviousRankID = existingMember.RankID, NewRankID = newMember.RankID }; var rhResult = _commandDispatcher.Dispatch <CreateMemberRankHistory_C>(context, rhCmd); if (rhResult.Status != System.Net.HttpStatusCode.OK) { throw new Exception("Error creating MemberRankHistory in DB"); } } return(memResult); }
public Result CreateMember(UserContext context, Member member) { //Confirm OrganizationID is Valid var orgQuery = new GetOrganizationByID_Q { ID = member.OrganizationID }; var orgResult = _queryDispatcher.Dispatch <GetOrganizationByID_Q, Organization>(context.AccessToken, orgQuery); if (orgResult == null) { throw new ArgumentException("Unable to Locate Organization when Creating Member"); } //Create Member var memCmd = new CreateMember_C { UserName = member.UserName, RSIHandle = member.RSIHandle, OrganizationID = member.OrganizationID, UserType = member.UserType, RankID = member.RankID, IsActive = true }; var memResult = _commandDispatcher.Dispatch <CreateMember_C>(context, memCmd); if (memResult.Status != System.Net.HttpStatusCode.OK) { throw new Exception("Error creating Member in DB"); } int memID = Convert.ToInt32(memResult.ItemIDs.FirstOrDefault()); //Create Credential for Member SHA256Managed hashalgo = new SHA256Managed(); byte[] hash = hashalgo.ComputeHash(System.Text.Encoding.UTF8.GetBytes(member.UserName.ToLower())); string passwordHash = BitConverter.ToString(hash); passwordHash = passwordHash.Replace("-", ""); var credCmd = new CreateCredential_C { MemberID = memID, UserName = member.UserName, PasswordHash = passwordHash, OrganizationID = member.OrganizationID }; var credResult = _commandDispatcher.Dispatch <CreateCredential_C>(context, credCmd); if (credResult.Status != System.Net.HttpStatusCode.OK) { throw new Exception("Error creating Member Credential in DB"); } //Create RankHistory for Member var rhCmd = new CreateMemberRankHistory_C { MemberID = memID, PreviousRankID = member.RankID, NewRankID = member.RankID }; var rhResult = _commandDispatcher.Dispatch <CreateMemberRankHistory_C>(context, rhCmd); if (rhResult.Status != System.Net.HttpStatusCode.OK) { throw new Exception("Error creating MemberRankHistory in DB"); } return(memResult); }