protected override void OnDelete(Entity item, out string message, ref Action <Entity> afterConfirm)
        {
            if (afterConfirm == null)
            {
                throw new ArgumentNullException(nameof(afterConfirm));
            }

            message = ((SalarySchedule)item).Effectivity.ToString("yyyy MMMM dd");

            afterConfirm = currentItem =>
            {
                try
                {
                    var deletedItem = (SalarySchedule)currentItem;


                    deletedItem.RowStatus = RecordStatus.DeletedRecord;

                    //Save to the Database
                    var dataWriter = new SalaryScheduleDataWriter(App.CurrentUser.User.Username, deletedItem);
                    dataWriter.SaveChanges();


                    ItemDataCollection.Remove((SalarySchedule)currentItem);

                    App.LogAction("Payroll Salary Schedule",
                                  "Deleted Salary Schedule : " + deletedItem.Effectivity.ToString("yyyy MMMM dd"));
                }
                catch (Exception ex)
                {
                    MessageDialog.ShowError(ex, this);
                }
            };
        }
        public bool FileSave()
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                if (!DataIsValid())
                {
                    return(false);
                }

                ItemData.Effectivity = dtEffectivityDate.Value;
                ItemData.Remarks     = txtRemarks.Text;

                //SalaryGrades
                foreach (var gridElement in SGGrid.PrimaryGrid.Rows)
                {
                    var row     = (GridRow)gridElement;
                    var rowData = (SalaryGrade)row.Tag;
                    if (rowData == null)
                    {
                        continue;
                    }

                    rowData.Step1 = decimal.Parse(row["Step1"].Value.ToString());
                    rowData.Step2 = decimal.Parse(row["Step2"].Value.ToString());
                    rowData.Step3 = decimal.Parse(row["Step3"].Value.ToString());
                    rowData.Step4 = decimal.Parse(row["Step4"].Value.ToString());
                    rowData.Step5 = decimal.Parse(row["Step5"].Value.ToString());
                    rowData.Step6 = decimal.Parse(row["Step6"].Value.ToString());
                    rowData.Step7 = decimal.Parse(row["Step7"].Value.ToString());
                    rowData.Step8 = decimal.Parse(row["Step8"].Value.ToString());
                }


                //Position Salary Grade
                foreach (var gridElement in PositionGrid.PrimaryGrid.Rows)
                {
                    var row     = (GridRow)gridElement;
                    var rowData = (PositionSalaryGrade)row.Tag;
                    if (rowData == null)
                    {
                        continue;
                    }

                    rowData.SG = int.Parse(row["SalaryGrade"].Value.ToString());
                }


                //Save to the Database
                var dataWriter = new SalaryScheduleDataWriter(App.CurrentUser.User.Username, ItemData);
                dataWriter.SaveChanges();

                DirtyStatus.Clear();
                DialogResult = DialogResult.OK;
                return(true);
            }
            catch (Exception ex)
            {
                MessageDialog.ShowError(ex, this);
                return(false);
            }
        }