using System;
using System.Collections.Generic;
using System.Web.UI.WebControls;
using DfExampleBiz.Common;
using DfExampleBiz.Facade.Member;
using DfExampleBiz.Facade.Member.Condition;
using Seasar.Quill;
namespace DfExampleWeb.View.Member
{
public partial class MemberList : System.Web.UI.Page
{
///
/// メンバーFacade
///
protected MemberFacade facade;
///
/// コンストラクタ
///
public MemberList()
{
//インジェクト
QuillInjector.GetInstance().Inject(this);
}
///
/// ページロード
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//検索部分のドロップダウン部分設定
IList> list = facade.GetMemberStatusList();
ddlMemberStatus.Items.Add(new ListItem(""));
foreach (var pair in list)
{
ddlMemberStatus.Items.Add(new ListItem(pair.Value, pair.Key));
}
ddlMemberStatus.DataBind();
#region パラメーターから検索値やページ番号設定
var s = Request.QueryString;
string pageNumber = s.Get("pn");
string memberName = s.Get("mn");
string purchaseItem = s.Get("pi");
string memberStatusCd = s.Get("msc");
string hasUnPaid = s.Get("hup");
string from = s.Get("from");
string to = s.Get("to");
if (string.IsNullOrEmpty(pageNumber))
{
//指定無しの場合1ページ目を検索
pageNumber = "1";
}
if (!string.IsNullOrEmpty(memberName))
{
txtMemberName.Text = memberName;
}
if (!string.IsNullOrEmpty(purchaseItem))
{
txtPurchaseItem.Text = purchaseItem;
}
if (!string.IsNullOrEmpty(memberStatusCd))
{
ddlMemberStatus.SelectedValue = memberStatusCd;
}
if (!string.IsNullOrEmpty(hasUnPaid))
{
//URLは変更される可能性があるため本当はTryParse
chkUnPaid.Checked = bool.Parse(hasUnPaid);
}
if (!string.IsNullOrEmpty(from))
{
txtFormalizedDatetimeFrom.Text = from;
}
if (!string.IsNullOrEmpty(to))
{
txtFormalizedDatetimeTo.Text = to;
}
#endregion
DoSearch(int.Parse(pageNumber));
}
}
///
/// 検索実行
///
///
///
protected void btnSearch_Click(object sender, EventArgs e)
{
DoSearch(1);
}
///
/// ページ番号を指定して検索実行
///
/// ページ番号
private void DoSearch(int pageNumber)
{
MemberCondition cb = new MemberCondition();
cb.PageNumber = pageNumber;
cb.MemberName = txtMemberName.Text;
cb.PurchaseItemName = txtPurchaseItem.Text;
cb.MemberStatusCd = ddlMemberStatus.SelectedValue;
if (!string.IsNullOrEmpty(txtFormalizedDatetimeFrom.Text))
{
cb.FormalizedDatetimeFrom = DateTime.Parse(txtFormalizedDatetimeFrom.Text);
}
if (!string.IsNullOrEmpty(txtFormalizedDatetimeTo.Text))
{
cb.FormalizedDatetimeTo = DateTime.Parse(txtFormalizedDatetimeTo.Text);
}
cb.HasUnPaid = chkUnPaid.Checked;
var list = facade.GetMemberList(cb);
SetPagingArea(list.AllRecordCount, txtMemberName.Text, txtPurchaseItem.Text, ddlMemberStatus.SelectedValue,
chkUnPaid.Checked, txtFormalizedDatetimeFrom.Text, txtFormalizedDatetimeTo.Text);
//TODO 編集画面や購入履歴画面へのURLを作成し設定する
rptMember.DataSource = list.MemberList;
rptMember.DataBind();
}
///
/// ページングのリンク生成(検索条件を持ちまわる)
/// とりあえず。。。
///
///
private void SetPagingArea(int AllPageCount, string memberName, string purchaseItem, string memberStatus,
bool hasUnPaid, string from, string to)
{
IList list = new List();
for (int i = 0; i < AllPageCount; i++)
{
string num = (i + 1).ToString();
PagingDto dto = new PagingDto();
dto.PageNum = num;
string url = string.Format("MemberList.aspx?pn={0}&mn={1}&pi={2}&msc={3}&hup={4}&from={5}&to={6}", num,
memberName, purchaseItem, memberStatus, hasUnPaid, from, to);
dto.PageUrl = url;
list.Add(dto);
}
rptPaging.DataSource = list;
rptPaging.DataBind();
}
//TODO Validate
}
}