Example #1
0
        // Delete file image QRCode after print Supervisee particulars to avoid over memory. The image QRCode is auto generate to show on view SuperviseeParticulars
        public void DeleteQRCodeImageFileTemp()
        {
            Session session = Session.Instance;

            Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            if (currentUser != null)
            {
                Trinity.BE.User supervisee = null;
                if (currentUser.Role == EnumUserRoles.DutyOfficer)
                {
                    supervisee = (Trinity.BE.User)session[CommonConstants.SUPERVISEE];
                }
                else
                {
                    supervisee = currentUser;
                }
                if (supervisee != null)
                {
                    string fileName = String.Format("{0}/Temp/{1}", CSCallJS.curDir, "QRCode_" + supervisee.NRIC + ".png");
                    if (System.IO.File.Exists(fileName))
                    {
                        System.IO.File.Delete(fileName);
                    }
                }
            }
        }
Example #2
0
        //private void GetCardInfoSucceeded(string cardUID)
        //{
        //    if (_isSmartCardToLogin)
        //    {
        //        // get local user info
        //        DAL_User dAL_User = new DAL_User();
        //        var user = dAL_User.GetUserBySmartCardId(cardUID);

        //        if (user != null)
        //        {
        //            if (user.Role == EnumUserRoles.DutyOfficer)
        //            {
        //                Session session = Session.Instance;
        //                session.IsSmartCardAuthenticated = true;
        //                Session.Instance[CommonConstants.USER_LOGIN] = user;
        //                this.LayerWeb.RunScript("$('.status-text').css('color','#000').text('Your smart card is authenticated.');");
        //                // Stop SCardMonitor
        //                SmartCardReaderUtil.Instance.StopSmartCardMonitor();
        //                // raise succeeded event
        //                SmartCard_OnSmartCardSucceeded();
        //            }
        //            else
        //            {
        //                SmartCard_OnSmartCardFailed("You do not have permission to access this page");
        //            }
        //        }
        //        else
        //        {
        //            // raise failed event
        //            SmartCard_OnSmartCardFailed("Unable to read your smart card");
        //        }
        //    }
        //}

        private void Fingerprint_OnFingerprintSucceeded()
        {
            _fingerprintFailed = 0;
            //
            // Login successfully
            //
            // Create a session object to store UserLogin information
            Session session = Session.Instance;

            session.IsFingerprintAuthenticated = true;

            Trinity.BE.User user = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            if (user.Role == EnumUserRoles.DutyOfficer)
            {
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Fingerprint authentication is successful.');");
                //APIUtils.SignalR.GetLatestNotifications();

                Trinity.SignalR.Client.Instance.UserLoggedIn(((Trinity.BE.User)Session.Instance[CommonConstants.USER_LOGIN]).UserId);
                Thread.Sleep(400);
                NavigateTo(NavigatorEnums.Queue);
            }
            else
            {
                MessageBox.Show("You do not have permission to access this page.");
                //Logout();
                session.IsSmartCardAuthenticated      = false;
                session.IsFingerprintAuthenticated    = false;
                session[CommonConstants.USER_LOGIN]   = null;
                session[CommonConstants.PROFILE_DATA] = null;
                NavigateTo(NavigatorEnums.Authentication_SmartCard);
            }
        }
Example #3
0
        private void Main_OnFacialRecognitionFailed()
        {
            FacialRecognition.Instance.OnFacialRecognitionFailed     -= Main_OnFacialRecognitionFailed;
            FacialRecognition.Instance.OnFacialRecognitionSucceeded  -= Main_OnFacialRecognitionSucceeded;
            FacialRecognition.Instance.OnFacialRecognitionProcessing -= Main_OnFacialRecognitionProcessing;
            this.Invoke((MethodInvoker)(() =>
            {
                FacialRecognition.Instance.Dispose();
            }));

            Session session = Session.Instance;

            Trinity.BE.User user         = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            string          errorMessage = "User '" + user.Name + "' cannot complete facial authentication";

            Trinity.SignalR.Client.Instance.SendToAppDutyOfficers(user.UserId, "Facial authentication failed", errorMessage, EnumNotificationTypes.Error);

            // show message box to user
            MessageBox.Show("Facial Recognition failed.\nPlease report to the Duty Officer", "Authentication Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);

            // navigate to smartcard login page
            NavigateTo(NavigatorEnums.Authentication_SmartCard);

            // reset counter
            _fingerprintFailed = 0;
        }
Example #4
0
        private void CloseMUBDoor_Callback(object sender, EnumMUBDoorStatus status)
        {
            LEDStatusLightingUtil.Instance.MUBDoorStatusChanged -= CloseMUBDoor_Callback;

            if (status == EnumMUBDoorStatus.FullyClosed)
            {
                // Complete test. Remove queue number from Queue Monitor
                Session         session     = Session.Instance;
                Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                if (currentUser == null)
                {
                    // Check why current user is null
                    this._web.RunScript("$('.status-text').css('color','#000').text('The current user is null');");
                    return;
                }
                // Remove queue number and inform others
                //new DAL_QueueDetails().RemoveQueueFromSSK(currentUser.UserId);
                Trinity.SignalR.Client.Instance.QueueCompleted(currentUser.UserId);

                //lblStatus.Text = "The door is fully close";
                this._web.RunScript("$('.status-text').css('color','#000').text('MUB and TT Labels Printing Completed. Logging out...');");

                //btnConfirm.Text = "Initialize MUB Applicator";
                this._web.RunScript("$('#ConfirmBtn').html('Logout');");

                //btnConfirm.Enabled = true;
                //this._web.RunScript("$('.ConfirmBtn').prop('disabled', false);");

                //btnConfirm.Tag = "0";
                this._web.RunScript("$('#lblNextAction').text('');");

                Thread.Sleep(2000);
                LogOut();
            }
        }
Example #5
0
        private void OnCardInserted(object sender, CardStatusEventArgs e)
        {
            SmartCardReaderUtil sCardMonitor = SmartCardReaderUtil.Instance;
            string cardUID = sCardMonitor.GetCardUID();

            if (!string.IsNullOrEmpty(cardUID))
            {
                // Scan smart card successfully
                DAL_User        dalUser = new DAL_User();
                Trinity.BE.User user    = dalUser.GetUserBySmartCardId(cardUID);
                if (user != null)
                {
                    MessageBox.Show("This smart card is already in used by another person. Please user another card.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                // Then stop Smart Card and Start to scan finger print
                sCardMonitor.StopSmartCardMonitor();
                btnScanSmartcard.Enabled = false;

                _currentUser.SmartCardId = cardUID;
                StartToScanFingerprint();

                UpdateNote("Scan smart card successfully. Please scan your finger print to continue", Color.Blue);
                return;
            }
            UpdateNote("Could not scan the smart card", Color.Red);
        }
Example #6
0
 private void GetCardInfoSucceeded(string cardUID)
 {
     if (!_isFirstTimeLoaded)
     {
         Lib.LayerWeb.Invoke((MethodInvoker)(() =>
         {
             if (GetCurrentTab() == EnumDOTabName.Queue)
             {
                 DAL_User dAL_User = new DAL_User();
                 Trinity.BE.User user = dAL_User.GetUserBySmartCardId(cardUID);
                 if (user != null)
                 {
                     var queue = new DAL_QueueNumber().GetMyQueueToday(user.UserId);
                     if (queue != null && queue.QueueDetails.Any(d => d.Station == EnumStation.DUTYOFFICER && d.Status == EnumQueueStatuses.TabSmartCard))
                     {
                         if (_jsCallCS.GetResultUT(user.NRIC, DateTime.Now.Date) == EnumUTResult.NEG && queue.QueueDetails.Any(d => d.Station == EnumStation.SSP && d.Status == EnumQueueStatuses.NotRequired))
                         {
                             new DAL_QueueNumber().UpdateQueueStatusByUserId(user.UserId, EnumStation.DUTYOFFICER, EnumQueueStatuses.Finished, EnumStation.DUTYOFFICER, EnumQueueStatuses.Finished, string.Empty, EnumQueueOutcomeText.UnconditionalRelease);
                             this.LayerWeb.InvokeScript("reloadDataQueues");
                         }
                         else
                         {
                             this.LayerWeb.LoadPopupHtml("QueuePopupOutcome.html", new
                             {
                                 UserId = user.UserId,
                                 Name = user.Name
                             });
                         }
                     }
                 }
             }
         }));
     }
 }
Example #7
0
        public void OnEventPrintFinished()
        {
            if (_PrintMUBSucceed && _PrintTTSucceed)
            {
                // Update queue status is finished
                Session         session     = Session.Instance;
                Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                if (currentUser == null)
                {
                    // Check why current user is null
                    this._web.RunScript("$('.status-text').css('color','#000').text('The current user is null');");
                    return;
                }
                Trinity.BE.User supervisee = null;
                if (currentUser.Role == EnumUserRoles.DutyOfficer)
                {
                    supervisee = (Trinity.BE.User)session[CommonConstants.SUPERVISEE];
                }
                else
                {
                    supervisee = currentUser;
                }
                var dalQueue = new DAL_QueueNumber();
                dalQueue.UpdateQueueStatusByUserId(supervisee.UserId, EnumStation.SSA, EnumQueueStatuses.Finished, EnumStation.UHP, EnumQueueStatuses.Processing, "", EnumQueueOutcomeText.Processing);
                //this._web.LoadPageHtml("PrintingMUBAndTTLabels.html");
                //this._web.RunScript("$('#WaitingSection').hide();$('#CompletedSection').show(); ; ");
                //this._web.RunScript("$('.status-text').css('color','#000').text('Please collect your labels');");
                //this._web.InvokeScript("countdownLogout");

                DeleteQRCodeImageFileTemp();

                CheckMUBPrintingLabellingProgress();
                this._web.RunScript("$('.status-text').css('color','#000').text('Printing and labelling is in progress...');");
                this._web.RunScript("$('#ConfirmBtn').html('Waiting...');");
                this._web.RunScript("$('#lblNextAction').text('CheckIfMUBIsRemoved');");
            }
            else
            {
                _popupModel.Title         = "Printing Failed";
                _popupModel.Message       = "Unable to print labels.\nPlease report to the Duty Officer";
                _popupModel.IsShowLoading = false;
                _popupModel.IsShowOK      = true;

                if (_PrintTTSucceed)
                {
                    _popupModel.Message = "Unable to print MUB labels.\nPlease report to the Duty Officer";
                }
                if (_PrintMUBSucceed)
                {
                    _popupModel.Message = "Unable to print TT labels.\nPlease report to the Duty Officer";
                }
                this._web.InvokeScript("showPopupModal", JsonConvert.SerializeObject(_popupModel));
            }
        }
Example #8
0
        private void Fingerprint_OnFingerprintFailed()
        {
            // Increase failed counter
            _fingerprintFailed++;

            Trinity.BE.User user = (Trinity.BE.User)Session.Instance[CommonConstants.USER_LOGIN];

            // exceeded max failed
            if (_fingerprintFailed > 3)
            {
                // set message
                string errorMessage = "Unable to read " + user.Name + "'s fingerprint.";

                // Send Notification to duty officer
                Trinity.SignalR.Client.Instance.SendToAppDutyOfficers(user.UserId, "Fingerprint Authentication failed", errorMessage, EnumNotificationTypes.Error);

                //Trinity.BE.PopupModel popupModel = new Trinity.BE.PopupModel();
                //popupModel.Title = "Authorization Failed";
                //popupModel.Message = "Unable to read your fingerprint.\nPlease report to the Duty Officer";
                //popupModel.IsShowLoading = false;
                //popupModel.IsShowOK = true;

                //LayerWeb.InvokeScript("showPopupModal", JsonConvert.SerializeObject(popupModel));

                // Reset failed count
                _fingerprintFailed = 0;

                // Navigate to next page: Facial Authentication
                // Facial SDK has a trouble. Bypass temporarily
                NavigateTo(NavigatorEnums.Authentication_Facial);
                //NavigateTo(NavigatorEnums.Authentication_SmartCard);
                return;
            }

            // display failed on UI
            LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your finger on the reader');");
            LayerWeb.RunScript("$('[status-authentication]').text('FingerPrint Verification Failed : " + _fingerprintFailed + "');");
            // restart identification
            if (user != null)
            {
                List <byte[]> fingerprintTemplates = new List <byte[]>()
                {
                    user.LeftThumbFingerprint,
                    user.RightThumbFingerprint
                };
                FingerprintReaderUtil.Instance.StartIdentification(fingerprintTemplates, Fingerprint_OnIdentificationCompleted);
            }
            else
            {
                Debug.WriteLine("Fingerprint_OnFingerprintFailed warning: USER_LOGIN is null, can not restart identification.");
            }
        }
Example #9
0
        public void ManualLogin(string username, string password)
        {
            EventCenter eventCenter = EventCenter.Default;

            UserManager <ApplicationUser> userManager = ApplicationIdentityManager.GetUserManager();
            ApplicationUser appUser = userManager.Find(username, password);

            if (appUser != null)
            {
                // Authenticated successfully
                // Check if the current user is an Duty Officer or not
                if (userManager.IsInRole(appUser.Id, EnumUserRoles.DutyOfficer))
                {
                    // Authorized successfully
                    Trinity.BE.User user = new Trinity.BE.User()
                    {
                        RightThumbFingerprint = appUser.RightThumbFingerprint,
                        LeftThumbFingerprint  = appUser.LeftThumbFingerprint,
                        IsFirstAttempt        = appUser.IsFirstAttempt,
                        Name        = appUser.Name,
                        NRIC        = appUser.NRIC,
                        Role        = EnumUserRoles.DutyOfficer,
                        SmartCardId = appUser.SmartCardId,
                        Status      = appUser.Status,
                        UserId      = appUser.Id
                    };
                    Session session = Session.Instance;
                    session.IsUserNamePasswordAuthenticated = true;
                    session.Role = EnumUserRoles.DutyOfficer;
                    session[CommonConstants.USER_LOGIN] = user;

                    eventCenter.RaiseEvent(new Trinity.Common.EventInfo()
                    {
                        Code = 0, Name = EventNames.LOGIN_SUCCEEDED
                    });
                }
                else
                {
                    eventCenter.RaiseEvent(new Trinity.Common.EventInfo()
                    {
                        Code = -2, Name = EventNames.LOGIN_FAILED, Message = "You do not have permission to access this page."
                    });
                }
            }
            else
            {
                eventCenter.RaiseEvent(new Trinity.Common.EventInfo()
                {
                    Code = -1, Name = EventNames.LOGIN_FAILED, Message = "Your username or password is incorrect."
                });
            }
        }
Example #10
0
        private void Main_OnFacialRecognitionFailed()
        {
            Session session = Session.Instance;

            if (!session.IsFacialAuthenticated)
            {
                FacialRecognition.Instance.OnFacialRecognitionFailed     -= Main_OnFacialRecognitionFailed;
                FacialRecognition.Instance.OnFacialRecognitionSucceeded  -= Main_OnFacialRecognitionSucceeded;
                FacialRecognition.Instance.OnFacialRecognitionProcessing -= Main_OnFacialRecognitionProcessing;
                FacialRecognition.Instance.OnCameraInitialized           -= Main_OnCameraInitialized;

                this.Invoke((MethodInvoker)(() =>
                {
                    FacialRecognition.Instance.Dispose();
                }));

                Trinity.BE.User user         = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                string          errorMessage = "User '" + user.Name + "' cannot complete facial authentication";
                Trinity.SignalR.Client.Instance.SendToAppDutyOfficers(user.UserId, "Facial authentication failed", errorMessage, EnumNotificationTypes.Error);

                // show message box to user
                //MessageBox.Show("Facial authentication failed", "Facial Authentication", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Trinity.BE.PopupModel popupModel = new Trinity.BE.PopupModel();
                popupModel.Title         = "Authorization Failed";
                popupModel.Message       = "Facial Recognition failed.\nPlease report to the Duty Officer";
                popupModel.IsShowLoading = false;
                popupModel.IsShowOK      = true;

                LayerWeb.InvokeScript("showPopupModal", JsonConvert.SerializeObject(popupModel));

                // navigate to smartcard login page
                NavigateTo(NavigatorEnums.Authentication_SmartCard);

                // reset counter
                _fingerprintFailed = 0;
            }
            try
            {
                StackTrace trace  = new StackTrace();
                int        caller = 1;

                StackFrame frame = trace.GetFrame(caller);

                string callerName = frame.GetMethod().Name;
                LogManager.Debug("Main_OnFacialRecognitionFailed: " + callerName);
            }
            catch (Exception)
            {
            }
        }
Example #11
0
        private void Fingerprint_OnFingerprintFailed()
        {
            // increase counter
            _fingerprintFailed++;

            // get USER_LOGIN
            Session session = Session.Instance;

            Trinity.BE.User user = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];

            // exceeded max failed
            if (_fingerprintFailed > 3)
            {
                //string message = "Unable to read your fingerprint. Please report to the Duty Officer";
                string message = "Unable to read " + user.Name + "'s fingerprint.";
                // Send Notification to duty officer
                //APIUtils.SignalR.SendNotificationToDutyOfficer(message, message);

                // show message box to user
                //MessageBox.Show(message, "Authentication failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
                CSCallJS.ShowMessage(LayerWeb, "Authentication Failed", message);

                // navigate to smartcard login page
                NavigateTo(NavigatorEnums.Authentication_Facial);

                // reset counter
                _fingerprintFailed = 0;

                return;
            }

            // display failed on UI
            LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your finger on the reader. Failed: " + _fingerprintFailed + "');");

            // restart identification
            if (user != null)
            {
                List <byte[]> fingerprintTemplates = new List <byte[]>()
                {
                    user.LeftThumbFingerprint,
                    user.RightThumbFingerprint
                };

                FingerprintReaderUtil.Instance.StartIdentification(fingerprintTemplates, Fingerprint_OnIdentificationCompleted);
            }
            else
            {
                Debug.WriteLine("Fingerprint_OnFingerprintFailed warning: USER_LOGIN is null, can not restart identification.");
            }
        }
Example #12
0
        private void Main_OnFacialRecognitionSucceeded()
        {
            LayerWeb.RunScript("$('.status-text').css('color','#000').text('You have been authenticated.');");
            FacialRecognition.Instance.OnFacialRecognitionFailed     -= Main_OnFacialRecognitionFailed;
            FacialRecognition.Instance.OnFacialRecognitionSucceeded  -= Main_OnFacialRecognitionSucceeded;
            FacialRecognition.Instance.OnFacialRecognitionProcessing -= Main_OnFacialRecognitionProcessing;
            FacialRecognition.Instance.OnCameraInitialized           -= Main_OnCameraInitialized;

            this.Invoke((MethodInvoker)(() =>
            {
                FacialRecognition.Instance.Dispose();
            }));

            //
            // Login successfully
            //
            // Create a session object to store UserLogin information
            Session session = Session.Instance;

            session.IsFacialAuthenticated = true;

            Thread.Sleep(200);

            // if role = 0 (duty officer), redirect to NRIC.html
            // else (supervisee), redirect to Supervisee.html
            Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            if (currentUser.Role == EnumUserRoles.DutyOfficer)
            {
                // navigate to Authentication_NRIC
                NavigateTo(NavigatorEnums.Authentication_NRIC);
            }
            else if (currentUser.Role.Equals(EnumUserRoles.USA, StringComparison.InvariantCultureIgnoreCase) || currentUser.Role.Equals(EnumUserRoles.Supervisee, StringComparison.InvariantCultureIgnoreCase))
            {
                // navigate to SuperviseeParticulars page
                Trinity.SignalR.Client.Instance.UserLoggedIn(currentUser.UserId);
                NavigateTo(NavigatorEnums.Supervisee_Particulars);
            }
            else
            {
                _popupModel.Title         = "Login Failed";
                _popupModel.Message       = "You do not have permission to access this page.";
                _popupModel.IsShowLoading = false;
                _popupModel.IsShowOK      = true;
                LayerWeb.InvokeScript("showPopupModal", JsonConvert.SerializeObject(_popupModel));
            }
        }
Example #13
0
        private void Fingerprint_OnFingerprintSucceeded()
        {
            try
            {
                //
                // Login successfully
                //
                // Create a session object to store UserLogin information
                Session session = Session.Instance;
                session.IsFingerprintAuthenticated = true;
                LayerWeb.RunScript("$('[status-authentication]').text('');");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Fingerprint authentication is successful.');");

                Thread.Sleep(200);

                // if role = 0 (duty officer), redirect to NRIC.html
                // else (supervisee), redirect to Supervisee.html
                Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                if (currentUser.Role == EnumUserRoles.DutyOfficer)
                {
                    // navigate to Authentication_NRIC
                    NavigateTo(NavigatorEnums.Authentication_NRIC);
                }
                else if (currentUser.Role.Equals(EnumUserRoles.USA, StringComparison.InvariantCultureIgnoreCase) || currentUser.Role.Equals(EnumUserRoles.Supervisee, StringComparison.InvariantCultureIgnoreCase))
                {
                    // navigate to SuperviseeParticulars page
                    Trinity.SignalR.Client.Instance.UserLoggedIn(currentUser.UserId);
                    NavigateTo(NavigatorEnums.Supervisee_Particulars);
                }
                else
                {
                    _popupModel.Title         = "Login Failed";
                    _popupModel.Message       = "You do not have permission to access this page.";
                    _popupModel.IsShowLoading = false;
                    _popupModel.IsShowOK      = true;
                    LayerWeb.InvokeScript("showPopupModal", JsonConvert.SerializeObject(_popupModel));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error in Fingerprint_OnFingerprintSucceeded. Details:" + ex.Message);
            }
        }
Example #14
0
        public void Start()
        {
            // load page
            _web.LoadPageHtml("Supervisee.html");



            // get user login info
            Session session = Session.Instance;



            Trinity.BE.User currentUser = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            Trinity.BE.User supervisee  = null;
            if (currentUser.Role == EnumUserRoles.DutyOfficer)
            {
                supervisee = (Trinity.BE.User)session[CommonConstants.SUPERVISEE];
            }
            else
            {
                supervisee = currentUser;
            }

            List <Trinity.BE.Notification> myNotifications = new Trinity.DAL.DAL_Notification().GetAllNotifications(supervisee.UserId);

            if (myNotifications != null)
            {
                var unReadCount = myNotifications.Count;
                Lib.LayerWeb.Invoke((System.Windows.Forms.MethodInvoker)(() =>
                {
                    Lib.LayerWeb.PushNoti(unReadCount);
                }));
            }
            //_web.InvokeScript("IsDutyOfficer", user.Role == EnumUserRoles.DutyOfficer);

            //// if user login is dutyofficer, implement duty officer override
            //if (user.Role == EnumUserRoles.DutyOfficer)
            //{
            //    CSCallJS.DisplayNRICLogin(_web);
            //}
        }
Example #15
0
        private void Main_OnFacialRecognitionSucceeded()
        {
            LayerWeb.RunScript("$('.status-text').css('color','#000').text('You have been authenticated.');");
            FacialRecognition.Instance.OnFacialRecognitionFailed     -= Main_OnFacialRecognitionFailed;
            FacialRecognition.Instance.OnFacialRecognitionSucceeded  -= Main_OnFacialRecognitionSucceeded;
            FacialRecognition.Instance.OnFacialRecognitionProcessing -= Main_OnFacialRecognitionProcessing;
            this.Invoke((MethodInvoker)(() =>
            {
                FacialRecognition.Instance.Dispose();
            }));

            //
            // Login successfully
            //
            // Create a session object to store UserLogin information
            Session session = Session.Instance;

            session.IsFacialAuthenticated = true;

            Thread.Sleep(1000);

            // if role = 0 (duty officer), redirect to NRIC.html
            // else (supervisee), redirect to Supervisee.html
            Trinity.BE.User user = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
            if (user.Role == EnumUserRoles.DutyOfficer)
            {
                // navigate to Authentication_NRIC
                NavigateTo(NavigatorEnums.Authentication_NRIC);
            }
            else
            {
                session[CommonConstants.SUPERVISEE] = user;
                session[CommonConstants.USER_LOGIN] = null;
                // navigate to SuperviseeParticulars page
                Trinity.SignalR.Client.Instance.UserLoggedIn(user.UserId);
                NavigateTo(NavigatorEnums.Supervisee_Particulars);
            }
        }
Example #16
0
        private void NavigateTo(NavigatorEnums navigatorEnum)
        {
            // navigate
            if (navigatorEnum == NavigatorEnums.Login)
            {
                LayerWeb.LoadPageHtml("Login.html");
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_SmartCard)
            {
                _fingerprintFailed  = 0;
                _smartCardFailed    = 0;
                _isSmartCardToLogin = true;
                LayerWeb.LoadPageHtml("Authentication/SmartCard.html");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your smart card on the reader.');");
                SmartCard.Instance.Start();
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_Fingerprint)
            {
                try
                {
                    Session         session = Session.Instance;
                    Trinity.BE.User user    = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                    LayerWeb.LoadPageHtml("Authentication/FingerPrint.html");
                    LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your finger on the reader.');");
                    Fingerprint.Instance.Start(new System.Collections.Generic.List <byte[]>()
                    {
                        user.LeftThumbFingerprint, user.RightThumbFingerprint
                    });
                }
                catch (System.IO.FileNotFoundException ex)
                {
                    Console.WriteLine("File missing:\n");
                    Console.WriteLine(ex.FileName);
                }
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_Facial)
            {
                Session         session = Session.Instance;
                Trinity.BE.User user    = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                LayerWeb.LoadPageHtml("Authentication/FacialRecognition.html");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please remain still as Facial Recognition Check takes place.');");
                FacialRecognition.Instance.OnFacialRecognitionFailed     += Main_OnFacialRecognitionFailed;
                FacialRecognition.Instance.OnFacialRecognitionSucceeded  += Main_OnFacialRecognitionSucceeded;
                FacialRecognition.Instance.OnFacialRecognitionProcessing += Main_OnFacialRecognitionProcessing;
                if (user.User_Photo1 == null || user.User_Photo1.Length == 0)
                {
                    MessageBox.Show("User photo is null");
                    return;
                }
                this.Invoke((MethodInvoker)(() =>
                {
                    Point startLocation = new Point((Screen.PrimaryScreen.Bounds.Size.Width / 2) - 800 / 2, (Screen.PrimaryScreen.Bounds.Size.Height / 2) - 450 / 2);
                    FacialRecognition.Instance.StartFacialRecognition(startLocation, new System.Collections.Generic.List <byte[]>()
                    {
                        user.User_Photo1, user.User_Photo2
                    });
                }));
            }
            else if (navigatorEnum == NavigatorEnums.Queue)
            {
                _isSmartCardToLogin = false;
                LayerWeb.LoadPageHtml("Queue.html");
            }


            // set current page
            _currentPage = navigatorEnum;

            // display options in Authentication_SmartCard page
            if (_currentPage == NavigatorEnums.Authentication_SmartCard)
            {
                _displayLoginButtonStatus = false;
                CSCallJS.DisplayLogoutButton(this.LayerWeb, _displayLoginButtonStatus);
            }

            // display options in the rest
            if (!_displayLoginButtonStatus && _currentPage != NavigatorEnums.Authentication_SmartCard)
            {
                _displayLoginButtonStatus = true;
                CSCallJS.DisplayLogoutButton(this.LayerWeb, _displayLoginButtonStatus);
            }
        }
Example #17
0
        public void Start()
        {
            Trinity.BE.User supervisee = _jsCallCS.getSuperviseeLogin();
            if (supervisee == null)
            {
                _jsCallCS.LogOut();
                return;
            }

            LabelInfo labelInfo = null;

            if (supervisee.Role.Equals(EnumUserRoles.USA, StringComparison.OrdinalIgnoreCase))
            {
                var dalLabel = new DAL_Labels();
                var lable    = dalLabel.GetByUserID(supervisee.UserId, EnumLabelType.MUB, DateTime.Today);
                if (lable == null)
                {
                    string MarkingNumber = new DAL_SettingSystem().GenerateMarkingNumber();
                    dalLabel.Insert(new Trinity.BE.Label
                    {
                        UserId      = supervisee.UserId,
                        Label_Type  = EnumLabelType.TT,
                        CompanyName = CommonConstants.COMPANY_NAME,
                        MarkingNo   = MarkingNumber,
                        NRIC        = supervisee.NRIC,
                        Name        = supervisee.Name,
                        LastStation = EnumStation.ALK
                    });
                    dalLabel.Insert(new Trinity.BE.Label
                    {
                        UserId      = supervisee.UserId,
                        Label_Type  = EnumLabelType.MUB,
                        CompanyName = CommonConstants.COMPANY_NAME,
                        MarkingNo   = MarkingNumber,
                        NRIC        = supervisee.NRIC,
                        Name        = supervisee.Name,
                        LastStation = EnumStation.ALK
                    });
                    lable = dalLabel.GetByUserID(supervisee.UserId, EnumLabelType.MUB, DateTime.Today);
                }
                labelInfo = new LabelInfo
                {
                    UserId      = lable.UserId,
                    Name        = lable.Name,
                    NRIC        = lable.NRIC,
                    Label_Type  = EnumLabelType.MUB,
                    Date        = DateTime.Now.ToString("dd/MM/yyyy"),
                    CompanyName = lable.CompanyName,
                    LastStation = EnumStation.ALK,
                    MarkingNo   = lable.MarkingNo,
                    DrugType    = "NA",
                    QRCode      = lable.QRCode
                };
            }
            else if (supervisee.Role.Equals(EnumUserRoles.Supervisee, StringComparison.OrdinalIgnoreCase))
            {
                var dalQueue = new DAL_QueueNumber();
                var myQueue  = dalQueue.GetMyQueueToday(supervisee.UserId);
                if (myQueue == null)
                {
                    _web.ShowMessage("Please register for a queue number at " + EnumStation.ARK + " first.");
                    _jsCallCS.LogOut();
                    return;
                }
                else if (myQueue != null && myQueue.QueueDetails.Any(d => d.Station == EnumStation.ARK && d.Status == EnumQueueStatuses.Waiting))
                {
                    _web.ShowMessage("Please wait for your queue number to appear under the \"Now Serving\" list.");
                    _jsCallCS.LogOut();
                    return;
                }

                dalQueue.UpdateQueueStatusByUserId(supervisee.UserId, EnumStation.ARK, EnumQueueStatuses.Processing, EnumStation.ALK, EnumQueueStatuses.Processing, "Printing MUB/TT labels", EnumQueueOutcomeText.Processing);
                var    lable     = new DAL_Labels().GetByUserID(supervisee.UserId, EnumLabelType.MUB, DateTime.Today);
                string markingNo = lable.MarkingNo;
                labelInfo = new LabelInfo
                {
                    UserId      = lable.UserId,
                    Name        = lable.Name,
                    NRIC        = lable.NRIC,
                    Label_Type  = EnumLabelType.MUB,
                    Date        = DateTime.Now.ToString("dd/MM/yyyy"),
                    CompanyName = lable.CompanyName,
                    LastStation = EnumStation.ALK,
                    MarkingNo   = markingNo,
                    DrugType    = "NA",
                    QRCode      = lable.QRCode
                };
            }

            using (var ms = new System.IO.MemoryStream(labelInfo.QRCode))
            {
                System.IO.Directory.CreateDirectory(String.Format("{0}/Temp", CSCallJS.curDir));
                string fileName = String.Format("{0}/Temp/{1}", CSCallJS.curDir, "QRCode_" + supervisee.NRIC + ".png");
                if (System.IO.File.Exists(fileName))
                {
                    System.IO.File.Delete(fileName);
                }
                var bitmap = System.Drawing.Image.FromStream(ms);
                bitmap.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
            }
            //profile model
            _web.LoadPageHtml("SuperviseeParticulars.html", labelInfo);
            _main._isPrintingMUBTT = false;
            if (_main._timerCheckLogout != null)
            {
                if (_main._timerCheckLogout.Enabled)
                {
                    _main._timerCheckLogout.Stop();
                }
                _main._timerCheckLogout.Start();
            }
        }
Example #18
0
 private void FormNewUser_Load(object sender, EventArgs e)
 {
     _currentUser        = new Trinity.BE.User();
     _currentUser.UserId = Guid.NewGuid().ToString();
 }
Example #19
0
        private void _NavigateToFormThread(object pram)
        {
            NavigatorEnums navigatorEnum = (NavigatorEnums)pram;

            // navigate
            if (navigatorEnum == NavigatorEnums.Authentication_SmartCard)
            {
                LayerWeb.LoadPageHtml("Authentication/SmartCard.html");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your smart card on the reader.');");
                SmartCard.Instance.Start();
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_Fingerprint)
            {
                Session         session = Session.Instance;
                Trinity.BE.User user    = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                LayerWeb.LoadPageHtml("Authentication/FingerPrint.html");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your thumb print on the reader.');");
                //if (user.LeftThumbFingerprint == null && user.RightThumbFingerprint == null)
                //{
                //    LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please place your thumb print on the reader.');");
                //}
                //else
                //{
                //    string errMsg = user.Name + "'s Fingerprint could not be found.";
                //    LayerWeb.RunScript("$('.status-text').css('color','#000').text('" + errMsg + "');");
                //}
                try
                {
                    Fingerprint.Instance.Start(new System.Collections.Generic.List <byte[]>()
                    {
                        user.LeftThumbFingerprint, user.RightThumbFingerprint
                    });
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_Facial)
            {
                Session         session = Session.Instance;
                Trinity.BE.User user    = (Trinity.BE.User)session[CommonConstants.USER_LOGIN];
                if ((user.User_Photo1 == null || user.User_Photo1.Length == 0) && (user.User_Photo2 == null || user.User_Photo2.Length == 0))
                {
                    Trinity.BE.PopupModel popupModel = new Trinity.BE.PopupModel();
                    popupModel.Title         = "Authorization Failed";
                    popupModel.Message       = "User '" + user.Name + "' doesn't have any photos";
                    popupModel.IsShowLoading = false;
                    popupModel.IsShowOK      = true;

                    LayerWeb.InvokeScript("showPopupModal", JsonConvert.SerializeObject(popupModel));

                    // navigate to smartcard login page
                    NavigateTo(NavigatorEnums.Authentication_SmartCard);
                    return;
                }
                LayerWeb.LoadPageHtml("Authentication/FacialRecognition.html");
                LayerWeb.RunScript("$('.status-text').css('color','#000').text('Please remain still as Facial Recognition Check takes place.');");
                FacialRecognition.Instance.OnFacialRecognitionFailed     += Main_OnFacialRecognitionFailed;
                FacialRecognition.Instance.OnFacialRecognitionSucceeded  += Main_OnFacialRecognitionSucceeded;
                FacialRecognition.Instance.OnFacialRecognitionProcessing += Main_OnFacialRecognitionProcessing;
                FacialRecognition.Instance.OnCameraInitialized           += Main_OnCameraInitialized;

                this.Invoke((MethodInvoker)(() =>
                {
                    Point startLocation = new Point((Screen.PrimaryScreen.Bounds.Size.Width / 2) - 800 / 2, (Screen.PrimaryScreen.Bounds.Size.Height / 2) - 450 / 2);
                    //Point startLocation = new Point((Screen.PrimaryScreen.Bounds.Size.Width / 2) - 400 / 2, (Screen.PrimaryScreen.Bounds.Size.Height / 2) - 400 / 2);
                    try
                    {
                        FacialRecognition.Instance.StartFacialRecognition(startLocation, new System.Collections.Generic.List <byte[]>()
                        {
                            user.User_Photo1, user.User_Photo2
                        });
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }));
            }
            else if (navigatorEnum == NavigatorEnums.Authentication_NRIC)
            {
                _nric.Start();
            }
            else if (navigatorEnum == NavigatorEnums.Supervisee_Particulars)
            {
                _superviseeParticulars.Start();
                //btnConfirm.Enabled = true;
            }
            else if (navigatorEnum == NavigatorEnums.Supervisee_NRIC)
            {
                _superviseeParticulars.Start();
                CSCallJS.DisplayNRICLogin(LayerWeb);
            }

            // set current page
            _currentPage = navigatorEnum;

            // display options in Authentication_SmartCard page
            if (_displayLoginButtonStatus && _currentPage == NavigatorEnums.Authentication_SmartCard)
            {
                _displayLoginButtonStatus = false;
                CSCallJS.DisplayLogoutButton(this.LayerWeb, _displayLoginButtonStatus);
            }

            // display options in the rest
            if (!_displayLoginButtonStatus && _currentPage != NavigatorEnums.Authentication_SmartCard)
            {
                _displayLoginButtonStatus = true;
                CSCallJS.DisplayLogoutButton(this.LayerWeb, _displayLoginButtonStatus);
            }
        }