protected override Account ExecuteProcedure()
        {
            var repository = Repository.Create <IAccountRepository>();
            var account    = repository.Find(_id, QueryLevel.Single);

            if (this.Name != null)
            {
                account.Name = this.Name;
            }
            if (this.Email != null)
            {
                account.Email = this.Email;
            }
            if (this.IsEnabled != null)
            {
                account.Status.IsEnabled = this.IsEnabled.Value;
            }
            if (this.MobileNumber != null)
            {
                account.MobileNumber = this.MobileNumber;
            }
            if (this.Password != null)
            {
                account.SetPasswordAndEncrypt(this.Password);
            }
            if (this.RoleIds != null)
            {
                var roles = RoleCommon.FindsBy(this.RoleIds);
                account.Roles = roles;
            }
            repository.Update(account);
            return(account);
        }
        protected override Account ExecuteProcedure()
        {
            var roles = _roleIds != null && _roleIds.Count() > 0 ? RoleCommon.FindsBy(_roleIds) : Array.Empty <Role>();

            Account acc = new Account(_name, _password, roles)
            {
                Email        = this.Email ?? string.Empty,
                MobileNumber = this.MobileNumber ?? string.Empty
            };

            acc.Status.IsEnabled = this.IsEnabled ?? true;

            var repository = Repository.Create <IAccountRepository>();

            repository.Add(acc);

            return(acc);
        }