private void Dg_storageCost_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {//selection
            try
            {
                if (sender != null)
                {
                    SectionData.StartAwait(grid_main);
                }

                SectionData.clearValidate(tb_name, p_errorName);
                SectionData.clearValidate(tb_cost, p_errorCost);
                if (dg_storageCost.SelectedIndex != -1)
                {
                    storageCost      = dg_storageCost.SelectedItem as StorageCost;
                    this.DataContext = storageCost;

                    if (storageCost != null)
                    {
                        tb_cost.Text = SectionData.DecTostring(storageCost.cost);

                        #region delete
                        if (storageCost.canDelete)
                        {
                            txt_deleteButton.Text    = MainWindow.resourcemanager.GetString("trDelete");
                            txt_delete_Icon.Kind     = MaterialDesignThemes.Wpf.PackIconKind.Delete;
                            tt_delete_Button.Content = MainWindow.resourcemanager.GetString("trDelete");
                        }

                        else
                        {
                            if (storageCost.isActive == 0)
                            {
                                txt_deleteButton.Text = MainWindow.resourcemanager.GetString("trActive");
                                txt_delete_Icon.Kind  =
                                    MaterialDesignThemes.Wpf.PackIconKind.Check;
                                tt_delete_Button.Content = MainWindow.resourcemanager.GetString("trActive");
                            }
                            else
                            {
                                txt_deleteButton.Text    = MainWindow.resourcemanager.GetString("trInActive");
                                txt_delete_Icon.Kind     = MaterialDesignThemes.Wpf.PackIconKind.Cancel;
                                tt_delete_Button.Content = MainWindow.resourcemanager.GetString("trInActive");
                            }
                        }
                        #endregion
                    }
                }
                if (sender != null)
                {
                    SectionData.EndAwait(grid_main);
                }
            }
            catch (Exception ex)
            {
                if (sender != null)
                {
                    SectionData.EndAwait(grid_main);
                }
                SectionData.ExceptionMessage(ex, this);
            }
        }
        private async void Btn_add_Click(object sender, RoutedEventArgs e)
        {//add
            try
            {
                if (sender != null)
                {
                    SectionData.StartAwait(grid_main);
                }

                if (MainWindow.groupObject.HasPermissionAction(basicsPermission, MainWindow.groupObjects, "add") || SectionData.isAdminPermision())
                {
                    //chk empty name
                    SectionData.validateEmptyTextBox(tb_name, p_errorName, tt_errorName, "trEmptyNameToolTip");
                    //chk empty delivery cost
                    SectionData.validateEmptyTextBox(tb_cost, p_errorCost, tt_errorCost, "trEmptyStoreCost");

                    if ((!tb_name.Text.Equals("")) && (!tb_cost.Text.Equals("")))
                    {
                        StorageCost storageCost = new StorageCost();

                        storageCost.name         = tb_name.Text;
                        storageCost.cost         = decimal.Parse(tb_cost.Text);
                        storageCost.note         = tb_notes.Text;
                        storageCost.createUserId = MainWindow.userID;
                        storageCost.isActive     = 1;

                        int s = await storageCostModel.save(storageCost);

                        if (s > 0)
                        {
                            Toaster.ShowSuccess(Window.GetWindow(this), message: MainWindow.resourcemanager.GetString("trPopAdd"), animation: ToasterAnimation.FadeIn);
                            Btn_clear_Click(null, null);

                            await RefreshStorageCostList();

                            Tb_search_TextChanged(null, null);
                        }
                        else
                        {
                            Toaster.ShowWarning(Window.GetWindow(this), message: MainWindow.resourcemanager.GetString("trPopError"), animation: ToasterAnimation.FadeIn);
                        }
                    }
                }
                else
                {
                    Toaster.ShowInfo(Window.GetWindow(this), message: MainWindow.resourcemanager.GetString("trdontHavePermission"), animation: ToasterAnimation.FadeIn);
                }
                if (sender != null)
                {
                    SectionData.EndAwait(grid_main);
                }
            }
            catch (Exception ex)
            {
                if (sender != null)
                {
                    SectionData.EndAwait(grid_main);
                }
                SectionData.ExceptionMessage(ex, this);
            }
        }