using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace ChatworkBulkSender.UserControls
{
public partial class HistorySearchBoxControl : UserControl
{
public event EventHandler<Dictionary<string, object>> SearchRequested;
private int _pnlSearchCurrentX;
public HistorySearchBoxControl()
{
InitializeComponent();
_pnlSearchCurrentX = panelSearchBox.Width;
// デフォルト表示は空文字
dateTimePickerStart.CustomFormat = " ";
dateTimePickerEnd.CustomFormat = " ";
dateTimePickerStart.Checked = false;
dateTimePickerEnd.Checked = false;
rdoScheduleSendSelection.Checked = true;
// 検索ボタンのイベントハンドラを設定
btnSearch.Click += BtnSearch_Click;
// Dockを使用して親パネル全体を使用
this.Dock = DockStyle.Fill;
}
/// <summary>
/// 選択時に日付を西暦/月/日のフォーマットで表示する。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dateTimePickerStart_ValueChanged(object sender, EventArgs e)
{
dateTimePickerStart.CustomFormat = "yyyy/MM/dd";
}
/// <summary>
/// 選択時に日付を西暦/月/日のフォーマットで表示する。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dateTimePickerEnd_ValueChanged(object sender, EventArgs e)
{
dateTimePickerEnd.CustomFormat = "yyyy/MM/dd";
}
private void panelSearchBox_Resize(object sender, EventArgs e)
{
int Width = _pnlSearchCurrentX - panelSearchBox.Width;
customerNameTxtBox.Width -= Width;
}
/// <summary>
/// 検索ボタンクリック
/// </summary>
private void BtnSearch_Click(object sender, EventArgs e)
{
var criteria = GetSearchCriteria();
SearchRequested?.Invoke(this, criteria);
}
/// <summary>
/// 検索条件を取得
/// </summary>
private Dictionary<string, object> GetSearchCriteria()
{
var criteria = new Dictionary<string, object>();
// 管理番号
if (!string.IsNullOrWhiteSpace(mgmtNumberTxtBox.Text))
{
criteria["ManagementNumber"] = mgmtNumberTxtBox.Text.Trim();
}
// パターン名称
if (!string.IsNullOrWhiteSpace(PattrernNameTxtBox.Text))
{
criteria["PatternName"] = PattrernNameTxtBox.Text.Trim();
}
// 顧客名
if (!string.IsNullOrWhiteSpace(customerNameTxtBox.Text))
{
criteria["CustomerName"] = customerNameTxtBox.Text.Trim();
}
// 送信日時(開始)
if (dateTimePickerStart.Checked)
{
criteria["StartDate"] = dateTimePickerStart.Value.Date;
}
// 送信日時(終了)
if (dateTimePickerEnd.Checked)
{
criteria["EndDate"] = dateTimePickerEnd.Value.Date.AddDays(1).AddSeconds(-1);
}
// 送信タイプ
if (rdoScheduleSendSelection.Checked)
{
criteria["SendType"] = 0; // 定期送信
}
else if (rdoManualSendSelection.Checked)
{
criteria["SendType"] = 1; // 不定期送信
}
return criteria;
}
}
}