private void TvZonesSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            HideAll();
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[0]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[1]))
            {
                cmbCategories.SelectedIndex = -1;
                cmbCategories.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[0]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[2]))
            {
                cmbNames.DisplayMemberPath = "Name";
                cmbNames.SelectedValuePath = "PropID";
                cmbNames.Tag           = SearchResources.PropName;
                cmbNames.ItemsSource   = PropsService.Instanse.GetAll();
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[0]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[3]))
            {
                dtpInDate.Value  = PropsService.GetMinCreatedOn();
                dtpOutDate.Value = PropsService.GetMaxCreatedOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[0]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[4]))
            {
                cmbInNo.ItemsSource    = cmbOutNo.ItemsSource = PropsService.GetAllPropNos();
                cmbInNo.SelectedIndex  = 0;
                cmbOutNo.SelectedIndex = cmbOutNo.Items.Count - 1;
                gNo.Visibility         = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[0]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[5]))
            {
                cmbStatus.SelectedIndex = -1;
                cmbStatus.Visibility    = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[6]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[7]))
            {
                cmbCategories.SelectedIndex = -1;
                cmbCategories.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[6]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[8]))
            {
                cmbNames.DisplayMemberPath = "Name";
                cmbNames.SelectedValuePath = "MaterialID";
                cmbNames.Tag           = SearchResources.MaterialName;
                cmbNames.ItemsSource   = MaterialsService.Instanse.GetAll();
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[6]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[9]))
            {
                dtpInDate.Value  = MaterialsService.GetMinCreatedOn();
                dtpOutDate.Value = MaterialsService.GetMaxCreatedOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[6]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[10]))
            {
                tbInAmount.Text    = MaterialsService.GetMinLowestAmount().ToString();
                tbOutAmount.Text   = MaterialsService.GetMaxLowestAmount().ToString();
                gAmount.Visibility = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[11]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[12]))
            {
                cmbNames.DisplayMemberPath = "UserName";
                cmbNames.SelectedValuePath = "UserID";
                cmbNames.Tag           = SearchResources.UserName;
                cmbNames.ItemsSource   = UsersService.Instanse.GetAll(false, false);
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[11]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[13]))
            {
                dtpInDate.Value  = RepositoryMaterialsService.GetMinRegisteredOn();
                dtpOutDate.Value = RepositoryMaterialsService.GetMaxRegisteredOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[11]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[14]))
            {
                cmbTargetApplicants.ItemsSource   = RepositoryMaterialsService.Instanse.GetAllTargetApplicants(false);
                cmbTargetApplicants.SelectedIndex = -1;
                cmbTargetApplicants.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[11]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[15]))
            {
                tbInAmount.Text    = RepositoryMaterialsService.GetMinAmount().ToString();
                tbOutAmount.Text   = RepositoryMaterialsService.GetMaxAmount().ToString();
                gAmount.Visibility = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[16]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[17]))
            {
                cmbCategories.SelectedIndex = -1;
                cmbCategories.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[16]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[18]))
            {
                cmbNames.DisplayMemberPath = "Name";
                cmbNames.SelectedValuePath = "ItemID";
                cmbNames.Tag           = SearchResources.InItemsByName;
                cmbNames.ItemsSource   = ItemsService.Instanse.GetAll();
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[16]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[19]))
            {
                dtpInDate.Value  = ItemsService.GetMinCreatedOn();
                dtpOutDate.Value = ItemsService.GetMaxCreatedOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[16]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[20]))
            {
                tbInAmount.Text    = ItemsService.GetMinLowestAmount().ToString();
                tbOutAmount.Text   = ItemsService.GetMaxLowestAmount().ToString();
                gAmount.Visibility = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[21]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[22]))
            {
                cmbNames.DisplayMemberPath = "UserName";
                cmbNames.SelectedValuePath = "UserID";
                cmbNames.Tag           = SearchResources.UserName;
                cmbNames.ItemsSource   = UsersService.Instanse.GetAll(false, false);
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[21]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[23]))
            {
                dtpInDate.Value  = RepositoryItemsService.GetMinRegisteredOn();
                dtpOutDate.Value = RepositoryItemsService.GetMaxRegisteredOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[21]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[24]))
            {
                cmbTargetApplicants.ItemsSource   = RepositoryItemsService.Instanse.GetAllTargetApplicants(false);
                cmbTargetApplicants.SelectedIndex = -1;
                cmbTargetApplicants.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[21]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[25]))
            {
                tbInAmount.Text    = RepositoryItemsService.GetMinAmount().ToString();
                tbOutAmount.Text   = RepositoryItemsService.GetMaxAmount().ToString();
                gAmount.Visibility = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[26]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[27]))
            {
                cmbNames.DisplayMemberPath = "Name";
                cmbNames.SelectedValuePath = "LabID";
                cmbNames.Tag           = SearchResources.InLabsByName;
                cmbNames.ItemsSource   = LabsService.Instanse.GetAll();
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[26]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[28]))
            {
                dtpInDate.Value  = LabsService.GetMinCreatedOn();
                dtpOutDate.Value = LabsService.GetMaxCreatedOn();
                gDate.Visibility = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[26]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[29]))
            {
                cmbInNo.ItemsSource    = cmbOutNo.ItemsSource = LabsService.Instanse.GetAllPlaqueNos();
                cmbInNo.SelectedIndex  = 0;
                cmbOutNo.SelectedIndex = cmbOutNo.Items.Count - 1;
                gNo.Visibility         = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[30]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[31]))
            {
                cmbNames.DisplayMemberPath = "Name";
                cmbNames.SelectedValuePath = "LabID";
                cmbNames.Tag           = SearchResources.InLabPropsByLabName;
                cmbNames.ItemsSource   = LabsService.Instanse.GetAll();
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[30]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[32]))
            {
                dtpInDate.Value  = LabPropsService.GetMinAssignedOn();
                dtpOutDate.Value = LabPropsService.GetMaxAssignedOn();
                gDate.Visibility = Visibility.Visible;
            }

            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[33]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[34]))
            {
                cmbNames.DisplayMemberPath = "UserName";
                cmbNames.SelectedValuePath = "UserID";
                cmbNames.Tag           = SearchResources.InLogsByUserName;
                cmbNames.ItemsSource   = UsersService.Instanse.GetAll(false, false);
                cmbNames.SelectedIndex = -1;
                cmbNames.Visibility    = Visibility.Visible;
            }
            if (ReferenceEquals(e.NewValue, tvZones.ActualItems()[33]) ||
                ReferenceEquals(e.NewValue, tvZones.ActualItems()[35]))
            {
                dtpInDate.Value  = LogsService.GetMinLoggedOn();
                dtpOutDate.Value = LogsService.GetMaxLoggedOn();
                gDate.Visibility = Visibility.Visible;
            }
        }
        protected override void SaveWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            OnSaving = true;
            Dispatcher.Invoke(new Action(() => {
                aiLoader.Visibility = Visibility.Visible;
                switch (tvZones.ActualIndex())
                {
                case 6:
                case 10:
                case 11:
                case 16:
                case 20:
                case 21:
                case 25:
                    int temp;
                    if (!int.TryParse(tbInAmount.Text, out temp))
                    {
                        tbInAmount.FocusAndSelect();
                        return;
                    }
                    if (!int.TryParse(tbOutAmount.Text, out temp))
                    {
                        tbOutAmount.FocusAndSelect();
                        return;
                    }
                    break;
                }

                switch (tvZones.ActualIndex())
                {
                case 0:
                    e.Result = PropsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?,
                                                            cmbNames.SelectedValue as Guid?, dtpInDate.Value,
                                                            dtpOutDate.Value, chbDateOutside.IsChecked ?? false,
                                                            cmbInNo.SelectedValue as int?,
                                                            cmbOutNo.SelectedValue as int?,
                                                            chbNoOutside.IsChecked ?? false,
                                                            (ReportType)cmbStatus.SelectedIndex);
                    break;

                case 1:
                    e.Result = PropsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?, null, null, null,
                                                            false, null, null, false);
                    break;

                case 2:
                    e.Result = PropsService.Instanse.GetAll(null, cmbNames.SelectedValue as Guid?, null, null, false,
                                                            null, null, false);
                    break;

                case 3:
                    e.Result = PropsService.Instanse.GetAll(null, null, dtpInDate.Value, dtpOutDate.Value,
                                                            chbDateOutside.IsChecked ?? false, null, null, false);
                    break;

                case 4:
                    e.Result = PropsService.Instanse.GetAll(null, null, null, null, false,
                                                            cmbInNo.SelectedValue as int?,
                                                            cmbOutNo.SelectedValue as int?,
                                                            chbNoOutside.IsChecked ?? false);
                    break;

                case 5:
                    e.Result = PropsService.Instanse.GetAll(null, null, null, null, false, null, null, false,
                                                            (ReportType)cmbStatus.SelectedIndex);
                    break;

                case 6:
                    e.Result = MaterialsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?,
                                                                cmbNames.SelectedValue as Guid?, dtpInDate.Value,
                                                                dtpOutDate.Value, chbDateOutside.IsChecked ?? false,
                                                                int.Parse(tbInAmount.Text),
                                                                int.Parse(tbOutAmount.Text),
                                                                chbAmountOutside.IsChecked ?? false);
                    break;

                case 7:
                    e.Result = MaterialsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?, null, null,
                                                                null, false, null, null, false);
                    break;

                case 8:
                    e.Result = MaterialsService.Instanse.GetAll(null, cmbNames.SelectedValue as Guid?, null, null,
                                                                false, null, null, false);
                    break;

                case 9:
                    e.Result = MaterialsService.Instanse.GetAll(null, null, dtpInDate.Value, dtpOutDate.Value,
                                                                chbDateOutside.IsChecked ?? false, null, null, false);
                    break;

                case 10:
                    e.Result = MaterialsService.Instanse.GetAll(null, null, null, null, false,
                                                                int.Parse(tbInAmount.Text),
                                                                int.Parse(tbOutAmount.Text),
                                                                chbAmountOutside.IsChecked ?? false);
                    break;

                case 11:
                    e.Result = RepositoryMaterialsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?,
                                                                          dtpInDate.Value, dtpOutDate.Value,
                                                                          chbDateOutside.IsChecked ?? false,
                                                                          cmbTargetApplicants.Text,
                                                                          int.Parse(tbInAmount.Text),
                                                                          int.Parse(tbOutAmount.Text),
                                                                          chbAmountOutside.IsChecked ?? false);
                    break;

                case 12:
                    e.Result = RepositoryMaterialsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?, null,
                                                                          null, false, null, null, null, false);
                    break;

                case 13:
                    e.Result = RepositoryMaterialsService.Instanse.GetAll(null, dtpInDate.Value, dtpOutDate.Value,
                                                                          chbDateOutside.IsChecked ?? false, null,
                                                                          null, null, false);
                    break;

                case 14:
                    e.Result = RepositoryMaterialsService.Instanse.GetAll(null, null, null, false,
                                                                          cmbTargetApplicants.Text, null, null,
                                                                          false);
                    break;

                case 15:
                    e.Result = RepositoryMaterialsService.Instanse.GetAll(null, null, null, false, null,
                                                                          int.Parse(tbInAmount.Text),
                                                                          int.Parse(tbOutAmount.Text),
                                                                          chbAmountOutside.IsChecked ?? false);
                    break;

                case 16:
                    e.Result = ItemsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?,
                                                            cmbNames.SelectedValue as Guid?, dtpInDate.Value,
                                                            dtpOutDate.Value, chbDateOutside.IsChecked ?? false,
                                                            int.Parse(tbInAmount.Text), int.Parse(tbOutAmount.Text),
                                                            chbAmountOutside.IsChecked ?? false);
                    break;

                case 17:
                    e.Result = ItemsService.Instanse.GetAll(cmbCategories.SelectedValue as Guid?, null, null, null,
                                                            false, null, null, false);
                    break;

                case 18:
                    e.Result = ItemsService.Instanse.GetAll(null, cmbNames.SelectedValue as Guid?, null, null, false,
                                                            null, null, false);
                    break;

                case 19:
                    e.Result = ItemsService.Instanse.GetAll(null, null, dtpInDate.Value, dtpOutDate.Value,
                                                            chbDateOutside.IsChecked ?? false, null, null, false);
                    break;

                case 20:
                    e.Result = ItemsService.Instanse.GetAll(null, null, null, null, false,
                                                            int.Parse(tbInAmount.Text), int.Parse(tbOutAmount.Text),
                                                            chbAmountOutside.IsChecked ?? false);
                    break;

                case 21:
                    e.Result = RepositoryItemsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?,
                                                                      dtpInDate.Value, dtpOutDate.Value,
                                                                      chbDateOutside.IsChecked ?? false,
                                                                      cmbTargetApplicants.Text,
                                                                      int.Parse(tbInAmount.Text),
                                                                      int.Parse(tbOutAmount.Text),
                                                                      chbAmountOutside.IsChecked ?? false);
                    break;

                case 22:
                    e.Result = RepositoryItemsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?, null, null,
                                                                      false, null, null, null, false);
                    break;

                case 23:
                    e.Result = RepositoryItemsService.Instanse.GetAll(null, dtpInDate.Value, dtpOutDate.Value,
                                                                      chbDateOutside.IsChecked ?? false, null, null,
                                                                      null, false);
                    break;

                case 24:
                    e.Result = RepositoryItemsService.Instanse.GetAll(null, null, null, false,
                                                                      cmbTargetApplicants.Text, null, null, false);
                    break;

                case 25:
                    e.Result = RepositoryItemsService.Instanse.GetAll(null, null, null, false, null,
                                                                      int.Parse(tbInAmount.Text),
                                                                      int.Parse(tbOutAmount.Text),
                                                                      chbAmountOutside.IsChecked ?? false);
                    break;

                case 26:
                    e.Result = LabsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?,
                                                           cmbInNo.SelectedValue as int?,
                                                           cmbOutNo.SelectedValue as int?,
                                                           chbNoOutside.IsChecked ?? false, dtpInDate.Value,
                                                           dtpOutDate.Value, chbDateOutside.IsChecked ?? false);
                    break;

                case 27:
                    e.Result = LabsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?, null, null, false, null,
                                                           null, false);
                    break;

                case 28:
                    e.Result = LabsService.Instanse.GetAll(null, cmbInNo.SelectedValue as int?,
                                                           cmbOutNo.SelectedValue as int?,
                                                           chbNoOutside.IsChecked ?? false, null, null, false);
                    break;

                case 29:
                    e.Result = LabsService.Instanse.GetAll(null, null, null, false, dtpInDate.Value,
                                                           dtpOutDate.Value, chbDateOutside.IsChecked ?? false);
                    break;

                case 30:
                    e.Result = LabPropsService.GetAll(cmbNames.SelectedValue as Guid?, dtpInDate.Value,
                                                      dtpOutDate.Value, chbDateOutside.IsChecked ?? false);
                    break;

                case 31:
                    e.Result = LabPropsService.GetAll(cmbNames.SelectedValue as Guid?, null, null, false);
                    break;

                case 32:
                    e.Result = LabPropsService.GetAll(null, dtpInDate.Value, dtpOutDate.Value,
                                                      chbDateOutside.IsChecked ?? false);
                    break;

                case 33:
                    e.Result = LogsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?, dtpInDate.Value,
                                                           dtpOutDate.Value, chbDateOutside.IsChecked ?? false);
                    break;

                case 34:
                    e.Result = LogsService.Instanse.GetAll(cmbNames.SelectedValue as Guid?, null, null, false);
                    break;

                case 35:
                    e.Result = LogsService.Instanse.GetAll(null, dtpInDate.Value, dtpOutDate.Value,
                                                           chbDateOutside.IsChecked ?? false);
                    break;
                }
            }));
        }