/// <summary>
        /// The reset default enable.
        /// </summary>
        public async void ResetDefaultEnable()
        {
            this.AssetSettingMakeModel = new AssetClassSetting();
            this.AssetSettingMakeModel = await RegisteredAssetFunction.GetAssetSetting();

            this.IsAssetRegisterEnable = true;
            this.IsReportingCompanyEnable = true;
            this.IsEffectiveDateEnable = false;

            this.IsControlEnable = true;
            this.IsAcquisitionDateEnable = true;
            this.IsNetAssetCostEnable = true;
            this.IsAssetGSTEnable = true;
            this.IsLocationEnable = true;

            this.GetDataForEquipSearch();
            this.GetDataForFeatureGrid();
        }
        /// <summary>
        /// The on step async.
        /// </summary>
        /// <param name="stepName">
        /// The step name.
        /// </param>
        /// <returns>
        /// The <see cref="Task"/>.
        /// </returns>
        public override async Task OnStepAsync(object stepName)
        {
            bool canProcess;
            var step = (EnumSteps)Enum.Parse(typeof(EnumSteps), stepName.ToString());
            switch (step)
            {
                case EnumSteps.Start:
                    this._CurrentEnumStep = EnumSteps.Start;
                    this.AssetSettings = await AssetSettingsFunctions.ReadAssetClassSettings();
                    var allCategoryDefault = new ObservableCollection<EquipCategory>(await AssetSettingsFunctions.ReadAllCategoryDefaultAssetSystemSettingsAsync());
                    allCategoryDefault.Add(new EquipCategory
                    {
                        EquipCatId = -1,
                        Description = "<None>",
                    });
                    this.Category =
                    allCategoryDefault.Select(
                    cate => new DropdownList { Description = cate.Description, ID = cate.EquipCatId })
                    .OrderBy(item => item.Description)
                    .ToList();
                    if (this.AssetSettings != null)
                    {
                        this.SelectedCategory = this.Category.FirstOrDefault(x => x.ID == this.AssetSettings.DefaultCategoryID);
                    }

                    this.SetBackgroundToNotEdit();
                    this.SetActionCommandsAsync();
                    break;
                case EnumSteps.Edit:
                    if (await this.LockAsync())
                    {
                        this.SetBackgroundToEdit();
                        this.RaiseActionsWhenChangeStep(EnumScreen.AssetSettings, EnumSteps.Edit);
                        this._CurrentEnumStep = EnumSteps.Edit;
                        this.SetActionCommandsAsync();
                    }

                    break;
                case EnumSteps.Save:
                    this.Validate();
                    if (this.HasErrors == false)
                    {
                        this.ValidateNotError();
                        this.ClearNotifyErrors();
                        await this.UnLockAsync();
                        this.SetBackgroundToNotEdit();
                        if (this.SelectedCategory != null)
                        {
                            this.AssetSettings.DefaultCategoryID = this.SelectedCategory.ID;
                        }
                        else
                        {
                            await this.CheckCategoryIsEnalbe(this.CurrentCategory);
                            this.AssetSettings.DefaultCategoryID = this.SelectedCategory.ID;
                        }

                        if (!this.AssetSettings.IncludeMake)
                        {
                            this.AssetSettings.IncludeModel = false;
                        }

                        await AssetSettingsFunctions.UpdateAssetClassSettings(this.AssetSettings);
                        this.RaiseActionsWhenChangeStep(EnumScreen.AssetSettings, EnumSteps.Save);
                        this._CurrentEnumStep = EnumSteps.Save;
                        await this.OnStepAsync(EnumSteps.Start);
                        this.SetActionCommandsAsync();
                    }
                    else
                    {
                        this._CurrentEnumStep = EnumSteps.Error;
                        this.SetActionCommandsAsync();
                        this.OnErrorHyperlinkSelected();
                    }

                    break;
                case EnumSteps.Cancel:
                    canProcess = await this.CheckIfUnSavedChanges();
                    if (canProcess)
                    {
                        this.ValidateNotError();
                        this.ClearNotifyErrors();
                        await this.UnLockAsync();
                        this.SetBackgroundToNotEdit();
                        this._CurrentEnumStep = EnumSteps.Cancel;
                        await this.OnStepAsync(EnumSteps.Start);
                        this.RaiseActionsWhenChangeStep(EnumScreen.AssetSettings, EnumSteps.Cancel);
                        this.SetActionCommandsAsync();
                    }

                    break;
                case EnumSteps.Error:
                    NotificationErrorView errorPopup = new NotificationErrorView();
                    NotificationErrorViewModel errorPopupViewModel = new NotificationErrorViewModel();
                    errorPopupViewModel.listCustomHyperlink = this.ListErrorHyperlink;
                    errorPopup.DataContext = errorPopupViewModel;
                    errorPopup.Style = (Style)Application.Current.FindResource("RadWindowStyleNew");
                    errorPopup.ShowDialog();
                    break;
            }
        }