|
@@ -0,0 +1,158 @@
|
|
|
+using PuppeteerSharp;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using System.Xml.Linq;
|
|
|
+
|
|
|
+namespace StationProbe
|
|
|
+{
|
|
|
+
|
|
|
+ internal class LoginTask
|
|
|
+ {
|
|
|
+ private readonly string _loginUrl;
|
|
|
+ public LoginTask(string loginUrl)
|
|
|
+ {
|
|
|
+ _loginUrl = loginUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<IPage> ExecuteAsync(IPage input, Database db)
|
|
|
+ {
|
|
|
+ await input.GoToAsync(_loginUrl);
|
|
|
+ //username
|
|
|
+ await input.WaitForSelectorAsync("input[_bl_13]");
|
|
|
+ await input.FocusAsync("input[_bl_13]");
|
|
|
+ await input.Keyboard.TypeAsync("justin.xing");
|
|
|
+ //password
|
|
|
+ await input.WaitForSelectorAsync("input[_bl_14]");
|
|
|
+ await input.FocusAsync("input[_bl_14]");
|
|
|
+ await input.Keyboard.TypeAsync("123456");
|
|
|
+ //login
|
|
|
+ var button = await input.WaitForSelectorAsync("button[_bl_15]");
|
|
|
+ await button.ClickAsync();
|
|
|
+
|
|
|
+ await input.WaitForNavigationAsync();
|
|
|
+ await input.WaitForNetworkIdleAsync();
|
|
|
+
|
|
|
+ return input;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ internal class MenuTask
|
|
|
+ {
|
|
|
+ public async Task<IFrame> ExecuteAsync(IPage input, Database db)
|
|
|
+ {
|
|
|
+ var frame = await input.WaitForFrameAsync("");
|
|
|
+ return frame;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ internal class FilterTask
|
|
|
+ {
|
|
|
+ private DateTime _start;
|
|
|
+ private DateTime _end;
|
|
|
+
|
|
|
+ public int PageCount { get; private set; }
|
|
|
+
|
|
|
+ public int ExamCount { get; private set; }
|
|
|
+
|
|
|
+ public FilterTask(DateTime start, DateTime end)
|
|
|
+ {
|
|
|
+ _start = start;
|
|
|
+ _end = end;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<IFrame> ExecuteAsync(IPage page, IFrame frame, Database db)
|
|
|
+ {
|
|
|
+ await frame.WaitForSelectorAsync("input[_bl_13]");
|
|
|
+ await frame.FocusAsync("input[_bl_13]");
|
|
|
+ await page.Keyboard.TypeAsync("justin.xing");
|
|
|
+ return frame;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ internal class PageTask
|
|
|
+ {
|
|
|
+ private readonly int _page;
|
|
|
+ public PageTask(int page)
|
|
|
+ {
|
|
|
+ _page = page;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<IFrame> ExecuteAsync(IFrame input, Database db)
|
|
|
+ {
|
|
|
+
|
|
|
+ return input;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ internal class ExamTask
|
|
|
+ {
|
|
|
+ private readonly int _batchTaskId;
|
|
|
+ private readonly int _pageIndex;
|
|
|
+ private readonly int _examIndex;
|
|
|
+ private readonly int _examIndexInPage;
|
|
|
+
|
|
|
+ public ExamTask(int batchTaskId, int pageIndex, int examIndex, int examIndexInPage)
|
|
|
+ {
|
|
|
+ _batchTaskId = batchTaskId;
|
|
|
+ _pageIndex = pageIndex;
|
|
|
+ _examIndex = examIndex;
|
|
|
+ _examIndexInPage = examIndexInPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ public async Task<IFrame> ExecuteAsync(IFrame input, Database db)
|
|
|
+ {
|
|
|
+ var exmaId = Guid.NewGuid().ToString("N");
|
|
|
+ //Enter exam
|
|
|
+ //Get patient info
|
|
|
+ var patientName = "";
|
|
|
+ var patientSex = "";
|
|
|
+ var patientAge = 0;
|
|
|
+ var examDate = DateTime.Now;
|
|
|
+
|
|
|
+ //Get report
|
|
|
+ var report = "";
|
|
|
+
|
|
|
+ //Save images.
|
|
|
+ var imageUrls = new List<string>();
|
|
|
+ for(var i= 0;i< imageUrls.Count;i++)
|
|
|
+ {
|
|
|
+ var response = await input.WaitForResponseAsync(imageUrls[i]);
|
|
|
+ var buffer = await response.BufferAsync();
|
|
|
+ var image = new Image()
|
|
|
+ {
|
|
|
+ Id = Guid.NewGuid().ToString("N"),
|
|
|
+ ExamId = exmaId,
|
|
|
+ ImageIndex = i,
|
|
|
+ Data = buffer,
|
|
|
+ CreateTime = DateTime.Now,
|
|
|
+ };
|
|
|
+ db.AddImage(image);
|
|
|
+ }
|
|
|
+
|
|
|
+ //Save exam.
|
|
|
+ var exam = new Exam()
|
|
|
+ {
|
|
|
+ Id = exmaId,
|
|
|
+ PatientName = patientName,
|
|
|
+ PatientSex = patientSex,
|
|
|
+ PatientAge = patientAge,
|
|
|
+ ExamDate = examDate,
|
|
|
+ Report = report,
|
|
|
+ BatchTaskId = _batchTaskId,
|
|
|
+ ExamIndex = _examIndex,
|
|
|
+ PageIndex = _pageIndex,
|
|
|
+ ExamIndexInPage = _examIndexInPage,
|
|
|
+ CreateTime = DateTime.Now
|
|
|
+ };
|
|
|
+ db.AddExam(exam);
|
|
|
+ //Back to page.
|
|
|
+ await input.GoBackAsync();
|
|
|
+ return input;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|