|
|
|
@@ -11,6 +11,7 @@ using CSVDownloader.Store.QRCSVData; |
|
|
|
using CSVDownloader.Exceptions; |
|
|
|
|
|
|
|
using ExpectedConditions = OpenQA.Selenium.Support.UI.ExpectedConditions; |
|
|
|
using CSVDownloader.Store.ElectronicMoneyDataStore; |
|
|
|
|
|
|
|
namespace CSVDownloader.Web { |
|
|
|
class DaitoController : WebController { |
|
|
|
@@ -19,8 +20,9 @@ namespace CSVDownloader.Web { |
|
|
|
|
|
|
|
private readonly String home_url_ = "https://crevation.net/"; |
|
|
|
|
|
|
|
private readonly String filename_credit = "daito_credit.csv"; |
|
|
|
private readonly String filename_qr = "daito_qr.csv"; |
|
|
|
private readonly String filename_credit_ = "daito_credit.csv"; |
|
|
|
private readonly String filename_qr_ = "daito_qr.csv"; |
|
|
|
private readonly String filename_electronic_money_ = "daito_electronic_money.csv"; |
|
|
|
|
|
|
|
private enum XpathKey { |
|
|
|
INPUT_LOGIN_USERNAME, |
|
|
|
@@ -29,6 +31,7 @@ namespace CSVDownloader.Web { |
|
|
|
BUTTON_KESSAI_KANRI, |
|
|
|
BUTTON_CREDIT_KESSAI, |
|
|
|
BUTTON_QR_KESSAI, |
|
|
|
BUTTON_ELECTORONIC_MONEY_KESSAI, |
|
|
|
INPUT_TARGET_FROM, |
|
|
|
INPUT_TARGET_TO, |
|
|
|
BUTTON_DOWNLOAD_CSV, |
|
|
|
@@ -43,6 +46,7 @@ namespace CSVDownloader.Web { |
|
|
|
{XpathKey.BUTTON_KESSAI_KANRI,@"//*[@id='side-menu']/li[4]/a" }, |
|
|
|
{XpathKey.BUTTON_CREDIT_KESSAI,@"//*[@id='side-menu']/li[4]/ul/li[1]/a" }, |
|
|
|
{XpathKey.BUTTON_QR_KESSAI,@"//*[@id='side-menu']/li[4]/ul/li[2]/a" }, |
|
|
|
{XpathKey.BUTTON_ELECTORONIC_MONEY_KESSAI,@"//*[@id='side-menu']/li[4]/ul/li[3]/a" }, |
|
|
|
{XpathKey.INPUT_TARGET_FROM,@"//*[@id='settlementTimeFrom']" }, |
|
|
|
{XpathKey.INPUT_TARGET_TO,@"//*[@id='settlementTimeTo']" }, |
|
|
|
{XpathKey.BUTTON_DOWNLOAD_CSV,@"//*[@id='submitCreateCsv']" }, |
|
|
|
@@ -89,7 +93,7 @@ namespace CSVDownloader.Web { |
|
|
|
wait_.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]))); |
|
|
|
|
|
|
|
Click(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]); |
|
|
|
WaitForDownload(filename_credit); |
|
|
|
WaitForDownload(filename_credit_); |
|
|
|
|
|
|
|
// QR決済結果結果一覧画面に移行 |
|
|
|
Click(xpath_map_[XpathKey.BUTTON_MENU]); |
|
|
|
@@ -104,7 +108,22 @@ namespace CSVDownloader.Web { |
|
|
|
wait_.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]))); |
|
|
|
|
|
|
|
Click(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]); |
|
|
|
WaitForDownload(filename_qr); |
|
|
|
WaitForDownload(filename_qr_); |
|
|
|
|
|
|
|
// 電子マネー決済結果結果一覧画面に移行 |
|
|
|
Click(xpath_map_[XpathKey.BUTTON_MENU]); |
|
|
|
//Click(xpath_map_[XpathKey.BUTTON_KESSAI_KANRI]); なぜかタブがひらいたままなので、これはスキップする。 |
|
|
|
Click(xpath_map_[XpathKey.BUTTON_ELECTORONIC_MONEY_KESSAI]); |
|
|
|
|
|
|
|
// 承認処理日のFrom-Toを入力 |
|
|
|
Send(xpath_map_[XpathKey.INPUT_TARGET_FROM], from.ToString(date_format)); |
|
|
|
Send(xpath_map_[XpathKey.INPUT_TARGET_TO], to.ToString(date_format)); |
|
|
|
|
|
|
|
// CSV吐き出しボタンをクリックし、CSVをダウンロード |
|
|
|
wait_.Until(ExpectedConditions.ElementToBeClickable(By.XPath(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]))); |
|
|
|
|
|
|
|
Click(xpath_map_[XpathKey.BUTTON_DOWNLOAD_CSV]); |
|
|
|
WaitForDownload(filename_electronic_money_); |
|
|
|
|
|
|
|
|
|
|
|
return ResultCode.OK; |
|
|
|
@@ -128,8 +147,7 @@ namespace CSVDownloader.Web { |
|
|
|
|
|
|
|
var result_list = new List<CreditCSVData>(); |
|
|
|
|
|
|
|
|
|
|
|
var list = GetFileContents(filename_credit); |
|
|
|
var list = GetFileContents(filename_credit_); |
|
|
|
|
|
|
|
bool failed_flg = false; |
|
|
|
var failed_parking_name_hs_table = new HashSet<String>(); |
|
|
|
@@ -182,7 +200,7 @@ namespace CSVDownloader.Web { |
|
|
|
|
|
|
|
var result_list = new List<QRCSVData>(); |
|
|
|
|
|
|
|
var list = GetFileContents(filename_qr); |
|
|
|
var list = GetFileContents(filename_qr_); |
|
|
|
|
|
|
|
bool failed_flg = false; |
|
|
|
var failed_parking_name_hs_table = new HashSet<String>(); |
|
|
|
@@ -229,6 +247,57 @@ namespace CSVDownloader.Web { |
|
|
|
return result_list; |
|
|
|
} |
|
|
|
|
|
|
|
public override List<ElectronicMoneyCSVData> GetElectronicMoneyCSVDataList() { |
|
|
|
|
|
|
|
|
|
|
|
var result_list = new List<ElectronicMoneyCSVData>(); |
|
|
|
|
|
|
|
var list = GetFileContents(filename_electronic_money_); |
|
|
|
|
|
|
|
bool failed_flg = false; |
|
|
|
var failed_parking_name_hs_table = new HashSet<String>(); |
|
|
|
|
|
|
|
foreach (var line in list) { |
|
|
|
|
|
|
|
var parking_name = line[(int)QRCSVDataDaito.ColName.ParkingName]; |
|
|
|
try { |
|
|
|
|
|
|
|
result_list.Add(new DaitoElectronicMoneyData() { |
|
|
|
spot_id = GetSpotID(parking_name), |
|
|
|
parking_name = parking_name, |
|
|
|
reception_datetime = DateTime.Parse(line[(int)DaitoElectronicMoneyData.ColName.ReceptionDatetime]), |
|
|
|
adjust_type = line[(int)DaitoElectronicMoneyData.ColName.AdjustType], |
|
|
|
amount = int.Parse(line[(int)DaitoElectronicMoneyData.ColName.Amount]), |
|
|
|
trade_id = line[(int)DaitoElectronicMoneyData.ColName.TradeID], |
|
|
|
adjust_result = line[(int)DaitoElectronicMoneyData.ColName.AdjustResult], |
|
|
|
}); |
|
|
|
} catch (ArgumentException) { |
|
|
|
failed_parking_name_hs_table.Add(parking_name); |
|
|
|
failed_flg = true; |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (failed_flg) { |
|
|
|
|
|
|
|
var error_list = new List<Store.ParkingCreditCardAgenciesSpotIDError>(); |
|
|
|
logger_.Error("失敗駐車場名"); |
|
|
|
foreach (var ele in failed_parking_name_hs_table) { |
|
|
|
error_list.Add(new Store.ParkingCreditCardAgenciesSpotIDError() { |
|
|
|
creditcard_agencies_id = CreditAgenciesMap.GetID(agent_), |
|
|
|
creditcard_agencies_spot_name = ele |
|
|
|
}); |
|
|
|
logger_.Error($"駐車場 \"{ele}\""); |
|
|
|
} |
|
|
|
|
|
|
|
throw new SpotNameNotMatchException(error_list); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return result_list; |
|
|
|
} |
|
|
|
|
|
|
|
private List<String[]> GetFileContents(String filename) { |
|
|
|
var list = new List<String[]>(); |
|
|
|
var dir = new DirectoryInfo(DriverFactory.GetDownloadDir()); |
|
|
|
|