示例#1
0
        /// <summary>
        /// Set options for the copy job.
        /// </summary>
        protected void SetOptions(RegusKioskOptionsManager regusKioskOptionsManager)
        {
            try
            {
                UpdateStatus($"Select option activity with Color Mode {_regusKioskPrintOptions.ColorMode.GetDescription()} is being started");
                regusKioskOptionsManager.SetColorMode(_regusKioskPrintOptions.ColorMode);
                UpdateStatus($"Select option activity with Color Mode {_regusKioskPrintOptions.ColorMode.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with Duplex {_regusKioskPrintOptions.Duplex.GetDescription()} is being started");
                regusKioskOptionsManager.SetDuplexPrint(_regusKioskPrintOptions.Duplex);
                UpdateStatus($"Select option activity with Duplex {_regusKioskPrintOptions.Duplex.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with N-Up {_regusKioskPrintOptions.Duplex.GetDescription()} is being started");
                regusKioskOptionsManager.SetPaperSource(_regusKioskPrintOptions.PaperSource);
                UpdateStatus($"Select option activity with N-Up {_regusKioskPrintOptions.Duplex.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with auto fit {_regusKioskPrintOptions.AutoFit} is being started");
                regusKioskOptionsManager.SetAutoFit(_regusKioskPrintOptions.AutoFit);
                UpdateStatus($"Select option activity with auto fit {_regusKioskPrintOptions.AutoFit} is being completed");

                UpdateStatus($"Select option activity with Copies {_regusKioskPrintOptions.PageCount} is being started");
                regusKioskOptionsManager.SetPrintCopies(_regusKioskPrintOptions.PageCount);
                UpdateStatus($"Select option activity with Copies {_regusKioskPrintOptions.PageCount} is being completed");
            }
            catch (DeviceWorkflowException ex)
            {
                DeviceWorkflowException e = new DeviceWorkflowException(ex.Message + $" :: {_data.JobType.GetDescription()}", ex);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
示例#2
0
        /// <summary>
        /// Set options for the copy job.
        /// </summary>
        protected void SetOptions(RegusKioskOptionsManager regusKioskOptionsManager)
        {
            try
            {
                UpdateStatus($"Select option activity with Original Size {_regusKioskScanOptions.OriginalSize.GetDescription()} is being started");
                regusKioskOptionsManager.SetOriginalSize(_regusKioskScanOptions.OriginalSize);
                UpdateStatus($"Select option activity with Original Size {_regusKioskScanOptions.OriginalSize.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with Original Orientation {_regusKioskScanOptions.OriginalOrientation.GetDescription()} is being started");
                regusKioskOptionsManager.SetOriginalOrientation(_regusKioskScanOptions.OriginalOrientation);
                UpdateStatus($"Select option activity with Original Orientation {_regusKioskScanOptions.OriginalOrientation.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with N-Up {_regusKioskScanOptions.Duplex.GetDescription()} is being started");
                regusKioskOptionsManager.SetDuplexOriginal(_regusKioskScanOptions.Duplex);
                UpdateStatus($"Select option activity with N-Up {_regusKioskScanOptions.Duplex.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with ImageRotation {_regusKioskScanOptions.ImageRotation.GetDescription()} is being started");
                regusKioskOptionsManager.SetImageRotation(_regusKioskScanOptions.ImageRotation);
                UpdateStatus($"Select option activity with ImageRotation {_regusKioskScanOptions.Duplex.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with Color Mode {_regusKioskScanOptions.ColorMode.GetDescription()} is being started");
                regusKioskOptionsManager.SetColorMode(_regusKioskScanOptions.ColorMode);
                UpdateStatus($"Select option activity with Color Mode {_regusKioskScanOptions.ColorMode.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with File Format {_regusKioskScanOptions.FileFormat.GetDescription()} is being started");
                regusKioskOptionsManager.SetFileFormat(_regusKioskScanOptions.FileFormat);
                UpdateStatus($"Select option activity with File Format {_regusKioskScanOptions.FileFormat.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with Resolution {_regusKioskScanOptions.Resolution.GetDescription()} is being started");
                regusKioskOptionsManager.SetResolution(_regusKioskScanOptions.Resolution);
                UpdateStatus($"Select option activity with Resolution {_regusKioskScanOptions.Resolution.GetDescription()} is being completed");

                UpdateStatus($"Select option activity with File Name / To Address {_regusKioskScanOptions.StringField} - {_regusKioskScanOptions.ScanDestination} is being started");
                if (!String.IsNullOrEmpty(_regusKioskScanOptions.StringField))
                {
                    switch (_regusKioskScanOptions.ScanDestination)
                    {
                    case RegusKioskScanDestination.USB:
                        regusKioskOptionsManager.SetFileName(_regusKioskScanOptions.StringField);
                        break;

                    case RegusKioskScanDestination.Email:
                        regusKioskOptionsManager.SetToAddress(_regusKioskScanOptions.StringField);
                        break;
                    }
                }
                else
                {
                    UpdateStatus($"There is no value for file name / To Address. It will use default value.");
                }

                UpdateStatus($"Select option activity with File Name / To Address {_regusKioskScanOptions.StringField} - {_regusKioskScanOptions.ScanDestination} is being completed");
            }
            catch (DeviceWorkflowException ex)
            {
                DeviceWorkflowException e = new DeviceWorkflowException(ex.Message + $" :: {_data.JobType.GetDescription()}", ex);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
示例#3
0
        /// <summary>
        /// Move to Option Page(scan or print) after completing a navigation to the destination
        /// <param name="JobType">scan or print</param>
        /// </summary>
        public void SelectJobForSetOptions(ClioJobType JobType)
        {
            bool result = false;

            switch (JobType)
            {
            case ClioJobType.Scan:
                result = LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/bt_hide_options"));
                break;

            case ClioJobType.Print:
                IsJobOptionScreenToPrint(JobType);
                _printPages = GetPrintPages();
                result      = true;
                break;

            default:
                DeviceWorkflowException e = new DeviceWorkflowException($"Unrecognized Connector Job Type: {JobType.GetDescription()} :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.FalseAlarm.GetDescription());
                throw e;
            }
            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Current Screen is not Job options page after navigation ({JobType.GetDescription()}):: {_appName} ");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
示例#4
0
        /// <summary>
        /// Search a parsed item(file/folder name) on the searchtab.
        /// <param name="ParsedItem">Parsed Item from FilePath</param>
        /// </summary>
        public void SearchForParsedText(string ParsedItem)
        {
            bool result = true;

            if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/iv_search"), 500, 60, _inactivityTimeLimit)))
            {
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/iv_search"));
            }

            if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/searchTextView"), 500, 60, _inactivityTimeLimit)))
            {
                result = LinkUI.Controller.SetText(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/searchTextView"), ParsedItem);
            }

            if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/iv_icon"), 500, 60, _inactivityTimeLimit)))
            {
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/iv_icon"));
            }

            if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/bt_dialog_left"), 500, 60, _inactivityTimeLimit)))
            {
                JetAdvantageLinkControlHelper.WaitingObjectDisappear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/bt_dialog_left"), 500, 60, _inactivityTimeLimit);
            }

            CheckServerErrorPopup();

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"SearchForParsedText failed ({ParsedItem}) :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.NavigateFilePath.GetDescription());
                throw e;
            }
        }
示例#5
0
        /// <summary>
        /// Sets up the cloud print job.
        /// </summary>
        /// <param name="device">The device.</param>
        protected override void SetupJob(IDevice device)
        {
            if (device == null)
            {
                throw new ArgumentNullException("device");
            }

            UpdateStatus($"Starting Kiosk plugin: {_data.JobType} with {_data.AuthType}");

            _kioskApp.KioskInitialize();

            switch (_data.AuthType)
            {
            case KioskAuthType.Login:
                _kioskApp.KioskLoginAuthenticate(_data.ID, _data.Password);
                break;

            case KioskAuthType.Card:
                _kioskApp.KioskCardAuthenticate(ExecutionData.Assets, ExecutionData.Credential);
                break;

            default:
                DeviceWorkflowException e = new DeviceWorkflowException($"Kiosk Auth Type is invalid: {_data.AuthType}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                throw e;
            }

            _kioskApp.Launch(_data.JobType, _data.CopyOptions);

            SetOptions(_kioskApp.KioskOptionManager);
        }
示例#6
0
        /// <summary>
        /// Start Job after SetOptions step
        /// <param name="Print Job Execution">Options for running scan job</param>
        /// </summary>
        private void PrintExecution()
        {
            bool result = false;

            if (JetAdvantageLinkControlHelper.WaitingObjectAppear
                    (new UiSelector().ResourceId($"{KioskPackageName}:id/start_tab_start_btn"), 500, 120))
            {
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/start_tab_start_btn"));
                RecordEvent(DeviceWorkflowMarker.PrintJobBegin);
            }

            if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear
                                        (new UiSelector().ResourceId($"{KioskPackageName}:id/billing_information_title"), 500, 120)))
            {
                SetTotalPrice();
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/popup_billing_information_ok_btn"));
            }
            CheckServerErrorPopup();
            RecordEvent(DeviceWorkflowMarker.PrintJobEnd);
            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Execution Print Job failed");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.ExecutionJob.GetDescription());
                throw e;
            }
        }
示例#7
0
        /// <summary>
        /// Move to Option Page(scan or print) after completing a navigation to the destination
        /// <param name="jobType">scan or print</param>
        /// </summary>
        public void SelectJobForSetOptions(iManageJobType jobType)
        {
            bool result = false;

            switch (jobType)
            {
            case iManageJobType.Scan:
                if (JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/fab"), 500, 600, _inactivityTimeLimit))
                {
                    result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/fab"));
                    Thread.Sleep(5000);
                    result = LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/bt_hide_options"));
                }
                break;

            case iManageJobType.Print:
                IsJobOptionScreenToPrint(jobType);
                _printPages = GetPrintPages();
                result      = true;
                break;

            default:
                DeviceWorkflowException e = new DeviceWorkflowException($"Unrecognized Connector Job Type: {jobType.GetDescription()} :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.FalseAlarm.GetDescription());
                throw e;
            }
            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Current Screen is not Job options page after navigation ({jobType.GetDescription()}):: {_appName} ");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
示例#8
0
        /// <summary>
        /// Verify screen after Login
        /// <param name="authType">authType for Login</param>
        /// <param name="id">Navigate to destination by FilePath</param>
        /// </summary>
        private void VerifyLogin(RegusKioskAuthType authType, string id)
        {
            if (!JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/homeLayout"), 500, 120))
            {
                if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{RegusPackageName}:id/loading_msg_textview")))
                {
                    DeviceWorkflowException e = new DeviceWorkflowException($"The sign in Please Wait popup message did not disappear within 60 seconds.");
                    throw e;
                }
                else
                {
                    CheckServerErrorPopup();
                    DeviceWorkflowException e = new DeviceWorkflowException($"Home layout after login is not displayed :: {authType}");
                    e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                    throw e;
                }
            }

            if (authType.Equals(RegusKioskAuthType.Login))
            {
                if (!LinkUI.Controller.GetText(new UiSelector().ResourceId($"{KioskPackageName}:id/userName")).Contains(id))
                {
                    DeviceWorkflowException e = new DeviceWorkflowException($"Displayed ID is wrong: {LinkUI.Controller.GetText(new UiSelector().ResourceId($"{KioskPackageName}:id/userName"))}");
                    e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                    throw e;
                }
            }
            RecordEvent(DeviceWorkflowMarker.AuthenticationEnd);
        }
示例#9
0
        /// <summary>
        /// SignOut
        /// </summary>
        public void SignOut()
        {
            bool result = false;

            UpdateStatus("SignOut Start");
            RecordEvent(DeviceWorkflowMarker.DeviceSignOutBegin);

            if (JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/logoutBtn"), 500, 60))
            {
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/logoutBtn"));
            }

            if (result == JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/confirm_cancel_btn"), 500, 60))
            {
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/confirm_cancel_btn"));
            }

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"SignOut is failed :: Kiosk");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignOut.GetDescription());
                throw e;
            }
            RecordEvent(DeviceWorkflowMarker.DeviceSignOutEnd);
            UpdateStatus("SignOut Finish");
        }
示例#10
0
 /// <summary>
 /// Launches The AutoStore solution with the given authenticator with either eager or lazy authentication.
 /// </summary>
 /// <param name="authenticator">The authenticator.</param>
 /// <param name="authenticationMode">The authentication mode.</param>
 /// <exception cref="DeviceWorkflowException">
 /// Login screen not found.
 /// or
 /// Eager authentication is not allowed by the AutoStore application at this time.
 /// </exception>
 public override void Launch(IAuthenticator authenticator, AuthenticationMode authenticationMode)
 {
     if (authenticationMode.Equals(AuthenticationMode.Lazy))
     {
         try
         {
             UpdateStatus("Launch App: Udocx Scan");
             _controlPanel.ScrollPress($"div[aria-label=\"Udocx\"]");
             RecordEvent(DeviceWorkflowMarker.AppButtonPress, "Udocx");
             IsSignInScreen();
             authenticator.LazyAuthOnly = true;
             authenticator.Authenticate();
         }
         catch (Exception ex)
         {
             DeviceWorkflowException e = new DeviceWorkflowException("Fail to Signin Udocx Scan App", ex);
             throw e;
         }
     }
     else // AuthenticationMode.Eager
     {
         throw new DeviceWorkflowException("Eager authentication is not allowed by the UdocxScan application at this time.");
     }
     RecordEvent(DeviceWorkflowMarker.AppShown);
 }
示例#11
0
        /// <summary>
        /// Check that current UI is Job Option status or not.
        /// </summary>
        public void IsJobOptionScreenToPrint(ClioJobType JobType)
        {
            string reason  = $"Fail to check UI screen for printing job :: {_appName}";
            bool   result  = true;
            int    timeOut = 0;

            RecordEvent(DeviceWorkflowMarker.PullingJobFromServerBegin);

            timeOut = LinkUI.Controller.GetTimeout();
            LinkUI.Controller.SetTimeout(0);

            CheckServerErrorPopup();
            RecordEvent(DeviceWorkflowMarker.PullingJobFromServerEnd);
            LinkUI.Controller.SetTimeout(60);

            if (result)
            {
                result = LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/btn_print"));
                // Check that Downloading is completed and Current UI is Job Option Screen on the print section
                if (!result)
                {
                    reason = $"Fail to check UI screen for printing job - Print button is not displayed :: {_appName} ";
                }
            }

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException(reason);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.DownloadingPrintFile.GetDescription());
                throw e;
            }
        }
示例#12
0
        /// <summary>
        /// Start Print job and check job finish
        /// </summary>
        public void ExecutionPrintJob()
        {
            int timeOut = 0;

            bool result = true;

            UpdateStatus($"Print Job started with pages documents :: {_appName}");
            timeOut = LinkUI.Controller.GetTimeout();

            LinkUI.Controller.SetTimeout(20);
            RecordEvent(DeviceWorkflowMarker.PrintJobBegin);
            result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/btn_print"));
            // Job Start

            RecordEvent(DeviceWorkflowMarker.ProcessingJobBegin);

            result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/iv_more"), 500, 120, _inactivityTimeLimit);
            if (result)
            {
                RecordEvent(DeviceWorkflowMarker.PrintJobEnd);
            }
            RecordEvent(DeviceWorkflowMarker.ProcessingJobEnd);
            LinkUI.Controller.SetTimeout(timeOut);

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Execution Print Job failed :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.ExecutionJob.GetDescription());
                throw e;
            }
        }
 /// <summary>
 /// Return Error Message on the Popup after checking popup visible
 /// </summary>
 /// <returns></returns>
 public void CheckErrorPopup()
 {
     if (CheckRetainPopup())
     {
         DeviceWorkflowException e = new DeviceWorkflowException($"Error Popup is visible, Error message is \"{GetPopupMessage()}\".");
         throw e;
     }
 }
示例#14
0
        /// <summary>
        /// Sets up the Clio scan job.
        /// </summary>
        /// <param name="device">The de vice.</param>
        protected override void SetupJob(IDevice device)
        {
            if (device == null)
            {
                throw new ArgumentNullException("device");
            }
            _device = device;
            _clio   = new ClioApp(device);
            _clio.WorkflowLogger    = WorkflowLogger;
            ConnectorLog.PageCount  = _data.PageCount;
            ConnectorLog.FilePrefix = FilePrefix.ToString();

            UpdateStatus($"Starting App Launch");
            _clio.Launch(_data.SIO);

            // Login
            UpdateStatus($"Starting Log in");
            if (!_data.SIO.Equals(SIOMethod.SIOWithoutIDPWD))
            {
                _clio.Login(_data.ID, _data.PW);
            }
            else
            {
                UpdateStatus($"Skip Login");
            }

            //Select storage type
            UpdateStatus($"Select location :: {_data.Location}");
            _clio.SelectStorageLocation(_data.Location);

            //Matter
            UpdateStatus($"Select matter :: {_data.Matter}");
            _clio.SelectMatter(_data.Matter);

            // Do Navigate to destination
            if (!string.IsNullOrEmpty(_data.FolderPath))
            {
                UpdateStatus($"Navigating destination :: {_data.FolderPath}");
                _clio.NavigateToDestination(_data.FolderPath, _data.JobType);
            }
            _clio.PressScanButton();
            _clio.ScanDocumentOptions(FilePrefix.ToString().ToLowerInvariant());
            _clio.SelectJobForSetOptions(EnumUtil.GetByDescription <ClioJobType>(LinkJobType));
            // Select JobType(Scan or Print Button in the folder manager)
            try
            {
                SetOptions(_clio.ScanOptionManager, _data.ScanOptions);
            }
            catch (DeviceWorkflowException ex)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Fali to set options: {ex.Message} :: Clio", ex);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
        /// <summary>
        /// Sets up the CloudConnector scan job.
        /// </summary>
        /// <param name="device">The device.</param>
        protected override void SetupJob(IDevice device)
        {
            if (device == null)
            {
                throw new ArgumentNullException("device");
            }

            _cloudApp = new CloudConnectorApp(_data.CloudAppType, device);

            _cloudApp.WorkflowLogger         = WorkflowLogger;
            _cloudApp.ActivityStatusChanged += LinkAppsActivityStatusChanged;

            ConnectorLog.PageCount  = _data.PageCount;
            ConnectorLog.FilePrefix = FilePrefix.ToString();
            ConnectorLog.FilePath   = _data.FolderPath + "/" + FilePrefix + "." + EnumUtil.GetDescription((FileType)_data.CloudScanOptions.FileType).ToLowerInvariant();
            ConnectorLog.LoginID    = _data.ID;

            UpdateStatus($"Starting App Launch :: {_data.CloudAppType.GetDescription()}");
            _cloudApp.Launch(_data.SIO);

            UpdateStatus($"Starting Log in :: {_data.CloudAppType.GetDescription()}");
            if (!_data.SIO.Equals(SIOMethod.SIOWithoutIDPWD))
            {
                _cloudApp.Login(_data.CloudAppType, _data.ID, _data.PWD);
            }
            else
            {
                UpdateStatus($"Skip Login");
            }

            UpdateStatus($"Starting navigate to destination :: {_data.CloudAppType.GetDescription()}");
            if (_data.CloudAppType.Equals(ConnectorName.SharePoint))
            {
                _cloudApp.SelectSharePointSite(_data.SharePointSite);
            }

            if (!String.IsNullOrEmpty(_data.FolderPath))
            {
                _cloudApp.NavigateToDestination(_data.FolderPath);
            }

            UpdateStatus($"Starting selection options :: {_data.CloudAppType.GetDescription()}");
            _cloudApp.SelectJobForSetOptions(EnumUtil.GetByDescription <ConnectorJobType>(LinkJobType));

            try
            {
                SetOptions(_cloudApp.ScanOptionManager, _data.CloudScanOptions);
            }
            catch (DeviceWorkflowException ex)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Fail to set options: {ex.Message} :: {_data.CloudAppType.GetDescription()}", ex);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SelectOptions.GetDescription());
                throw e;
            }
        }
示例#16
0
 /// <summary>
 /// Verify screen after Launch
 /// <param name="jobType">JobType: Copy, Print, Scan</param>
 /// </summary>
 private void VerifyLaunch(KioskJobType jobType, string waitingObject)
 {
     if (!JetAdvantageLinkControlHelper.WaitingObjectAppear(waitingObject))
     {
         CheckServerErrorPopup();
         DeviceWorkflowException e = new DeviceWorkflowException($"Launch failed: {jobType.GetDescription()} - It has no Price per page object");
         e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.AppLaunch.GetDescription());
         throw e;
     }
     RecordEvent(DeviceWorkflowMarker.AppShown);
 }
示例#17
0
 /// <summary>
 /// Verify screen after Launch
 /// <param name="jobType">JobType: Copy, Print, Scan</param>
 /// </summary>
 private void VerifyLaunch(KioskJobType jobType)
 {
     if (!JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/ll_price_per_page")))
     {
         CheckServerErrorPopup();
         DeviceWorkflowException e = new DeviceWorkflowException($"Launch failed: {jobType.GetDescription()} - It has no Price per page object");
         e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.AppLaunch.GetDescription());
         throw e;
     }
     RecordEvent(DeviceWorkflowMarker.AppShown);
 }
示例#18
0
        /// <summary>
        /// Search a parsed item(file/folder name) on the searchtab.
        /// <param name="ParsedItem">Parsed Item from FilePath</param>
        /// </summary>
        public void SearchForParsedText(string ParsedItem)
        {
            bool result = true;

            int timeOut = LinkUI.Controller.GetTimeout();

            LinkUI.Controller.SetTimeout(0);

            JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/layout_docitem_row"), 200, 50);

            if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_description").TextContains(ParsedItem)))
            {
                UpdateStatus($"Click the {ParsedItem} by using displayed list");
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_description").TextContains(ParsedItem));
                LinkUI.Controller.SetTimeout(timeOut);
            }
            else if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_file_column_info").TextContains(ParsedItem)))
            {
                UpdateStatus($"Click the {ParsedItem} by using displayed list");
                result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_file_column_info").TextContains(ParsedItem));
                LinkUI.Controller.SetTimeout(timeOut);
            }
            else
            {
                UpdateStatus($"Click the {ParsedItem} by using Search text box");
                LinkUI.Controller.SetTimeout(timeOut);

                if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/searchImageBtn"), 500, 60, _inactivityTimeLimit)))
                {
                    result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/searchImageBtn"));
                }

                if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/searchTextView"), 500, 60, _inactivityTimeLimit)))
                {
                    result = LinkUI.Controller.SetText(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/searchTextView"), ParsedItem);
                }

                if (result && (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_display_first"), 500, 60, _inactivityTimeLimit)))
                {
                    result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_display_first").TextContains(ParsedItem));
                }
            }

            CheckServerErrorPopup();

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Fail to click objects for navigate to specific path ({ParsedItem}) :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.NavigateFilePath.GetDescription());
                throw e;
            }
        }
示例#19
0
 /// <summary>
 /// Launches Udocx Scan App in Udocx
 /// </summary>
 /// <param name="destination">Selected App Name</param>
 public override void SelectApp(string destination)
 {
     UpdateStatus($"Launch Selected App: {destination}");
     try
     {
         PressElementByText("apps_list_app_title", destination);
     }
     catch (Exception ex)
     {
         DeviceWorkflowException e = new DeviceWorkflowException($"Fail to Luanch Udocx Scan App : {destination}", ex);
         throw e;
     }
 }
示例#20
0
        /// <summary>
        /// Start Scan job and check job finish
        /// <param name="pagecount">Options of scan build job</param>
        /// <param name="originalsides">Options of scan build job</param>
        /// <param name="UseOriginalSides">Bool for using OriginalSides</param>
        /// </summary>
        public void ExecutionScanJob(int pagecount, LinkScanOriginalSides originalsides, bool UseOriginalSides = false)
        {
            bool result = true;

            result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{LinkScanAppsPackageName}:id/bt_send"));

            Thread.Sleep(TimeSpan.FromSeconds(1));
            CheckServerErrorPopup();

            Thread.Sleep(TimeSpan.FromSeconds(1));
            HandleJediOmniPopup("#hpid-prompt-flatbed-autodetect", "#hpid-button-continue");

            RecordEvent(DeviceWorkflowMarker.JobBuildBegin);

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Fail to execution scan job - Fail to click the scan button :: {_destination}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.ExecutionJob.GetDescription());
                throw e;
            }
            string flag = originalsides.GetDescription();

            UpdateStatus($"{flag} Scan Job started :: {_destination}");
            RecordEvent(DeviceWorkflowMarker.ScanJobBegin);
            if (UseOriginalSides)
            {
                switch (originalsides)
                {
                case (LinkScanOriginalSides.Onesided):
                    ScanOption_OnesidedJob();
                    break;

                case (LinkScanOriginalSides.Twosided):
                case (LinkScanOriginalSides.Pagesflipup):
                    ScanOption_TwosidedJob(pagecount);
                    break;

                default:
                    DeviceWorkflowException e = new DeviceWorkflowException($"Unrecognized Original sides on Scan job:: {_destination}");
                    e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.FalseAlarm.GetDescription());
                    throw e;
                }
            }
            else
            {
                ScanOption_OnesidedJob();
            }
            RecordEvent(DeviceWorkflowMarker.JobBuildEnd);
        }
示例#21
0
        /// <summary>
        /// Launches the LinkApps using App Name
        /// </summary>
        public void Launch()
        {
            string   launchAppname = null;
            DateTime startTime     = DateTime.Now;

            int timeOut = 0;

            try
            {
                launchAppname = GetLaunchAppId();
                UpdateStatus($"Launch App: {launchAppname}");

                Device.ControlPanel.ScrollPress($"{launchAppname}");
                RecordEvent(DeviceWorkflowMarker.AppButtonPress, launchAppname);

                Thread.Sleep(300);

                timeOut = LinkUI.Controller.GetTimeout();
                LinkUI.Controller.SetTimeout(0);

                CloseLicenseAgreementPopup();
                if (!JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{LinkScanAppsPackageName}:id/bt_send"), 200, 300))
                {
                    DeviceWorkflowException e = new DeviceWorkflowException($"Fail to launch app - Send button is not displayed after launching :: {_destination}");
                    e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.AppLaunch.GetDescription());
                    throw e;
                }

                RecordEvent(DeviceWorkflowMarker.AppShown);

                UpdateStatus($"Lauch app completed - {DateTime.Now.Subtract(startTime).TotalSeconds} sec");
            }
            catch (Exception ex)
            {
                if (ex.Data.Contains(_exceptionCategoryData))
                {
                    throw;
                }

                DeviceWorkflowException e = new DeviceWorkflowException($"Fail to launch app :: {_destination}", ex);
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.AppLaunch.GetDescription());
                throw e;
            }
            finally
            {
                LinkUI.Controller.SetTimeout(timeOut);
            }
        }
示例#22
0
        /// <summary>
        /// Return Error Message on the Popup after checking popup visible
        /// </summary>
        /// <returns></returns>
        private void CheckErrorPopup()
        {
            bool   retainPopup  = false;
            string ErrorMessage = null;

            if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{KioskPackageName}:id/error_ok_btn")))
            {
                ErrorMessage = LinkUI.Controller.GetText(new UiSelector().ResourceId($"{KioskPackageName}:id/error_popup_description"));
                retainPopup  = true;
            }
            if (retainPopup)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Error Popup is visible, Error message is \" {ErrorMessage}\".");
                throw e;
            }
        }
示例#23
0
        /// <summary>
        /// Check an Error Popup(Server Error)
        /// </summary>
        private void CheckServerErrorPopup()
        {
            int timeOut = 0;

            timeOut = LinkUI.Controller.GetTimeout();

            LinkUI.Controller.SetTimeout(0);

            if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/iv_dialog_icon")) && LinkUI.Controller.GetText(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_contents")).Contains("Unable"))
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Server Error Popup {LinkUI.Controller.GetText(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/tv_contents"))}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.ServerError.GetDescription());
                throw e;
            }
            LinkUI.Controller.SetTimeout(timeOut);
        }
示例#24
0
        /// <summary>
        /// Scan Job
        /// </summary>
        public void Scan(int numberOfcopies)
        {
            bool result = true;

            ScanOption_SidedJob(numberOfcopies);

            result = WaitForScanning(numberOfcopies);
            if (result && numberOfcopies > 1)
            {
                RecordEvent(DeviceWorkflowMarker.JobBuildEnd);
            }
            else if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Execution Sided Scan Job failed");
                throw e;
            }
        }
示例#25
0
        /// <summary>
        /// Initialize RegusKiosk to Home Screen
        /// </summary>
        public void RegusKioskInitialize()
        {
            if (LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"{RegusPackageName}:id/loading_msg_textview")))
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"The activity is unable to begin due to a Please Wait popup message displayed from a previous activity.");
                throw e;
            }

            NavigateHome();

            if (!AtHomeScreen())
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Initialize failed: Login screen is not displayed.");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                throw e;
            }
        }
示例#26
0
 /// <summary>
 /// Search a parsed item(file/folder name) on the searchtab.
 /// <param name="fileName">Scan File Name</param>
 /// </summary>
 public void ScanDocumentOptions(string fileName)
 {
     try
     {
         if (!String.IsNullOrEmpty(fileName) && JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/et_filename"), 500, 30, _inactivityTimeLimit))
         {
             LinkUI.Controller.SetText(new UiSelector().ResourceId($"{ClioAppsPackageName}:id/et_filename"), fileName);
         }
         Thread.Sleep(TimeSpan.FromSeconds(2));
     }
     catch (Exception)
     {
         DeviceWorkflowException e = new DeviceWorkflowException($"Cannot Select Scan File name :: {fileName}");
         e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.ExecutionJob.GetDescription());
         throw e;
     }
 }
示例#27
0
        /// <summary>
        /// Do login for using ID/Password
        /// </summary>
        /// <param name="id">The id for log in.</param>
        /// <param name="password">The password for log in.</param>
        /// <returns>IAuthenticator</returns>
        public void KioskInitialize()
        {
            if (!JetAdvantageLinkControlHelper.WaitingObjectDisappear(new UiSelector().ResourceId($"{KioskPackageName}:id/loading_msg_textview"), 500, 120))
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Initialize failed: Loading object is not disappeared.");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                throw e;
            }

            Device.ControlPanel.PressHome();

            if (!JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/qr_code_img"), 500, 120))
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Initialize failed: Login screen is not displayed.");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                throw e;
            }
        }
示例#28
0
        /// <summary>
        /// Search a parsed item(file/folder name) on the searchtab.
        /// <param name="ParsedItem">Parsed Item from FilePath</param>
        /// </summary>
        public void ClickForParsedText(string ParsedItem)
        {
            bool result = true;

            if (result && (result = JetAdvantageLinkControlHelper.FindOnListWithScroll(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/rv_matterList"), new UiSelector().TextContains(ParsedItem), 10)))
            {
                result = JetAdvantageLinkControlHelper.ClickOnListWithScroll(new UiSelector().ResourceId($"{iManageAppsPackageName}:id/rv_matterList"), new UiSelector().TextContains(ParsedItem), 10);
            }
            Thread.Sleep(TimeSpan.FromSeconds(3));

            CheckServerErrorPopup();
            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"SearchForParsedText failed ({ParsedItem}) :: {_appName}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.NavigateFilePath.GetDescription());
                throw e;
            }
        }
示例#29
0
        /// <summary>
        /// Do login for using ID/Password
        /// </summary>
        /// <param name="id">The id for log in.</param>
        /// <param name="password">The password for log in.</param>
        /// <returns>IAuthenticator</returns>
        public void RegusKioskLoginAuthenticate(string id, string password)
        {
            bool result = false;

            RecordEvent(DeviceWorkflowMarker.AuthenticationBegin);
            if (result = LinkUI.Controller.Click(new UiSelector().Text("Username & Password")))
            {
                // Check if login page is lodded.
                if (result = JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId("com.hp.auth.regus:id/webviewScreen"), 500, 40))
                {
                    result = (JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ClassName("android.widget.Button"), 500, 120) &&
                              JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ClassName("android.widget.EditText"), 500, 120));
                }

                if (result = LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"email")))
                {
                    result = LinkUI.Controller.SetText(new UiSelector().ResourceId($"email"), id);
                }

                if (result = LinkUI.Controller.DoesScreenContains(new UiSelector().ResourceId($"password")))
                {
                    result = LinkUI.Controller.SetText(new UiSelector().ResourceId($"password"), password);
                }

                if (result)
                {
                    if (LinkUI.Controller.IsVirtualKeyboardShown() == true)
                    {
                        LinkUI.Controller.PressKey(KeyCode.KEYCODE_BACK);
                        Wait.ForTrue(() => (LinkUI.Controller.IsVirtualKeyboardShown() == false), TimeSpan.FromSeconds(3), TimeSpan.FromMilliseconds(250));
                    }
                    result = LinkUI.Controller.Click(new UiSelector().ResourceId($"LoginButton"));
                }
            }

            if (!result)
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Login failed");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.SignIn.GetDescription());
                throw e;
            }

            VerifyLogin(RegusKioskAuthType.Login, id);
        }
示例#30
0
        /// <summary>
        /// Launch with scan
        /// <param name="jobType">JobType</param>
        /// <param name="scanDestination">Destination for scan</param>
        /// </summary>
        public void LaunchScan(RegusKioskJobType jobType, RegusKioskScanDestination scanDestination)
        {
            bool result = false;

            UpdateStatus($"Launch start: {jobType.GetDescription()}");

            result = LinkUI.Controller.Click("//*[@resource-id=\'com.hp.kiosk:id/homeLayout\']/*[2]/*[1]/*[1]/*[3]/*[1]/*[1]");

            if (result)
            {
                switch (scanDestination)
                {
                case RegusKioskScanDestination.USB:
                    if (JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/scan_main_usb_btn"), 500, 120))
                    {
                        result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/scan_main_usb_btn"));
                    }
                    break;

                case RegusKioskScanDestination.Email:
                    if (JetAdvantageLinkControlHelper.WaitingObjectAppear(new UiSelector().ResourceId($"{KioskPackageName}:id/scan_main_email_btn"), 500, 120))
                    {
                        result = LinkUI.Controller.Click(new UiSelector().ResourceId($"{KioskPackageName}:id/scan_main_email_btn"));
                    }
                    break;

                default:
                    UpdateStatus($"Scan destination is invalid: {scanDestination.GetDescription()}");
                    result = false;
                    break;
                }
            }

            if (result)
            {
                VerifyLaunch(jobType, new UiSelector().ResourceId($"{KioskPackageName}:id/start_tab"));
            }
            else
            {
                DeviceWorkflowException e = new DeviceWorkflowException($"Launch failed: Selecting scan destination is failed: {scanDestination.GetDescription()}");
                e.Data.Add(_exceptionCategoryData, ConnectorExceptionCategory.AppLaunch.GetDescription());
                throw e;
            }
        }