internal IValidationResult AccessCode(AccessCode accessCode)
        {
            IValidationResult validationResult = new ValidationResult();

            // Do not permit site admins to be added.
            if (accessCode.Role == Role.SiteAdmin)
            {
                validationResult.AddError("Role.Type", "A SiteAdmin may not be added.");
            }

            // Null checks.
            if (accessCode.Description == string.Empty || accessCode.Description == null)
            {
                validationResult.AddError("Description.Null", "Description can not be empty or null.");
            }
            else
            {
                // Range checks.
                if (accessCode.Description.Length > 30)
                {
                    validationResult.AddError("Description.Length", "Description should be less than 30 characters in length.");
                }
            }

            return validationResult;
        }
        /// <summary>
        /// Add an access key to an account.
        /// </summary>
        /// <param name="accountId">The id of the account for which an access code should be added.</param>
        /// <param name="description">A short description for the new access code.</param>
        /// <param name="role">The role that.</param>
        /// <returns>Returns a randomly generated key.</returns>
        internal string AddAccessCode(int accountId, string description, Role role)
        {
            AccessCode accessCode = null;
            string generatedKey = string.Empty;

            // Retrieve the account.
            var account = this.doctrineShipsRepository.GetAccount(accountId);

            // Does the account exist?
            if (account != null)
            {
                accessCode = new AccessCode();

                // If this is a user account, use a shorter key.
                if (role == Role.User)
                {
                    generatedKey = Security.GenerateRandomString(6);
                }
                else
                {
                    generatedKey = Security.GenerateRandomString(16);
                }

                accessCode.AccountId = accountId;
                accessCode.Role = role;
                accessCode.Description = description;
                accessCode.Salt = Security.GenerateSalt(128);
                accessCode.Key = Security.GenerateHash(generatedKey, accessCode.Salt);
                accessCode.LastLogin = DateTime.UtcNow;
                accessCode.DateCreated = DateTime.UtcNow;
                accessCode.IsActive = true;

                // Validate the new access code.
                if (this.doctrineShipsValidation.AccessCode(accessCode).IsValid == true)
                {
                    // Add the new access code and read it back.
                    accessCode = this.doctrineShipsRepository.CreateAccessCode(accessCode);
                    this.doctrineShipsRepository.Save();
                    logger.LogMessage("Access Code (Role: " + accessCode.Role + ") Added For Account Id: " + accessCode.AccountId, 2, "Message", MethodBase.GetCurrentMethod().Name);
                }
                else
                {
                    generatedKey = string.Empty;
                }
            }

            return generatedKey;
        }
 internal void UpdateAccessCode(AccessCode accessCode)
 {
     accessCode.ObjectState = ObjectState.Modified;
     this.unitOfWork.Repository<AccessCode>().Update(accessCode);
 }
 internal AccessCode CreateAccessCode(AccessCode accessCode)
 {
     accessCode.ObjectState = ObjectState.Added;
     this.unitOfWork.Repository<AccessCode>().Insert(accessCode);
     return accessCode;
 }
 internal AccessCode AddAccessCode(AccessCode accessCode)
 {
     this.unitOfWork.Repository<AccessCode>().Insert(accessCode);
     return accessCode;
 }
 public void UpdateAccessCode(AccessCode accessCode)
 {
     AccessCodeOperations.UpdateAccessCode(accessCode);
 }
 public AccessCode CreateAccessCode(AccessCode accessCode)
 {
     return AccessCodeOperations.CreateAccessCode(accessCode);
 }
 public AccessCode AddAccessCode(AccessCode accessCode)
 {
     return AccessCodeOperations.AddAccessCode(accessCode);
 }
 public IValidationResult AccessCode(AccessCode accessCode)
 {
     return AccountCheck.AccessCode(accessCode);
 }