Ignore:
Timestamp:
May 29, 2011, 2:13:37 AM (13 years ago)
Author:
Sam Habiel
Message:

All changes to support BMX4. Now works with BMX 4.
AssemblyInfo: Bumped to 1.6 (will be 1.7 pending server changes).
Removed BMXNet23.dll and added BMXNET40.dll and BMXWIN40.dll.
Actual changes to support BMX 4 in the code:
All references to DocManager.ConnectInfo.bmxNetLib substituted with CGDocumentManager.Current.RemoteSession everywhere.
All Events use RemoteSession.EventServices APIs.
All references to DUZ use RemoteSession.User APIs.
All references to BMXNetLib.Piece changed to M.Piece.
Added RPC Logging Capability courtesy of BMX4.
Extensive changes in the Main[] class CGDocumentManager:

  • Added references to IndianHealthService.BMXNet.WinForm
  • Removed references to BMXNetLib and changed to RemoteSession
  • Singleton Instance constructor now private (overdue change).
  • Use new Event Framework part of Remote Session.
  • Login code totally rewritten to use BMXWIN40.dll.
  • RPMSDataTable references changed to TableFromCommand or TableFromSQL.

DAL:

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Scheduling/branches/BMX4Support/CGDocumentManager.cs

    r1143 r1194  
     1/* Main Class...:
     2 * Original Author: Horace Whitt
     3 * Current Author and Maintainer: Sam Habiel
     4 * License: LGPL. http://www.gnu.org/licenses/lgpl-2.1.html
     5*/
     6
    17using System;
    28using System.Windows.Forms;
     
    612using System.Threading;
    713using IndianHealthService.BMXNet;
     14using IndianHealthService.BMXNet.WinForm;
     15using IndianHealthService.BMXNet.WinForm.Configuration; //grrrr... too many namespaces here...
    816using Mono.Options;
    917using System.Runtime.InteropServices;
     
    4250                //M Connection member variables
    4351                private DataSet                                                                 m_dsGlobal = null;      // Holds all user data
    44                 private BMXNetConnectInfo                                               m_ConnectInfo = null;   // Connection to VISTA object
    45         private BMXNetConnectInfo.BMXNetEventDelegate CDocMgrEventDelegate;     // Delegate to respond to messages from VISTA. Responds to event: BMXNetConnectInfo.BMXNetEvent
    4652
    4753        //Custom Printing
     
    5157        #region Properties
    5258
    53         /// <summary>
    54         /// Returns the document manager's BMXNetConnectInfo member
    55         /// </summary>
    56         public BMXNetConnectInfo ConnectInfo
    57         {
    58             get
    59             {
    60                 return m_ConnectInfo;
    61             }
    62         }
     59        public WinFramework WinFramework { get; private set; }  // Login Manager
     60        public RemoteSession RemoteSession { get; private set; } // Data Sesssion against the RPMS/VISTA server
     61        public RPCLogger RPCLogger { get; private set; }         // Logger for RPCs
    6362
    6463        /// <summary>
     
    153152
    154153        /// <summary>
    155         /// Constructor. Does absolutely nothing at this point.
     154        /// Private constructor for singleton instance.
    156155        /// </summary>
    157                 public CGDocumentManager()
     156                private CGDocumentManager()
    158157                {
    159158        }
     
    295294
    296295        #region BMXNet Event Handler
    297         private void CDocMgrEventHandler(Object obj, BMXNet.BMXNetEventArgs e)
    298                 {
    299                         if (e.BMXEvent == "BSDX CALL WORKSTATIONS")
     296        private void CDocMgrEventHandler(Object obj, RemoteEventArgs e)
     297                {
     298                        if (e.EventType == "BSDX CALL WORKSTATIONS")
    300299                        {
    301300                                string sParam = "";
    302301                                string sDelim="~";
    303                                 sParam += this.m_ConnectInfo.UserName + sDelim;
     302                                sParam += this.RemoteSession.User.Name + sDelim;
    304303                                sParam += this.m_sHandle + sDelim;
    305304                                sParam += Application.ProductVersion + sDelim;
    306305                                sParam += this._views.Count.ToString();
    307                                 _current.m_ConnectInfo.RaiseEvent("BSDX WORKSTATION REPORT", sParam, true);
    308                         }
    309                         if (e.BMXEvent == "BSDX ADMIN MESSAGE")
    310                         {
    311                                 string sMsg = e.BMXParam;
     306                                _current.RemoteSession.EventServices.TriggerEvent("BSDX WORKSTATION REPORT", sParam, true);
     307                        }
     308                        if (e.EventType == "BSDX ADMIN MESSAGE")
     309                        {
     310                                string sMsg = e.EventType;
    312311                                ShowAdminMsgDelegate samd = new ShowAdminMsgDelegate(ShowAdminMsg);
    313                                 //this.Invoke(samd, new object [] {sMsg});
    314312                samd.Invoke(sMsg);
    315313                        }
    316                         if (e.BMXEvent == "BSDX ADMIN SHUTDOWN")
    317                         {
    318                                 string sMsg = e.BMXParam;
     314                        if (e.EventType == "BSDX ADMIN SHUTDOWN")
     315                        {
     316                                string sMsg = e.Details;
    319317                                CloseAllDelegate cad = new CloseAllDelegate(CloseAll);
    320                                 //this.Invoke(cad, new object [] {sMsg});
    321318                cad.Invoke(sMsg);
    322319                        }
     
    353350        private bool InitializeApp(bool bReLogin)
    354351                {
    355             //Set M connection info
    356             m_ConnectInfo = new BMXNetConnectInfo(m_Encoding); // Encoding is "" unless passed in command line
    357             _dal = new DAL(m_ConnectInfo);   // Data access layer
    358             //m_ConnectInfo.bmxNetLib.StartLog();    //This line turns on logging of messages
     352            //Note: There are 2 splashes -- one for being the parent of the log in forms
     353            // the next is invoked async and updated async while the GUI is loading
     354            // The reason is b/c an async form cannot be the parent of another that lies on the main thread
     355
     356            RPCLogger = new RPCLogger();
     357
     358            DSplash firstSplash = new DSplash();
     359
     360            firstSplash.Show();
    359361           
    360             //Create a delegate to process events raised by BMX.
    361             CDocMgrEventDelegate = new BMXNetConnectInfo.BMXNetEventDelegate(CDocMgrEventHandler);
     362            /* IMPORTANT NOTE
     363             * LOGIN CODE IS COPIED ALMOST VERBATIM FROM THE SCHEMABUILDER APPLICAITON;
     364             * THE ONLY ONE I CAN FIND WHICH RELIES ON BMX 4 NEW WAYS WHICH I CAN'T FIGURE OUT
     365             */
     366            LoginProcess login;
     367            this.WinFramework = WinFramework.CreateWithNetworkBroker(true, RPCLogger);
     368           
     369            if (bReLogin) // if logging in again...
     370            {
     371                this.WinFramework.LoadConnectionSpecs(LocalPersistentStore.CreateDefaultStorage(true), "BSDX");
     372                login = this.WinFramework.CreateLoginProcess();
     373                login.AttemptUserInputLogin("Clincal Scheduling Log-in", 3, true, firstSplash);
     374                goto DoneTrying;
     375            }
     376
     377            // If server,port,ac,vc are supplied on command line, then try to connect...
     378            else if (!String.IsNullOrEmpty(m_Server) && m_Port != 0 && !String.IsNullOrEmpty(m_AccessCode) && !String.IsNullOrEmpty(m_VerifyCode))
     379            {
     380                RpmsConnectionSpec spec = new RpmsConnectionSpec();
     381                spec.IsDefault = true;
     382                spec.Name = "Command Line Server";
     383                spec.Port = m_Port;
     384                spec.Server = m_Server;
     385                spec.UseWindowsAuthentication = false; //for now
     386                spec.UseDefaultNamespace = true; //for now
     387                login = this.WinFramework.CreateLoginProcess();
     388                login.AutoSetDivisionToLastLookup = false;
     389                login.AttemptAccessVerifyLogin(spec, m_AccessCode, m_VerifyCode);
     390                goto DoneTrying;
     391            }
     392           
     393            // if only server, port is supplied, then use these instead
     394            else if (!String.IsNullOrEmpty(m_Server) && m_Port != 0)
     395            {
     396                RpmsConnectionSpec spec = new RpmsConnectionSpec();
     397                spec.IsDefault = true;
     398                spec.Name = "Command Line Server";
     399                spec.Port = m_Port;
     400                spec.Server = m_Server;
     401                spec.UseWindowsAuthentication = false; //for now
     402                spec.UseDefaultNamespace = true; //for now
     403
     404                RpmsConnectionSettings cxnSettings = new RpmsConnectionSettings
     405                {
     406                    CommandLineConnectionSpec = spec
     407                };
     408
     409                this.WinFramework.ConnectionSettings = cxnSettings;
     410
     411                login = this.WinFramework.CreateLoginProcess();
     412                login.AutoSetDivisionToLastLookup = false;
     413                login.AttemptUserInputLogin("Clinical Scheduling Log-in", 3, false, firstSplash);
     414                goto DoneTrying;
     415            }
     416
     417            // if nothing is supplied, fall back on the original dialog
     418            else
     419            {
     420                this.WinFramework.LoadConnectionSpecs(LocalPersistentStore.CreateDefaultStorage(true), "BSDX");
     421                login = this.WinFramework.CreateLoginProcess();
     422                login.AutoSetDivisionToLastLookup = false;
     423                login.AttemptUserInputLogin("Clincal Scheduling Log-in", 3, true, firstSplash);
     424
     425                goto DoneTrying;
     426            }
     427
     428DoneTrying:
     429            if (!login.WasSuccessful)
     430            {
     431                return false;
     432            }
     433
     434            LocalSession local = this.WinFramework.LocalSession;
     435
     436            if ((this.WinFramework.Context.User.Division == null) && !this.WinFramework.AttemptUserInputSetDivision("Set Initial Division", firstSplash))
     437            {
     438                return false;
     439            }
     440
     441           
     442
     443            this.RemoteSession = this.WinFramework.PrimaryRemoteSession;
     444
    362445            //Tie delegate to Events generated by BMX.
    363             m_ConnectInfo.BMXNetEvent += CDocMgrEventDelegate;
    364             //Disable polling (But does this really work???? I don't see how it gets disabled)
    365             m_ConnectInfo.EventPollingEnabled = false;
    366 
     446            this.RemoteSession.EventServices.RpmsEvent += this.CDocMgrEventHandler;
     447            //Disable polling
     448            this.RemoteSession.EventServices.IsEventPollingEnabled = false;
     449
     450            //Second splash screens
    367451            //Show a splash screen while initializing; define delegates to remote thread
    368             DSplash m_ds = new DSplash();
    369             DSplash.dSetStatus setStatusDelegate = new DSplash.dSetStatus(m_ds.SetStatus);
    370             DSplash.dAny closeSplashDelegate = new DSplash.dAny(m_ds.RemoteClose);
    371             DSplash.dProgressBarSet setMaxProgressDelegate = new DSplash.dProgressBarSet(m_ds.RemoteProgressBarMaxSet);
    372             DSplash.dProgressBarSet setProgressDelegate = new DSplash.dProgressBarSet(m_ds.RemoteProgressBarValueSet);
     452            DSplash secondSplash = new DSplash();
     453            DSplash.dSetStatus setStatusDelegate = new DSplash.dSetStatus(secondSplash.SetStatus);
     454            DSplash.dAny closeSplashDelegate = new DSplash.dAny(secondSplash.RemoteClose);
     455            DSplash.dProgressBarSet setMaxProgressDelegate = new DSplash.dProgressBarSet(secondSplash.RemoteProgressBarMaxSet);
     456            DSplash.dProgressBarSet setProgressDelegate = new DSplash.dProgressBarSet(secondSplash.RemoteProgressBarValueSet);
    373457
    374458            //Start new thread for the Splash screen.
     
    376460            threadSplash.IsBackground = true; //expendable thread -- exit even if still running.
    377461            threadSplash.Name = "Splash Thread";
    378             threadSplash.Start(m_ds); // pass form as parameter.
     462            threadSplash.Start(secondSplash);
     463
     464            firstSplash.Close(); // close temporary splash now that the new one is up and running
    379465
    380466            //There are 21 steps to load the application. That's max for the progress bar.
    381467            setMaxProgressDelegate(21);
     468
     469            // smh--not used: System.Configuration.ConfigurationManager.GetSection("appSettings");
     470            setStatusDelegate("Connecting to VISTA");
     471
    382472           
    383             // smh--not used: System.Configuration.ConfigurationManager.GetSection("appSettings");
    384            
    385             setStatusDelegate("Connecting to VISTA");
    386            
     473            /*
    387474            //Try to connect using supplied values for Server and Port
    388475            //Why am I doing this? The library BMX net uses prompts for access and verify code
     
    462549                }
    463550                        }while (bRetry == true);
    464            
    465             //Printing
    466 
     551            */
     552
     553            //Printing Custom DLL. Perfect place for code injection!!!
     554            //*************************************************
    467555            string DllLocation = string.Empty;
    468556            System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(Application.StartupPath + @"\Printing\");
     
    495583                this.m_PrintingObject = Creator.PrintFactory();
    496584            }
    497            
     585           //************************************************
    498586           
    499587            //User Interface Culture (m_CultureName is set from the command line flag /culture)
     
    512600            }
    513601
     602            _dal = new DAL(RemoteSession);   // Data access layer
     603           
    514604            //Create global dataset
    515605                        _current.m_dsGlobal = new DataSet("GlobalDataSet");
     
    553643            setProgressDelegate(2);
    554644            setStatusDelegate("Setting encoding...");
    555 
     645            //PORT TODO: Set encoding
    556646            if (m_Encoding == String.Empty)
    557647            {
    558                 string utf8_server_support = m_ConnectInfo.bmxNetLib.TransmitRPC("BMX UTF-8", "");
     648                string utf8_server_support = RemoteSession.TransmitRPC("BMX UTF-8", "");
     649               
    559650                if (utf8_server_support == "1")
    560                     m_ConnectInfo.bmxNetLib.Encoder = System.Text.UTF8Encoding.UTF8;
     651                    RemoteSession.ConnectionEncoding = System.Text.UTF8Encoding.UTF8;
     652               
    561653            }
    562654                       
     
    565657            setProgressDelegate(3);
    566658                        setStatusDelegate("Setting Application Context to BSDXRPC...");
    567                         m_ConnectInfo.AppContext = "BSDXRPC";
     659                        RemoteSession.AppContext = "BSDXRPC";
    568660
    569661            //User Preferences Object
     
    571663            setStatusDelegate("Getting User Preferences from the Server...");
    572664
    573             _current.UserPreferences = new UserPreferences(); // Does the calling to do that...
     665            _current.UserPreferences = new UserPreferences(); // Constructor Does the calling to do that...
    574666           
    575667            //Load global recordsets
     
    583675            setProgressDelegate(6);
    584676            setStatusDelegate(statusConst + " Schedule User");
    585             DataTable dtUser = _dal.GetUserInfo(m_ConnectInfo.DUZ);
     677            DataTable dtUser = _dal.GetUserInfo(RemoteSession.User.Duz);
    586678            dtUser.TableName = "SchedulingUser";
    587679            m_dsGlobal.Tables.Add(dtUser);
     
    598690            setProgressDelegate(7);
    599691            setStatusDelegate(statusConst + " Access Types");
    600             DataTable dtAccessTypes = _dal.GetAccessTypes();
    601             dtAccessTypes.TableName = "AccessTypes";
    602             m_dsGlobal.Tables.Add(dtAccessTypes);
     692            DataTable dtAccessTypes = _dal.GetAccessTypes(m_dsGlobal, "AccessTypes");
    603693
    604694            //Get Access Groups
     
    680770            //cmd.CommandText = "SELECT BMXIEN 'HOSPITAL_LOCATION_ID', NAME 'HOSPITAL_LOCATION', DEFAULT_PROVIDER, STOP_CODE_NUMBER, INACTIVATE_DATE, REACTIVATE_DATE FROM HOSPITAL_LOCATION";
    681771            sCommandText = "BSDX HOSPITAL LOCATION";
    682             ConnectInfo.RPMSDataTable(sCommandText, "HospitalLocation", m_dsGlobal);
     772            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "HospitalLocation");
    683773            Debug.Write("LoadGlobalRecordsets -- HospitalLocation loaded\n");
    684774
     
    732822            setStatusDelegate(statusConst + " Providers");
    733823            sCommandText = "SELECT BMXIEN, NAME FROM NEW_PERSON WHERE INACTIVE_DATE = '' AND BMXIEN > 1";
    734             ConnectInfo.RPMSDataTable(sCommandText, "Provider", m_dsGlobal);
     824            RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "Provider");
    735825            Debug.Write("LoadGlobalRecordsets -- Provider loaded\n");
    736826
     
    740830            setStatusDelegate(statusConst + " Holiday");
    741831            sCommandText = "SELECT NAME, DATE FROM HOLIDAY WHERE INTERNAL[DATE] > '" + FMDateTime.Create(DateTime.Today).DateOnly.FMDateString + "'";
    742             ConnectInfo.RPMSDataTable(sCommandText, "HOLIDAY", m_dsGlobal);
     832            RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "HOLIDAY");
    743833            Debug.Write("LoadingGlobalRecordsets -- Holidays loaded\n");
    744834
     
    749839
    750840            setStatusDelegate("Setting Receive Timeout");
    751             _current.m_ConnectInfo.ReceiveTimeout = 30000; //30-second timeout
     841            _current.RemoteSession.ReceiveTimeout = 30000; //30-second timeout
    752842
    753843#if DEBUG
    754             _current.m_ConnectInfo.ReceiveTimeout = 600000; //longer timeout for debugging
     844            _current.RemoteSession.ReceiveTimeout = 600000; //longer timeout for debugging
    755845#endif
    756846                        // Event Subsriptions
     
    758848            //Table #16
    759849            setProgressDelegate(18);
    760             _current.m_ConnectInfo.SubscribeEvent("BSDX SCHEDULE");
     850            _current.RemoteSession.EventServices.Subscribe("BSDX SCHEDULE");
    761851                        //Table #17
    762852            setProgressDelegate(19);
    763             _current.m_ConnectInfo.SubscribeEvent("BSDX CALL WORKSTATIONS");
     853            _current.RemoteSession.EventServices.Subscribe("BSDX CALL WORKSTATIONS");
    764854                        //Table #18
    765855            setProgressDelegate(20);
    766             _current.m_ConnectInfo.SubscribeEvent("BSDX ADMIN MESSAGE");
     856            _current.RemoteSession.EventServices.Subscribe("BSDX ADMIN MESSAGE");
    767857                        //Table #19
    768858            setProgressDelegate(21);
    769             _current.m_ConnectInfo.SubscribeEvent("BSDX ADMIN SHUTDOWN");
    770 
    771                         _current.m_ConnectInfo.EventPollingInterval = 5000; //in milliseconds
    772                         _current.m_ConnectInfo.EventPollingEnabled = true;
    773                         _current.m_ConnectInfo.AutoFire = 12; //AutoFire every 12*5 seconds
     859            _current.RemoteSession.EventServices.Subscribe("BSDX ADMIN SHUTDOWN");
     860
     861                        _current.RemoteSession.EventServices.EventPollingInterval = 5000; //in milliseconds
     862                        _current.RemoteSession.EventServices.IsEventPollingEnabled = true;
     863                       
     864            //PORT TODO: No Autofire in BMX 4.0
     865            //_current.RemoteSession.EventServices. = 12; //AutoFire every 12*5 seconds
    774866
    775867            //Close Splash Screen
     
    785877                {
    786878                        string sCommandText = "SELECT * FROM BSDX_ACCESS_GROUP";
    787                         ConnectInfo.RPMSDataTable(sCommandText, "AccessGroup", m_dsGlobal);
     879                        RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "AccessGroup");
    788880                        Debug.Write("LoadGlobalRecordsets -- AccessGroups loaded\n");
    789881                }
     
    792884                {
    793885                        string sCommandText = "BSDX GET ACCESS GROUP TYPES";
    794                         ConnectInfo.RPMSDataTable(sCommandText, "AccessGroupType", m_dsGlobal);
     886            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "AccessGroupType");
    795887                        Debug.Write("LoadGlobalRecordsets -- AccessGroupTypes loaded\n");
    796888                }
     
    798890                public void LoadBSDXResourcesTable()
    799891                {
    800                         string sCommandText = "BSDX RESOURCES^" + m_ConnectInfo.DUZ;
    801                         ConnectInfo.RPMSDataTable(sCommandText, "Resources", m_dsGlobal);
     892                        string sCommandText = "BSDX RESOURCES^" + RemoteSession.User.Duz;
     893            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "Resources");
    802894                        Debug.Write("LoadGlobalRecordsets -- Resources loaded\n");
    803895                }
     
    809901                        //to which user has access
    810902                        //Fields are: RESOURCE_GROUPID, RESOURCE_GROUP
    811                         string sCommandText = "BSDX RESOURCE GROUPS BY USER^" + m_ConnectInfo.DUZ;
    812                         ConnectInfo.RPMSDataTable(sCommandText, "ResourceGroup", m_dsGlobal);
     903                        string sCommandText = "BSDX RESOURCE GROUPS BY USER^" + RemoteSession.User.Duz;
     904            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "ResourceGroup");
    813905                        Debug.Write("LoadGlobalRecordsets -- ResourceGroup loaded\n");
    814906                }
     
    821913                        //are returned.
    822914                        //Fields are: RESOURCE_GROUPID, RESOURCE_GROUP, RESOURCE_GROUP_ITEMID, RESOURCE_NAME, RESOURCE_ID
    823                         string sCommandText = "BSDX GROUP RESOURCE^" + m_ConnectInfo.DUZ;
    824                         ConnectInfo.RPMSDataTable(sCommandText, "GroupResources", m_dsGlobal);
     915                        string sCommandText = "BSDX GROUP RESOURCE^" + RemoteSession.User.Duz;
     916            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "GroupResources");
    825917                        Debug.Write("LoadGlobalRecordsets -- GroupResources loaded\n");
    826918                }
     
    831923                        //who possesses the BSDXZMENU security key.
    832924                        string sCommandText = "BSDX SCHEDULE USER";
    833                         ConnectInfo.RPMSDataTable(sCommandText, "ScheduleUser", m_dsGlobal);
     925            RemoteSession.TableFromCommand(sCommandText, m_dsGlobal, "ScheduleUser");
    834926                        Debug.Write("LoadGlobalRecordsets -- ScheduleUser loaded\n");
    835927                }
     
    850942            if (!bAllUsers)
    851943            {
    852                 sCommandText += String.Format(" WHERE INTERNAL[USERNAME] = {0}", m_ConnectInfo.DUZ);
    853             }
    854 
    855                         ConnectInfo.RPMSDataTable(sCommandText, "ResourceUser", m_dsGlobal);
     944                sCommandText += String.Format(" WHERE INTERNAL[USERNAME] = {0}", RemoteSession.User.Duz);
     945            }
     946
     947            RemoteSession.TableFromSQL(sCommandText, m_dsGlobal, "ResourceUser");
    856948                        Debug.Write("LoadGlobalRecordsets -- ResourceUser loaded\n");
    857949                }
     
    9681060                        if ((Views.Count == 0)&&(this.AvailabilityViews.Count == 0)&&(m_bExitOK == true))
    9691061                        {
    970                                 m_ConnectInfo.EventPollingEnabled = false;
    971                                 m_ConnectInfo.UnSubscribeEvent("BSDX SCHEDULE");
    972                                 m_ConnectInfo.CloseConnection();
     1062                                RemoteSession.EventServices.IsEventPollingEnabled = false;
     1063                                RemoteSession.EventServices.Unsubscribe("BSDX SCHEDULE");
     1064                RemoteSession.Close();
    9731065                                Application.Exit();
    9741066                        }
     
    9831075                        if ((Views.Count == 0)&&(this.AvailabilityViews.Count == 0)&&(m_bExitOK == true))
    9841076                        {
    985                                 m_ConnectInfo.bmxNetLib.CloseConnection();
     1077                RemoteSession.Close();
    9861078                                Application.Exit();
    9871079                        }
     
    11231215               
    11241216                //Used in Do loop
    1125                 bool bRetry = true;
     1217                //bool bRetry = true;
    11261218                               
    1127                 // Do Loop to deal with changing the server and the vagaries of user choices.
     1219                /*// Do Loop to deal with changing the server and the vagaries of user choices.
    11281220                                do
    11291221                                {
     
    11341226                        //so it can be re-used when BMX tries to log in again.
    11351227                        //Access and Verify code are prompted for in InitializeApp
    1136                                                 m_ConnectInfo.ChangeServerInfo();
     1228                        LoginProcess login = this.WinFramework.CreateLoginProcess();
     1229                        login.AttemptUserInputLogin("ReLog-in", 3, true, null);
    11371230                                                bRetry = false;
    11381231                                        }
     
    11571250                                        }
    11581251                                } while (bRetry == true);
    1159 
     1252                */
     1253               
    11601254                //Parameter for initialize app tells it that this is a re-login and forces a new access and verify code.
    11611255                bool isEverythingOkay = this.InitializeApp(true);
     
    11941288                private void mnuRPMSLogin_Click(object sender, EventArgs e)
    11951289                {
    1196                         //Warn that changing login will close all schedules
     1290            mnuRPMSServer_Click(sender, e);
     1291           
     1292            /* v 1.7 to support BMX 4 -- commented out -- smh
     1293            //Warn that changing login will close all schedules
    11971294                        if (MessageBox.Show("Are you sure you want to close all schedules and login to VistA?", "Clinical Scheduling", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK)
    11981295                                return;
     
    12061303                                CloseAll();
    12071304                                m_bExitOK = true;
     1305
     1306                LoginProcess login = this.WinFramework.CreateLoginProcess();
     1307                login.AttemptUserInputLogin("Clincal Scheduling", 3, true, null);
     1308                //m_ConnectInfo.bmxNetLib.StartLog();    //This line turns on logging of messages
     1309
     1310                if (!login.WasSuccessful)
     1311                {
     1312                    return;
     1313                }
     1314
     1315                LocalSession local = this.WinFramework.LocalSession;
     1316
     1317                if ((this.WinFramework.Context.User.Division == null) && !this.WinFramework.AttemptUserInputSetDivision("Set Initial Division", null))
     1318                {
     1319                    return;
     1320                }
     1321
     1322                this.RemoteSession = this.WinFramework.PrimaryRemoteSession;
    12081323
    12091324                //Parameter for initialize app tells it that this is a re-login and forces a new access and verify code.
     
    12331348                                throw ex;
    12341349                        }
    1235        
     1350                */
    12361351                }
    12371352
     
    12901405                        {
    12911406                                //System.IntPtr pHandle = this.Handle;
    1292                                 RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(ConnectInfo.RPMSDataTable);
     1407                                RPMSDataTableDelegate rdtd = new RPMSDataTableDelegate(RemoteSession.TableFromCommand);
    12931408                                //dtOut = (DataTable) this.Invoke(rdtd, new object[] {sSQL, sTableName});
    1294                 dtOut = rdtd.Invoke(sSQL, sTableName);
     1409                dtOut = RemoteSession.TableFromCommand(sSQL);
     1410                dtOut.TableName = sTableName;
     1411
    12951412                        }
    12961413
     
    13071424                public void ChangeDivision(System.Windows.Forms.Form frmCaller)
    13081425                {
    1309                         this.ConnectInfo.ChangeDivision(frmCaller);
     1426            WinFramework.AttemptUserInputSetDivision("Change Division", frmCaller);
     1427
     1428            RemoteSession = WinFramework.PrimaryRemoteSession;
     1429
    13101430                        foreach (CGView v in _views.Keys)
    13111431                        {
Note: See TracChangeset for help on using the changeset viewer.