Exemplo n.º 1
0
        //********************************************************************************************//
        private async Task StartViewerAsync(SqlDbViewer sql, int selected)
        {
            {
                Stopwatch sw = new Stopwatch();
                sw.Start();
                //Also works, but still got white window
                Console.WriteLine("5 - Calling runloader() ");
                //				sql.Show ();
                //				await Task.Delay (1000);
                runloader(sql);

                while (SqlDbViewer.IsviewerLoaded == false)
                {
                    await Task.Delay(1000);

                    int x = 0;
                }
                Console.WriteLine("6 - runloader() call completed");
                sw.Stop();
                Console.WriteLine($"7 - StartViewer took {sw.ElapsedMilliseconds} Milliseconds\r\n");
                alldone = true;
                //				return true;
            }
            //{
        }
Exemplo n.º 2
0
 public static void ClearGridviewControlStructure(SqlDbViewer instance, DataGrid Grid)
 {
     //No more viewers open, so clear entire gv[] control structure
     if (instance == null || Flags.DbSelectorOpen.ViewersList.Items.Count == 1)
     {
         // Remove ALL Viewers Data - There are no Viewers open apparently !
         for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
         {
             MainWindow.gv.window [x]          = null;
             MainWindow.gv.CurrentDb [x]       = "";
             MainWindow.gv.Datagrid [x]        = null;
             MainWindow.gv.ListBoxId [x]       = Guid.Empty;
             MainWindow.gv.SelectedViewerType  = -1;
             MainWindow.gv.ViewerSelectiontype = -1;
         }
         MainWindow.gv.ViewerCount   = 0;
         MainWindow.gv.PrettyDetails = "";
     }
     else
     {
         //Remove a SINGLE Viewer Windows data from Flags & gv[]
         DeleteViewerAndFlags( );
         Flags.CurrentSqlViewer.UpdateDbSelectorBtns(Flags.CurrentSqlViewer);
     }
 }
        /// <summary>
        /// Callback handler for db change notifications sent by another SqlDbViewer
        /// We have to try to work out whether we have one or more other viewers open
        /// and update their datagris as relevant
        /// </summary>
        /// <param name="sender"></param>
        //**************************************************************************************************************************************************************//
        public void DbHasChangedHandler(SqlDbViewer sender, DataGrid Grid, DataChangeArgs args)
        {
            if (Grid.Name == "BankGrid")
            {
                return;                         // Nothing to do, it was us that sent the broadcast
            }
            // Send it to the correct open viewer window
            if (Flags.SqlBankViewer != null)
            {
                Flags.SqlBankViewer.ReloadBankOnUpdateNotification(sender, Grid, args);
            }
            if (Flags.SqlCustViewer != null)
            {
                Flags.SqlCustViewer.ReloadCustomerOnUpdateNotification(sender, Grid, args);
            }
            if (Flags.SqlDetViewer != null)
            {
                Flags.SqlDetViewer.ReloadDetailsOnUpdateNotification(sender, Grid, args);
            }

            // See if we need to update EditDb window as well
            if (Flags.CurrentEditDbViewer != null)
            {
                Flags.CurrentEditDbViewer.DbChangedHandler(sender, Grid, args);
            }
            return;
        }
Exemplo n.º 4
0
		public void SubscribeToChangeEvents ()
		{
			// subscribe to Data chnaged event fired by SqlDbviewer
			SqlDbViewer sqlv = new SqlDbViewer ('C');
			// assign event handler function
			sqlv.NotifyOfDataChange += DbHasChanged;

		}
Exemplo n.º 5
0
        public void SubscribeToChangeEvents()
        {
            // subscribe to Data chngned event fired by SqlDbviewer
            SqlDbViewer sqlv = new SqlDbViewer('A');

            // assign event handler function
            sqlv.NotifyOfDataChange += DbHasChanged;
//			CollectionChanged += test;
            BankAccountObs.CollectionChanged += BankAccountObsChanged;
            EventHandlers.ShowSubscribersCount();
        }
Exemplo n.º 6
0
        public ViewEditdb(string currentDb, int index, object item, SqlDbViewer sqldb)
        {
            CurrentDb   = currentDb;
            SqlDbviewer = sqldb;
            Item        = item;
            Index       = index;

            // open a new instance of our EditDb Window
            Editdb = new EditDb(currentDb, 0, item, sqldb);
            Editdb.Show( );
        }
Exemplo n.º 7
0
        //private void Page5Button_Click(object sender, RoutedEventArgs e)
        //{
        //	testwin tw = new testwin();
        //	tw.Show();
        //}
        private void Page5Button_Click(object sender, RoutedEventArgs e)
        {
            if (tw != null)
            {
                tw.BringIntoView();
                return;
            }

            tw = new SqlDbViewer(-1);
            tw.Show();
        }
Exemplo n.º 8
0
 private void Page5_Click(object sender, RoutedEventArgs e)
 {
     //			testwin tw = new testwin();
     //			tw.Show();
     if (tw != null)
     {
         tw.BringIntoView();
         return;
     }
     tw = new SqlDbViewer(-1);
     tw.Show();
 }
Exemplo n.º 9
0
 public static void ClearWindowHandles(EditDb edb, SqlDbViewer sdb)
 {
     if (edb != null)
     {
         edDb             = edb;
         EditDbSelChange -= new EditDbGridSelectionChanged(edDb.resetEditDbindex);
     }
     if (sdb != null)
     {
         sqlDb          = sdb;
         SQLVSelChange -= new SQLViewerGridSelectionChanged(sqlDb.resetSQLDBindex);
     }
     ShowSubscribersCount();
 }
Exemplo n.º 10
0
        public void OnViewerLoaded(SqlDbViewer sqlv)
        {
            //Window is fully loaded, so we can go ahead and load the datagrids etc.
            OnWindowLoaded(null, null);
            this.Show();
            sqlv.BringIntoView();

            // We should start by loading The data - ending up  with it in  the OC ready for use.
            CustomerViewModel.LoadCustomersTask();
            CustomerViewModel.LoadCustomersIntoList();
            CustomerViewModel.LoadCustomerObsCollection();
//				CustomerViewModel.
            //finally  we should assign the data to the grid (x.ItemsSource=OC)
            sqlv.ShowCust_Click(null, null);
        }
Exemplo n.º 11
0
        private void runloader(SqlDbViewer NewSqlViewer)
        {
            //Thuis actually shows the window fully ?
            // and is why we are waiting for it to complete
            //before starting sql loading
            Stopwatch sw = new Stopwatch();

            sw.Start();
            Console.WriteLine("8 - runLoader - Showing Sql Window");
            NewSqlViewer.Show();
            //Task.WaitAll ();
            Console.WriteLine("9 - runLoader - Completed");
            sw.Stop();
            Console.WriteLine($"10 - runloader took {sw.ElapsedMilliseconds} Milliseconds ");
            //return true;
        }
Exemplo n.º 12
0
 /// Callback for db change notifications
 /// </summary>
 /// <param name="sender"></param>
 public void DbHasChangedHandler(SqlDbViewer sender, DataGrid Grid, DataChangeArgs args)
 {
     if (Flags.SqlBankViewer != null)
     {
         Flags.SqlBankViewer.ReloadBankOnUpdateNotification(sender, Grid, args);
     }
     if (Flags.SqlCustViewer != null)
     {
         Flags.SqlCustViewer.ReloadCustomerOnUpdateNotification(sender, Grid, args);
     }
     if (Flags.SqlDetViewer != null)
     {
         Flags.SqlDetViewer.ReloadDetailsOnUpdateNotification(sender, Grid, args);
     }
     return;
 }
Exemplo n.º 13
0
        /// <summary>
        ///  handle maintenance of global flags used to control mutliple
        ///  viewers and EditDb windows, called from Focus()
        /// </summary>
        /// <param name="instance"></param>
        /// <param name="CurrentDb"></param>
        public static void SetGridviewControlFlags(SqlDbViewer instance, DataGrid Grid)
        {
            //Setup global flags - first clear them all as relevant
            Flags.ActiveSqlViewer    = instance;
            Flags.ActiveSqlViewerStr = instance?.Name;
            //only do this if we are not closing a windows (Sends Grid=null)
            if (Grid != null)
            {
                if (Grid == Flags.SqlBankGrid)
                {
                    Flags.CurrentActiveGrid = Grid;
                    Flags.ActiveSqlGrid     = Grid;
                    Flags.ActiveSqlGridStr  = Grid?.Name;
                    Flags.SqlBankGrid       = Grid;
                    Flags.SqlBankGridStr    = Grid?.Name;
                    Flags.CurrentSqlViewer  = instance;
                }
                else if (Grid == Flags.SqlCustGrid)
                {
                    Flags.CurrentActiveGrid = Grid;
                    Flags.ActiveSqlGrid     = Grid;
                    Flags.ActiveSqlGridStr  = Grid?.Name;
                    Flags.SqlCustGrid       = Grid;
                    Flags.SqlCustGridStr    = Grid?.Name;
                    Flags.CurrentSqlViewer  = instance;
                }
                else if (Grid == Flags.SqlDetGrid)
                {
                    Flags.CurrentActiveGrid = Grid;
                    Flags.ActiveSqlGrid     = Grid;
                    Flags.ActiveSqlGridStr  = Grid?.Name;
                    Flags.SqlDetGrid        = Grid;
                    Flags.SqlDetGridStr     = Grid?.Name;
                    Flags.CurrentSqlViewer  = instance;
                }
            }
            else
            {
                // we need to clear the  details in Gridviewer flag system
                ClearGridviewControlStructure(instance, Grid);
            }
#if SHOWFLAGS
            ListGridviewControlFlags();
#endif
        }
Exemplo n.º 14
0
        public static void ClearGridviewControlStructure(SqlDbViewer instance, DataGrid Grid)
        {
            //No more viewers open, so clear control structure
            if (instance == null || Flags.DbSelectorOpen.ViewersList.Items.Count == 1)
            {
                // Remove ALL Viewers Data - There are no Viewers open apparently !
                for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
                {
                    MainWindow.gv.window[x]           = null;
                    MainWindow.gv.CurrentDb[x]        = "";
                    MainWindow.gv.Datagrid[x]         = null;
                    MainWindow.gv.ListBoxId[x]        = Guid.Empty;
                    MainWindow.gv.SelectedViewerType  = -1;
                    MainWindow.gv.ViewerSelectiontype = -1;
                }
                MainWindow.gv.ViewerCount   = 0;
                MainWindow.gv.PrettyDetails = "";
            }
            else
            {
                //Remove a SINGLE Viewer Windows data
                SqlDbViewer.DeleteViewerAndFlags();
                Flags.CurrentSqlViewer.UpdateDbSelectorBtns(Flags.CurrentSqlViewer);

                //	for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
                //	{
                //		if (MainWindow.gv.ListBoxId[x] == (Guid)instance.Tag)
                //		{
                //			//remove all record of it's very existence
                //			MainWindow.gv.window[x].Close ();
                //			MainWindow.gv.window[x] = null;
                //			MainWindow.gv.Datagrid[x] = null;
                //			MainWindow.gv.CurrentDb[x] = "";
                //			MainWindow.gv.ListBoxId[x] = Guid.Empty;
                //			MainWindow.gv.SelectedViewerType = -1;
                //			MainWindow.gv.ViewerSelectiontype = -1;
                //			MainWindow.gv.ViewerCount--;
                //			break;
                //		}
                //	}
            }
            //Flags.CurrentSqlViewer.UpdateDbSelectorBtns (Flags.CurrentSqlViewer);
        }
Exemplo n.º 15
0
 private async Task <string> xStartViewer(SqlDbViewer sql, int selected)
 {
     {
         Stopwatch sw = new Stopwatch();
         sw.Start();
         //Also works, but still got white window
         Console.WriteLine("5 - Calling runloader() ");
         //				sql.Show ();
         runloader(sql);
         //Task.Run (() => runloader (sql));
         Console.WriteLine("6 - runloader() call completed");
         sw.Stop();
         Console.WriteLine($"7 - StartViewer took {sw.ElapsedMilliseconds} Milliseconds\r\n");
         return("All done in StartViewer");
     }
     //{
     //	Console.WriteLine ("Calling runloader() ");
     //	await runloader (NewSqlViewer);
     //	Console.WriteLine ("runloader() call completed");
     //}
     //return NewSqlViewer;
 }
Exemplo n.º 16
0
        private void Page5_Click(object sender, RoutedEventArgs e)
        {
            SqlDbViewer tw = new SqlDbViewer(-1);

            tw.Show();
        }
Exemplo n.º 17
0
        //Remove a SINGLE Viewer Windows data from Flags & gv[]
        public static bool DeleteViewerAndFlags(int index = -1, string currentDb = "")
        {
            int         x = index;
            SqlDbViewer sqlv;                                    // x = GridView[] index if received

            if (Flags.CurrentSqlViewer == null)
            {
                return(false);
            }
            Guid        tag = ( Guid )Flags.CurrentSqlViewer?.Tag;
            ListBoxItem lbi = new ListBoxItem( );

            if (x == -1)
            {             // Delete all
                for (int z = 0; z < MainWindow.gv.MaxViewers; z++)
                {
                    DbSelector.UpdateControlFlags(null, null, MainWindow.gv.PrettyDetails);
                    MainWindow.gv.CurrentDb [z] = "";
                    MainWindow.gv.ListBoxId [z] = Guid.Empty;
                    MainWindow.gv.Datagrid [z]  = null;
                    MainWindow.gv.window [z]    = null;
                }
                MainWindow.gv.ViewerCount     = 0;
                MainWindow.gv.PrettyDetails   = "";
                MainWindow.gv.SqlBankViewer   = null;
                MainWindow.gv.SqlCustViewer   = null;
                MainWindow.gv.SqlDetViewer    = null;
                MainWindow.gv.SqlViewerGuid   = Guid.Empty;
                MainWindow.gv.SqlViewerWindow = null;

                MainWindow.gv.Bankviewer = Guid.Empty;
                MainWindow.gv.Custviewer = Guid.Empty;
                MainWindow.gv.Detviewer  = Guid.Empty;

                Flags.ActiveSqlGrid = null;
                Flags.SqlBankViewer = null;
                Flags.SqlCustViewer = null;
                Flags.SqlDetViewer  = null;
//				Flags . CurrentSqlViewer = null;

                // ALL entries in our GridView structure are now cleared  ** totally **
                return(true);
            }
            else
            {
                int GridViewerArrayIndex = 0;
                // we may have NOT received the index of the viewer in the list
                // so  get the index for the correct Entry
                if (x == 99)
                {
                    // got to find it ourselves - iterate thruMainWindow.gv[] array  (Range  is 0 - 3)
                    for (int i = 0; i < 3; i++)
                    {
                        if (MainWindow.gv.CurrentDb [i] == currentDb)
                        {
                            x = i; break;
                        }
                    }
                    GridViewerArrayIndex = x;
                    // we have got the index in "x"  of the viewer in the Mainindow.gv[] array
                    // so  get the Tag of that selected Entry vin the ViewersList
                    for (int i = 1; i < 4; i++)
                    {
                        lbi = Flags.DbSelectorOpen.ViewersList.Items [i] as ListBoxItem;
                        if (MainWindow.gv.ListBoxId [GridViewerArrayIndex] == ( Guid )lbi.Tag)
                        {
                            //lbi = Flags . DbSelectorOpen . ViewersList . Items [ i ] as ListBoxItem;
                            Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(i);
                            Flags.DbSelectorOpen.ViewersList.Refresh( );
                            break;
                        }
                    }
                }
                else
                {
                    // we have the ViewersList index given to us, so use it
                    lbi = Flags.DbSelectorOpen.ViewersList.Items [index] as ListBoxItem;
                    Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(index);
                    Flags.DbSelectorOpen.ViewersList.Refresh( );
                    // got to findit in thruMainWindow.gv[] array  (Range  is 0 - 3)
                    for (int i = 0; i < 4; i++)
                    {
                        if (MainWindow.gv.ListBoxId [i] == ( Guid )lbi.Tag)
                        {
                            GridViewerArrayIndex = i;
                            break;
                        }
                    }
                }
                sqlv = Flags.CurrentSqlViewer as SqlDbViewer;
                sqlv.Close( );

                // We know which gv[] entry  we need to clear, so do it and return
                MainWindow.gv.CurrentDb [GridViewerArrayIndex] = "";
                MainWindow.gv.ListBoxId [GridViewerArrayIndex] = Guid.Empty;
                MainWindow.gv.Datagrid [GridViewerArrayIndex]  = null;
                MainWindow.gv.window [GridViewerArrayIndex]    = null;
                MainWindow.gv.PrettyDetails = "";
                MainWindow.gv.SqlViewerGuid = Guid.Empty;
                MainWindow.gv.ViewerCount--;
                // Reposition selected viewer if we have one
                if (Flags.DbSelectorOpen.ViewersList.Items.Count > GridViewerArrayIndex + 1)
                {
                    Flags.DbSelectorOpen.ViewersList.SelectedIndex = GridViewerArrayIndex + 1;
                    Flags.DbSelectorOpen.ViewersList.SelectedItem  = GridViewerArrayIndex + 1;
                }
                else if (Flags.DbSelectorOpen.ViewersList.Items.Count == GridViewerArrayIndex + 1)
                {
                    Flags.DbSelectorOpen.ViewersList.SelectedIndex = GridViewerArrayIndex - 1;
                    Flags.DbSelectorOpen.ViewersList.SelectedItem  = GridViewerArrayIndex - 1;
                }
                return(true);
            }

            // Unreachable code ...

            // Now sort out the  global gv[] flags
            for (int y = 1; y < Flags.DbSelectorOpen.ViewersList.Items.Count; y++)
            {
                // Get the Tag of eaxch Viewer in the list
                lbi = Flags.DbSelectorOpen.ViewersList.Items [y] as ListBoxItem;
                Guid lbtag = ( Guid )lbi.Tag;
                //See if it matches the one we are closing down
                if (( Guid )lbtag == ( Guid )tag)
                {
                    //Yes, we have got a match, so go ahead and remove its gv[] entries first
                    for (int z = 0; z < MainWindow.gv.MaxViewers; z++)
                    {
                        if (MainWindow.gv.ListBoxId [z] == lbtag)
                        {
                            MainWindow.gv.ViewerCount--;
                            MainWindow.gv.CurrentDb [z] = "";
                            MainWindow.gv.ListBoxId [z] = Guid.Empty;
                            MainWindow.gv.Datagrid [z]  = null;
                            MainWindow.gv.window [z]    = null;
                            break;
                        }
                    }
                    MainWindow.gv.PrettyDetails = "";
                    //Finally we can remove this entry from ViewersList
                    lbi         = Flags.DbSelectorOpen.ViewersList.Items [y] as ListBoxItem;
                    lbi.Content = "";
                    Flags.DbSelectorOpen.ViewersList.Items.RemoveAt(y);
                    // Set selectedIndex pointer to current position in list
                    int currentIndex = y - 1;
                    if (y <= 1)                                   // List is basically empty (No viewers in  the list)
                    {
                        return(true);
                    }
                    if (Flags.DbSelectorOpen.ViewersList.Items.Count > currentIndex)
                    {
                        Flags.DbSelectorOpen.ViewersList.SelectedIndex = currentIndex;
                        Flags.DbSelectorOpen.ViewersList.SelectedItem  = currentIndex;
                    }
                    else if (Flags.DbSelectorOpen.ViewersList.Items.Count == currentIndex)
                    {
                        Flags.DbSelectorOpen.ViewersList.SelectedIndex = currentIndex - 1;
                        Flags.DbSelectorOpen.ViewersList.SelectedItem  = currentIndex - 1;
                    }
                    return(true);
                }
            }
            MainWindow.gv.SqlViewerGuid = Guid.Empty;

            return(false);
        }
Exemplo n.º 18
0
 public static void CheckResetAllGridViewData(string KillType, SqlDbViewer caller, bool mode = true)
 {
     if (!mode)
     {
         // CLEAR DOWN all data entries for the current Viewer
         // as it is probably chnaging to a different Db
         SqlDbViewer sqlv = caller;
         for (int z = 0; z < 3; z++)
         {
             if (MainWindow.gv.window [z] == sqlv)
             {
                 MainWindow.gv.ViewerCount--;
                 MainWindow.gv.ListBoxId [z] = Guid.Empty;
                 MainWindow.gv.Datagrid [z]  = null;
                 MainWindow.gv.window [z]    = null;
                 if (KillType == "BANKACCOUNT")
                 {
                     MainWindow.gv.Bankviewer    = Guid.Empty;
                     MainWindow.gv.SqlBankViewer = null;
                     MainWindow.gv.Bankviewer    = Guid.Empty;
                 }
                 else if (KillType == "CUSTOMER")
                 {
                     MainWindow.gv.Custviewer    = Guid.Empty;
                     MainWindow.gv.SqlCustViewer = null;
                     MainWindow.gv.Custviewer    = Guid.Empty;
                 }
                 else if (KillType == "DETAILS")
                 {
                     MainWindow.gv.Detviewer    = Guid.Empty;
                     MainWindow.gv.SqlDetViewer = null;
                     MainWindow.gv.Detviewer    = Guid.Empty;
                 }
                 // general flags
                 MainWindow.gv.CurrentDb [z]        = "";
                 MainWindow.gv.PrettyDetails        = "";
                 MainWindow.gv.SqlViewerWindow      = null;
                 MainWindow.gv.SqlViewerGuid        = Guid.Empty;
                 MainWindow.gv.SqlCurrentEditViewer = null;
                 break;
             }
         }
     }
     else
     {
         // individual set only
         for (int x = 0; x < 3; x++)
         {
             if (MainWindow.gv.CurrentDb [x] == KillType)
             {
                 MainWindow.gv.ViewerCount--;
                 MainWindow.gv.ListBoxId [x] = Guid.Empty;
                 MainWindow.gv.Datagrid [x]  = null;
                 MainWindow.gv.window [x]    = null;
                 if (KillType == "BANKACCOUNT")
                 {
                     MainWindow.gv.Bankviewer    = Guid.Empty;
                     MainWindow.gv.SqlBankViewer = null;
                     MainWindow.gv.Bankviewer    = Guid.Empty;
                 }
                 else if (KillType == "CUSTOMER")
                 {
                     MainWindow.gv.Custviewer    = Guid.Empty;
                     MainWindow.gv.SqlCustViewer = null;
                     MainWindow.gv.Custviewer    = Guid.Empty;
                 }
                 else if (KillType == "DETAILS")
                 {
                     MainWindow.gv.Detviewer    = Guid.Empty;
                     MainWindow.gv.SqlDetViewer = null;
                     MainWindow.gv.Detviewer    = Guid.Empty;
                 }
                 // general flags
                 MainWindow.gv.CurrentDb [x]        = "";
                 MainWindow.gv.PrettyDetails        = "";
                 MainWindow.gv.SqlViewerWindow      = null;
                 MainWindow.gv.SqlViewerGuid        = Guid.Empty;
                 MainWindow.gv.SqlCurrentEditViewer = null;
                 break;
             }
         }
     }
 }
Exemplo n.º 19
0
        //*****************************************************************************************//
        public async Task <bool> UpdateDbRow(string CurrentDb, object Row)
        {
            ///
            /// After a fight, this is now working and updates the relevant RECORD correctly
            ///
            int z = 1;

            if (z < 0)
            {
                return(false);
            }

//			DataGridRow dg = Row;
            BankAccountViewModel ss = Row as BankAccountViewModel;
            CustomerViewModel    cs = Row as CustomerViewModel;
            DetailsViewModel     sa = Row as DetailsViewModel;

//			DataGridRow ss = null;
//			DataGridRow cs = null;
//			DataGridRow sa = null;

            //Sort out the data as this Fn is called with null,null as arguments when a/c is "Closed"
            //if (Row == null)
            //{
            //	if (CurrentDb == "BANKACCOUNT" || CurrentDb == "DETAILS")
            //	{
            //		if (CurrentDb == "BANKACCOUNT")
            //		{
            //			ss =new  BankAccountViewModel() ;
            //			ss = BankCurrentRow.Item as BankAccountViewModel;
            //		}
            //		else
            //		{
            //			sa = new DetailsViewModel ();
            //			sa = DetailsCurrentRow.Item as DetailsViewModel;
            //		}
            //	}
            //	//else if (CurrentDb == "DETAILS")
            //	//{
            //	//	sa = new DetailsViewModel ();
            //	//	sa = DetailsCurrentRow.Item as DetailsViewModel;
            //	//}
            //	else if (CurrentDb == "CUSTOMER")
            //	{
            //		cs = new CustomerViewModel ();
            //		cs = CustomerCurrentRow.Item as CustomerViewModel;
            //	}
            //}
            //else
//			{
//				if (CurrentDb == "BANKACCOUNT" || CurrentDb == "DETAILS")
//				{
//					if (CurrentDb == "BANKACCOUNT")
//					{
////						ss = new BankAccountViewModel() ;
//						ss = Row.Item as BankAccountViewModel;
//					}
//					else
//					{
//						sa = new DetailsViewModel ();
//						sa = Row.Item as DetailsViewModel;
//					}
//				}
//				//else if (CurrentDb == "DETAILS")
//				//{
//				//	sa = new DetailsViewModel ();
//				//	sa =Row.Item as DetailsViewModel;
//				//}
//				else if (CurrentDb == "CUSTOMER")
//				{
//					cs = new CustomerViewModel ();
//					cs = Row.Item as CustomerViewModel;
//				}
//			}

            if (CurrentDb == "BANKACCOUNT" || CurrentDb == "DETAILS")
            {
                try
                {
                    //Sanity check - are values actualy valid ???
                    //They should be as Grid vlaidate entries itself !!
                    int     x;
                    decimal Y;
                    if (CurrentDb == "BANKACCOUNT")
                    {
//						ss = Row.Item as BankAccountViewModel;
                        x = Convert.ToInt32(ss.Id);
                        x = Convert.ToInt32(ss.AcType);
                        //Check for invalid A/C Type
                        if (x < 1 || x > 4)
                        {
                            Console.WriteLine($"SQL UpdateDbRow(92) Invalid A/c type of {ss.AcType} in grid Data");
                            MessageBox.Show($"Invalid A/C Type ({ss.AcType}) in the Grid !!!!\r\nPlease correct this entry!");
                            return(false);
                        }
                        Y = Convert.ToDecimal(ss.Balance);
                        Y = Convert.ToDecimal(ss.IntRate);
                        //Check for invalid Interest rate
                        if (Y > 100)
                        {
                            Console.WriteLine($"SQL UpdateDbRow(101) Invalid Interest Rate of {ss.IntRate} > 100% in grid Data");
                            MessageBox.Show($"Invalid Interest rate ({ss.IntRate}) > 100 entered in the Grid !!!!\r\nPlease correct this entry!");
                            return(false);
                        }
                        DateTime dtm = Convert.ToDateTime(ss.ODate);
                        dtm = Convert.ToDateTime(ss.CDate);
                    }
                    else if (CurrentDb == "DETAILS")
                    {
//						sa = Row.Item as DetailsViewModel;
                        x = Convert.ToInt32(sa.Id);
                        x = Convert.ToInt32(sa.AcType);
                        //Check for invalid A/C Type
                        if (x < 1 || x > 4)
                        {
                            Console.WriteLine($"SQL UpdateDbRow(117) Invalid A/c type of {sa.AcType} in grid Data");
                            MessageBox.Show($"Invalid A/C Type ({sa.AcType}) in the Grid !!!!\r\nPlease correct this entry!");
                            return(false);
                        }
                        Y = Convert.ToDecimal(sa.Balance);
                        Y = Convert.ToDecimal(sa.IntRate);
                        //Check for invalid Interest rate
                        if (Y > 100)
                        {
                            Console.WriteLine($"SQL UpdateDbRow(126) Invalid Interest Rate of {sa.IntRate} > 100% in grid Data");
                            MessageBox.Show($"Invalid Interest rate ({sa.IntRate}) > 100 entered in the Grid !!!!\r\nPlease correct this entry!");
                            return(false);
                        }
                        DateTime dtm = Convert.ToDateTime(sa.ODate);
                        dtm = Convert.ToDateTime(sa.CDate);
                    }
                    //					string sndr = sender.ToString();
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"SQL UpdateDbRow(137) Invalid grid Data - {ex.Message} Data = {ex.Data}");
                    MessageBox.Show("Invalid data entered in the Grid !!!! - See Output for details.\r\nNEITHER Db has been updated !!");
                    return(false);
                }
                SqlConnection con       = null;
                string        ConString = "";
                ConString = (string)Properties.Settings.Default["BankSysConnectionString"];
                //			@"Data Source = (localdb)\MSSQLLocalDB; Initial Catalog = 'C:\USERS\IANCH\APPDATA\LOCAL\MICROSOFT\MICROSOFT SQL SERVER LOCAL DB\INSTANCES\MSSQLLOCALDB\IAN1.MDF'; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrustServerCertificate = False; ApplicationIntent = ReadWrite; MultiSubnetFailover = False";
//				con = new SqlConnection (ConString);
                try
                {
                    //We need to update BOTH BankAccount AND DetailsViewModel to keep them in parallel
                    using (con = new SqlConnection(ConString))
                    {
                        con.Open();
                        if (CurrentDb == "BANKACCOUNT")                         //|| CurrentDb == "DETAILS" )
                        {
                            SqlCommand cmd = new SqlCommand("UPDATE BankAccount SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, BALANCE=@balance, INTRATE=@intrate, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ss.Id));
                            cmd.Parameters.AddWithValue("@bankno", ss.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", ss.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(ss.AcType));
                            cmd.Parameters.AddWithValue("@balance", Convert.ToDecimal(ss.Balance));
                            cmd.Parameters.AddWithValue("@intrate", Convert.ToDecimal(ss.IntRate));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(ss.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(ss.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Bank Account Data...");

                            cmd = new SqlCommand("UPDATE SecAccounts SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, BALANCE=@balance, INTRATE=@intrate, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ss.Id));
                            cmd.Parameters.AddWithValue("@bankno", ss.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", ss.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(ss.AcType));
                            cmd.Parameters.AddWithValue("@balance", Convert.ToDecimal(ss.Balance));
                            cmd.Parameters.AddWithValue("@intrate", Convert.ToDecimal(ss.IntRate));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(ss.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(ss.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Secondary Accounts Data...");

                            cmd = new SqlCommand("UPDATE Customer SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(ss.Id));
                            cmd.Parameters.AddWithValue("@bankno", ss.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", ss.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(ss.AcType));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(ss.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(ss.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Customers Data...");
                        }
                        else if (CurrentDb == "DETAILS")
                        {
                            SqlCommand cmd = new SqlCommand("UPDATE BankAccount SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, BALANCE=@balance, INTRATE=@intrate, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(sa.Id));
                            cmd.Parameters.AddWithValue("@bankno", sa.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", sa.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(sa.AcType));
                            cmd.Parameters.AddWithValue("@balance", Convert.ToDecimal(sa.Balance));
                            cmd.Parameters.AddWithValue("@intrate", Convert.ToDecimal(sa.IntRate));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(sa.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(sa.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Bank Account Data...");

                            cmd = new SqlCommand("UPDATE SecAccounts SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, BALANCE=@balance, INTRATE=@intrate, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(sa.Id));
                            cmd.Parameters.AddWithValue("@bankno", sa.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", sa.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(sa.AcType));
                            cmd.Parameters.AddWithValue("@balance", Convert.ToDecimal(sa.Balance));
                            cmd.Parameters.AddWithValue("@intrate", Convert.ToDecimal(sa.IntRate));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(sa.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(sa.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Secondary Accounts Data...");

                            cmd = new SqlCommand("UPDATE Customer SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                            cmd.Parameters.AddWithValue("@id", Convert.ToInt32(sa.Id));
                            cmd.Parameters.AddWithValue("@bankno", sa.BankNo.ToString());
                            cmd.Parameters.AddWithValue("@custno", sa.CustNo.ToString());
                            cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(sa.AcType));
                            cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(sa.ODate));
                            cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(sa.CDate));
                            await cmd.ExecuteNonQueryAsync();

                            Console.WriteLine("SQL Update successful for Customers Data...");
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"SQL Error UpdateDbRow(180) - BankAccount/Sec" +
                                      $"accounts not updated {ex.Message} Data = {ex.Data}");
#if SHOWSQLERRORMESSAGEBOX
                    MessageBox.Show("SQL error occurred - See Output for details");
#endif
                }
                finally
                {
                    con.Close();
                }
            }
            else if (CurrentDb == "CUSTOMER")
            {
                if (Row == null && CurrentDb == "CUSTOMER")
                {
                    cs = CustomerCurrentRow.Item as CustomerViewModel;
                }

                try
                {
                    //Sanity check - are values actualy valid ???
                    //They should be as Grid vlaidate entries itself !!
                    int x;
                    x = Convert.ToInt32(cs.Id);
                    //					string sndr = sender.ToString();
                    x = Convert.ToInt32(cs.AcType);
                    //Check for invalid A/C Type
                    if (x < 1 || x > 4)
                    {
                        Console.WriteLine($"SQL UpdateDbRow(204) Invalid A/c type of {cs.AcType} in grid Data");
                        MessageBox.Show($"Invalid A/C Type ({cs.AcType}) in the Grid !!!!\r\nPlease correct this entry!");
                        return(false);
                    }
                    DateTime dtm = Convert.ToDateTime(cs.ODate);
                    dtm = Convert.ToDateTime(cs.CDate);
                    dtm = Convert.ToDateTime(cs.Dob);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"SQL Invalid grid Data UpdateDbRow(214)- {ex.Message} Data = {ex.Data}");
                    MessageBox.Show("Invalid data entered in the Grid !!!! - See Output for details");
                    return(false);
                }
                SqlConnection con;
                string        ConString = "";
                ConString = (string)Properties.Settings.Default["BankSysConnectionString"];
                //			@"Data Source = (localdb)\MSSQLLocalDB; Initial Catalog = 'C:\USERS\IANCH\APPDATA\LOCAL\MICROSOFT\MICROSOFT SQL SERVER LOCAL DB\INSTANCES\MSSQLLOCALDB\IAN1.MDF'; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrustServerCertificate = False; ApplicationIntent = ReadWrite; MultiSubnetFailover = False";
                con = new SqlConnection(ConString);
                try
                {
                    //We need to update BOTH BankAccount AND DetailsViewModel to keep them in parallel
                    using (con)
                    {
                        con.Open();

                        SqlCommand cmd = new SqlCommand("UPDATE Customer SET CUSTNO=@custno, BANKNO=@bankno, ACTYPE=@actype, " +
                                                        "FNAME=@fname, LNAME=@lname, ADDR1=@addr1, ADDR2=@addr2, TOWN=@town, COUNTY=@county, PCODE=@pcode," +
                                                        "PHONE=@phone, MOBILE=@mobile, DOB=@dob,ODATE=@odate, CDATE=@cdate WHERE Id=@id", con);


                        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(cs.Id));
                        cmd.Parameters.AddWithValue("@custno", cs.CustNo.ToString());
                        cmd.Parameters.AddWithValue("@bankno", cs.BankNo.ToString());
                        cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(cs.AcType));
                        cmd.Parameters.AddWithValue("@fname", cs.FName.ToString());
                        cmd.Parameters.AddWithValue("@lname", cs.LName.ToString());
                        cmd.Parameters.AddWithValue("@addr1", cs.Addr1.ToString());
                        cmd.Parameters.AddWithValue("@addr2", cs.Addr2.ToString());
                        cmd.Parameters.AddWithValue("@town", cs.Town.ToString());
                        cmd.Parameters.AddWithValue("@county", cs.County.ToString());
                        cmd.Parameters.AddWithValue("@pcode", cs.PCode.ToString());
                        cmd.Parameters.AddWithValue("@phone", cs.Phone.ToString());
                        cmd.Parameters.AddWithValue("@mobile", cs.Mobile.ToString());
                        cmd.Parameters.AddWithValue("@dob", Convert.ToDateTime(cs.Dob));
                        cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(cs.ODate));
                        cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(cs.CDate));
                        await cmd.ExecuteNonQueryAsync();

                        Console.WriteLine("SQL Update successful for Customers Data...");

                        cmd = new SqlCommand("UPDATE BankAccount SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(cs.Id));
                        cmd.Parameters.AddWithValue("@bankno", cs.BankNo.ToString());
                        cmd.Parameters.AddWithValue("@custno", cs.CustNo.ToString());
                        cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(cs.AcType));
                        cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(cs.ODate));
                        cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(cs.CDate));
                        await cmd.ExecuteNonQueryAsync();

                        Console.WriteLine("SQL Update successful for Bank Account Data...");

                        cmd = new SqlCommand("UPDATE SecAccounts SET BANKNO=@bankno, CUSTNO=@custno, ACTYPE=@actype, ODATE=@odate, CDATE=@cdate WHERE BankNo=@BankNo", con);
                        cmd.Parameters.AddWithValue("@id", Convert.ToInt32(cs.Id));
                        cmd.Parameters.AddWithValue("@bankno", cs.BankNo.ToString());
                        cmd.Parameters.AddWithValue("@custno", cs.CustNo.ToString());
                        cmd.Parameters.AddWithValue("@actype", Convert.ToInt32(cs.AcType));
                        cmd.Parameters.AddWithValue("@odate", Convert.ToDateTime(cs.ODate));
                        cmd.Parameters.AddWithValue("@cdate", Convert.ToDateTime(cs.CDate));
                        await cmd.ExecuteNonQueryAsync();

                        Console.WriteLine("SQL Update successful for Secondary Accounts Data...");
                    }
                }
                catch (Exception ex)
                {
                    con.Close();
                    Console.WriteLine($"SQL Error UpdateDbRow(255)- {ex.Message} Data = {ex.Data}");
#if SHOWSQLERRORMESSAGEBOX
                    MessageBox.Show("SQL error occurred - See Output for details");
#endif
                }
                finally
                {
                    //Lets force the grids to update when we return from here ??
                    Console.WriteLine($"SQL - Updated Row for {CurrentDb}");
                    con.Close();
                }
                SqlDbViewer.UpdateAllOpenViewers();

                return(true);
            }
            SqlDbViewer.UpdateAllOpenViewers();
            return(true);
        }
Exemplo n.º 20
0
 public static void TriggerNotifyOfDataChange(SqlDbViewer sender, DataGrid Grid, DataChangeArgs args)
 {
     NotifyOfDataChange?.Invoke(sender, Grid, args);
 }
Exemplo n.º 21
0
        //********************************************************************************************//
        private async void HandleSelection(ListBox listbox, string Command)
        {
            // This is the FIRST Fn Called when Opening/ Closing/deleting a Db Viewer window
            //and most other functionality
            int    selected     = -1;
            string selectedItem = "";

            if (listbox == sqlSelector)
            {
                //upper listbox - NEW command
                if (Command == "NEW")
                {
                    selectedItem = listbox.SelectedItem.ToString();
                    if (selectedItem.ToUpper().Contains("MULTI BANK"))
                    {
                        selected = 2;
                    }
                    else if (selectedItem.ToUpper().Contains("BANK"))
                    {
                        selected = 0;
                    }
                    else if (selectedItem.ToUpper().Contains("CUSTOMER"))
                    {
                        selected = 1;
                    }
                    Mouse.OverrideCursor = Cursors.Wait;

                    ////*****************************************************//
                    //// Load and display a new viewer for the selected Db Type
                    //// (returned in the selected var from dbSelector window)
                    ////*****************************************************//
                    //SqlDbViewer NewSqlViewer = new SqlDbViewer (selected);

                    if (ViewersList.Items.Count > 10)
                    {
                        Mouse.OverrideCursor = Cursors.Arrow;
                        MessageBox.Show("Sorry, but there is a limit of TEN Viewers open at any one time.\r\nPlease close one or more Viewers if you want to open a new one.", "Maximum Viewers Open !");
                        return;
                    }
                    // find first blank entry of the 10 available slots we have
                    // and save our details into it
                    for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
                    {
                        if (MainWindow.gv.window[x] == null)
                        {
                            string currentRowText = "";
                            MainWindow.gv.ViewerSelectiontype = -1;                              // reset flag field for next time
                            Stopwatch   sw           = new Stopwatch();
                            SqlDbViewer NewSqlViewer = new SqlDbViewer(selected);

                            //*****************************************************//
                            // THIS WORKS PRETTY WELL, THE SQLdBVIEWER WINDOW IS DISPLAYED VIRTUALLY IMMEDIATELY
                            // Load and display a new viewer for the selected Db Type
                            // (returned in the selected var from dbSelector window)
                            //*****************************************************//
                            //							SqlDbViewer NewSqlViewer = new SqlDbViewer (selected);
                            // call  our Async AWAIT function to spawn the SqlDbViewer
                            Console.WriteLine("1 - Calling StartViewer Task");
                            sw.Start();
                            {
                                // // Atempt 4
                                // // works, but get white window until it has loaded.....
                                bool   b     = false;
                                string str   = "";
                                Task[] tasks = new Task[1];
                                tasks[0] = Task.Factory.StartNew(() => StartViewerAsync(NewSqlViewer, selected));
                                // Wait for the background task to finish
                                tasks[0].Wait();
//								StartViewerAsync (NewSqlViewer, selected);
                                {
                                    //								taskAsync.Start ();
                                    //								Task<string> task =  StartViewer (NewSqlViewer, selected);
                                    //task.ContinueWith
                                    //	(delegate
                                    //	{
                                    //		sc.Post (delegate {str = task.Result; }, null);
                                    //	});
                                    //										s => runloader = task.Result, TaskScheduler.FromCurrentSynchronizationContext ()
                                    Console.WriteLine($"string str = {str}");
                                }
                                sw.Stop();

                                //By returning here, the window paints fully !!!!

                                return;

                                //***************************************//

                                {
                                    //Thread thread = new Thread (() =>
                                    //while (true)
                                    //{
                                    //	Thread.Sleep (100);
                                    //	if (alldone)
                                    //		break;
                                    //}
                                }
                            }
                            Console.WriteLine($"2 - ***FINAL*** Task returned -  took {sw.ElapsedMilliseconds} Milliseconds");
                            sw.Start();

                            {
                                //	// Atempt 3
                                //	// works, but get white window until it has loaded.....
                                //	bool result = await Task.Run (() => StartViewer (selected).ContinueWith (task => CompleteLoad ()));
                                //	Console.WriteLine ($"Task result = {result}");
                                //	// Task above returns immediately
                                //	//								loadViewer.Wait ();
                                //	//await Task.WhenAll (loadViewer);
                            }
                            sw.Stop();
                            Console.WriteLine($"3 - Overall Load took {sw.ElapsedMilliseconds} Milliseconds");

                            {
                                //// Atempt 2
                                //// works, but get white window until it has loaded.....
                                //Task<bool> loadViewer = StartViewer (selected);
                                //// Task above returns immediately
                                //loadViewer.Wait ();
                                ////await Task.WhenAll (loadViewer);
                            }
                            {                                   // Attempt 1
                                                                // Atempt 1
                                                                // works, but still get white window until it has loaded.....
                                                                //	var loadViewer = StartViewer (selected);
                                                                //	await Task.WhenAll (loadViewer);
                            }
                            //*****************************************************************************//

                            Console.WriteLine("4 - StartViewer Task - ALL COMPLETED");
                            //Thread t = new Thread (2000);
                            {
                                //*****************************************************************************//
                                //This actually loads the SQLDbViewer windows and populates it
                                // and it is fully displayed on screen, but with no data in the grid
                                //							NewSqlViewer.Show ();
                                //*****************************************************************************//
                                Mouse.OverrideCursor = Cursors.Wait;
                                //NewSqlViewer.DetailsGrid.Visibility = Visibility.Hidden;
                                //NewSqlViewer.WaitMessage.Visibility = Visibility.Visible;
                                //NewSqlViewer.WaitMessage.BringIntoView ();
                            }

                            //while (true) {
                            //	if (SqlDbViewer.IsViewerLoaded)
                            //		break;
                            //	else
                            //	{
                            //		Thread.Sleep (200);
                            //	}
                            //}



                            if (!HoldLoad)
                            {
                                // NOW WE CAN TRIGGER THE LOADING OF ACTUAL DATA IN VIEWER ?
                                Console.WriteLine("Calling NewSqlViewer.HandleWindowLoaded ");
                                if (selected == 0)
                                {
                                    NewSqlViewer.HandleWindowLoaded("BANKACCOUNT");
                                }
                                else if (selected == 1)
                                {
                                    NewSqlViewer.HandleWindowLoaded("CUSTOMER");
                                }
                                else if (selected == 2)
                                {
                                    NewSqlViewer.HandleWindowLoaded("DETAILS");
                                }
                                Console.WriteLine("returned from NewSqlViewer.HandleWindowLoaded ");
#pragma LOADING SPEED
                                //if (selected == 0)
                                //	BankAccountViewModel.LoadBankTask ();
                                //else if (selected == 1) { //This  fully loads the Customer Data into dtCust ONLY
                                //	CustomerViewModel.LoadCustomersTask ();
                                //}
                                //// Calls a function to load data into List<>
                                //else if (selected == 2)
                                //	DetailsViewModel.LoadDetailsTask ();

                                //Now we can Get the data from the current row
                                currentRowText = MainWindow.gv.CurrentDb[x];
                                {
                                    // This DOES update our Property ListBoxItemText
                                    //which we "should" be able to use to update the Selector list entries text
                                    // but it doesn't work - so far at least
                                    //DbSelector dbs = new DbSelector ();

                                    //Create/Add new viewer entry (ListBoxItem) to Selection viewer Listbox
                                    ListBoxItem lbi = new ListBoxItem();

                                    Binding binding = new Binding("Content");
                                    binding.Source = MainWindow.DbSelectorOpen.ListBoxItemText;

                                    // Set Tag of this LB Item to the DbViewer Window
                                    lbi.Tag = NewSqlViewer.Tag;
                                    //Bind the new lbItem to our Data source
                                    lbi.SetBinding(ContentProperty, binding);

                                    //update our DependencyProperty ListBoxItemText - in DbSelector.cs
                                    MainWindow.DbSelectorOpen.ListBoxItemText = currentRowText;
                                    //This is the normal way to update the lists data
                                    lbi.Content = MainWindow.DbSelectorOpen.ListBoxItemText;
                                    lbi.Content = MainWindow.gv.PrettyDetails;

                                    // update BankAccountViewModel data as required

                                    int indx = ViewersList.Items.Add(lbi);
                                    ViewersList.SelectedIndex = indx;

                                    NewSqlViewer.Focus();
                                    ViewersList.Items.Refresh();
                                    if (ViewersList.Items.Count > 1)
                                    {
                                        ViewerDeleteAll.IsEnabled = true;
                                        ViewerDelete.IsEnabled    = true;
                                    }

                                    //*************************************
                                    // DetailsGrid is now fully populated 2/4/21
                                    //*************************************
                                    NewSqlViewer.WaitMessage.Visibility = Visibility.Collapsed;
                                    if (selected == 0)
                                    {
                                        NewSqlViewer.BankGrid.Visibility = Visibility.Visible;
                                    }
                                    else if (selected == 1)
                                    {
                                        NewSqlViewer.CustomerGrid.Visibility = Visibility.Visible;
                                    }
                                    else if (selected == 2)
                                    {
                                        NewSqlViewer.DetailsGrid.Visibility = Visibility.Visible;
                                    }

                                    if (BankAccountViewModel.BankAccountObs != null)
                                    {
                                        Flags.ActiveSqlGrid.ItemsSource = CollectionViewSource.GetDefaultView(BankAccountViewModel.BankAccountObs);
                                    }


                                    // This WORKS for details 2/4/21
                                    Debug.WriteLine($" *** Current Active...3 =  {Flags.ActiveSqlGridStr}\r\n");
                                    if (Flags.ActiveSqlGrid?.ItemsSource != null)
                                    {
                                        CollectionViewSource.GetDefaultView(Flags.ActiveSqlGrid.ItemsSource).Refresh();
                                    }

                                    Mouse.OverrideCursor = Cursors.Arrow;
                                    return;
                                }
                            }
                        }
                    }
                    Mouse.OverrideCursor = Cursors.Arrow;
                    return;

                    NewSqlViewer.HandleWindowLoaded("CUSTOMER");
                }
            }
            else if (listbox == ViewersList)
            {
                if (Command == "SELECT")
                {
                    //
                    // This works = 22 March 2021
                    //
                    int selindex = -1;
                    selindex = ViewersList.SelectedIndex;
                    ListBoxItem lbi = new ListBoxItem();
                    lbi = ViewersList.Items[selindex] as ListBoxItem;

                    int    SelectedId = MainWindow.gv.ListBoxId[selindex - 1];
                    Window w          = MainWindow.gv.window[selindex - 1];
                    w.Show();
                    w.Topmost = true;
                    w.Focus();
                    w.Topmost = false;
                    return;
                }
                else if (Command == "DELETE")
                {                       //
                                        // This also works = 22 March 2021
                                        //
                    int selindex = -1;
                    selindex = ViewersList.SelectedIndex;
                    ListBoxItem lbi = new ListBoxItem();
                    lbi = ViewersList.Items[selindex] as ListBoxItem;

                    for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
                    {
                        try
                        {
                            if (ViewersList.SelectedItem != null)
                            {
                                if (MainWindow.gv.ListBoxId[x] == (int)lbi.Tag)
                                {
                                    // found the match - so delete viewer and remove from Viewers list
                                    CloseviewerWindow(x);
                                    //									ViewersList.Items.RemoveAt (selindex);
                                    break;
                                }
                            }
                        }
                        catch
                        {
                        }
                    }
                    if (ViewersList.Items.Count >= 1)
                    {
                        ViewersList.SelectedIndex = selindex;
                    }
                    ViewersList.Items.Refresh();
                    return;
                }
                else if (Command == "DELETEALL")
                {
                    //
                    // This also works = 22 March 2021
                    //
                    // Close/Delete ALL open viewers
                    for (int x = 0; x < MainWindow.gv.MaxViewers; x++)
                    {
                        //Close the viewer
                        if (MainWindow.gv.window[x] != null)
                        {
                            MainWindow.gv.window[x].Close();
                        }
                        //remove all record of it's very existence
                        MainWindow.gv.window[x]    = null;
                        MainWindow.gv.CurrentDb[x] = "";
                        MainWindow.gv.ListBoxId[x] = -1;

                        MainWindow.gv.ViewerSelectiontype = -1;                          // reset flag field for next time
                    }
                    MainWindow.gv.ViewerCount = 0;
                    for (int x = MainWindow.gv.MaxViewers; x > 0; x--)
                    {
                        if (ViewersList.Items.Count == x + 1)
                        {
                            ViewersList.Items.RemoveAt(x);
                            //							break;
                        }
                    }
                }
            }
        }
Exemplo n.º 22
0
 public SQLFilter(SqlDbViewer Viewparent)
 {
     parent = Viewparent;
     InitializeComponent();
 }