using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CRM.BusinessLogic;
using CRM.BusinessLogic.ManageTopDB;
using CRM.Common.Utils;
using CRM.BusinessLogic.ManageContract;
using CRM.BusinessLogic.ManageAE;
using CRM.Web.TopTaobao.Helper;
using Top.Api.Domain;
using CRM.Web.TopTaobao.Domain;
using System.Collections;
namespace CRM.Web.TopTaobao
{
public partial class ModifyPrice_conditionContent : BaseAdministrationPage
{
private DateTime dataDT = new DateTime();
protected void Page_Load(object sender, EventArgs e)
{
dataDT = DateTime.Now.Date.AddDays(-1);
if (!IsPostBack)
{
BindDDLNicks();
BindDDLCampaigns("");
BindDDLAdgroups("", -1);
BindRptPolicy("", -1, -1, Pager.PageSize, 1);
litSearchPanel.Text = BindSearchHtml();//绑定搜索条件
}
}
#region 绑定数据
/// <summary>
/// 绑定店铺下拉列表
/// </summary>
private void BindDDLNicks()
{
int count = base.CustomerService.testIdentity(CRMContext.Current.User.CustomerID);
var contractStatus = new List<int>();
contractStatus.Add((int)ContractStatusEnum.Normal);//正常状态
var clients = new List<GetAEClients_Result>();
if (count > 0)
clients = base.AEContractService.GetAEClientsManageList("", "", -1, -1, -1, "", "", contractStatus, -1);
else
clients = base.AEContractService.GetAEClients(CRMContext.Current.User.CustomerID, "", "", -1,
-1, -1, "", contractStatus, 1, 100000, string.Empty, string.Empty, -1);
ddlNick.DataSource = clients;
ddlNick.DataTextField = "MasterWangNo";
ddlNick.DataValueField = "MasterWangNo";
ddlNick.DataBind();
ddlNick.Items.Insert(0, new ListItem("--请选择--", "-1"));
}
/// <summary>
/// 绑定推广计划下拉列表
/// </summary>
/// <param name="nick"></param>
private void BindDDLCampaigns(string nick)
{
if (nick.Equals("-1"))
{
//清空推广计划
ddlCampaign.Items.Clear();
ddlCampaign.Items.Insert(0, new ListItem("--请选择--", "-1"));
//清空推广组
suggestinput.Value = "--请选择--";
hdADGoupSelect.Value = "-1";
hdItemPicUrl.Value = "";
rptGroup.DataSource = null;
rptGroup.DataBind();
}
else
{
IList<DCCampaign> mCampaignLst = base.DCCampaignService.GetCampaigns(nick, dataDT);
ddlCampaign.DataSource = mCampaignLst;
ddlCampaign.DataTextField = "title";
ddlCampaign.DataValueField = "campaign_id";
ddlCampaign.DataBind();
ddlCampaign.Items.Insert(0, new ListItem("--请选择--", "-1"));
}
}
/// <summary>
/// 绑定推广组下拉列表
/// </summary>
/// <param name="nick"></param>
/// <param name="campaignId"></param>
private void BindDDLAdgroups(string nick, long campaignId)
{
if (nick.Equals("-1") || campaignId.Equals(-1))
{
//清空推广组
suggestinput.Value = "--请选择--";
hdADGoupSelect.Value = "-1";
hdItemPicUrl.Value = "";
rptGroup.DataSource = null;
rptGroup.DataBind();
}
else
{
suggestinput.Value = "--请选择--";
IList<DCADGroup> mDCADGroupLst = base.DCADGroupService.GetAdgroups(nick, campaignId, dataDT);
rptGroup.DataSource = mDCADGroupLst;
rptGroup.DataBind();
}
}
/// <summary>
/// 绑定策略列表
/// </summary>
/// <param name="nick"></param>
/// <param name="campaignId"></param>
/// <param name="adgroupId"></param>
/// <param name="pageSize"></param>
/// <param name="pageIndex"></param>
private void BindRptPolicy(string nick, long campaignId,long adgroupId, int pageSize, int pageIndex)
{
IList<DCModifyPriceConditionContent> mPolicyList = new List<DCModifyPriceConditionContent>();
IList<DCModifyPriceConditionContent> mPolicyGroupList = new List<DCModifyPriceConditionContent>(); //按推广组分组
IList<DCModifyPriceConditionContent> mPolicyGroupPageList = new List<DCModifyPriceConditionContent>();
if (!string.IsNullOrEmpty(nick) && !campaignId.Equals(-1) && !adgroupId.Equals(-1))
mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick, campaignId, adgroupId);
else if (!string.IsNullOrEmpty(nick) && !campaignId.Equals(-1))
mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick, campaignId);
else if (!string.IsNullOrEmpty(nick))
mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick);
else
mPolicyList = new List<DCModifyPriceConditionContent>();
//分组
if (mPolicyList.Count > 0)
{
mPolicyGroupList = mPolicyList.GroupBy(p => new { p.nick, p.campaign_id, p.adgroup_id, p.title, p.itemPicUrl, p.priceRange })
.Select(g => new DCModifyPriceConditionContent
{
nick = g.Key.nick,
campaign_id = g.Key.campaign_id,
adgroup_id = g.Key.adgroup_id,
title = g.Key.title,
itemPicUrl = g.Key.itemPicUrl,
priceRange = g.Key.priceRange
})
.OrderBy(p => p.nick)
.ThenBy(p=>p.campaign_id)
.ThenBy(p=>p.adgroup_id)
.ToList<DCModifyPriceConditionContent>();
mPolicyGroupPageList = mPolicyGroupList.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();
}
if (mPolicyList.Count == 0)
lblNoRecord.Visible = true;
else
lblNoRecord.Visible = false;
Pager.RecordCount = mPolicyGroupList.Count;
rptPolicy.DataSource = mPolicyGroupPageList;
rptPolicy.DataBind();
}
/// <summary>
/// 绑定查询 Panel 的 Html 元素
/// </summary>
/// <returns></returns>
private string BindSearchHtml()
{
int TrCount = 0; //总行数
string[] DelRowId_Array = hiddenSearchRowDel.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); //删除行Id数组
try
{
TrCount = Convert.ToInt32(hiddenSearchRowCount.Value);
}
catch { }
string res = "";
for (int i = 0; i < TrCount; i++)
{
if (HasDeletedRow(i.ToString(), DelRowId_Array))
{
continue;
}
string strSearchField = string.Empty;
string strSmall = string.Empty;
string strBig = string.Empty;
string strPriority = string.Empty;
if (Request["selSearchField_" + i] != null)
{
strSearchField = Request["selSearchField_" + i].Trim();
}
if (Request["txtSmallSearch_" + i] != null)
{
strSmall = Request["txtSmallSearch_" + i].Trim();
}
if (Request["txtBigSearch_" + i] != null)
{
strBig = Request["txtBigSearch_" + i].Trim();
}
if (Request["selPriority_" + i] != null)
{
strPriority = Request["selPriority_" + i].Trim();
}
res = res + "<div class=\"box3\" id=\"divRowDelete_" + i + "\">\r\n";
#region 搜索字段
//策略项
string[] policies = new string[] { "展现量", "点击量", "点击率", "花费", "平均花费", "昨日平均排名", "收藏量", "成交量", "成交额", "投资回报率", "点击转化率" };
res = res + "<div class=\"p_c\">\r\n";
res = res + "<select name=\"selSearchField_" + i + "\" id=\"selSearchField_" + i + "\" style=\"width:150px;height:25px;\" onchange=\"doSelectChange(" + i + ");\">\r\n";
res = res + "<option value=\"-1\">--请选择--</option>";
foreach (string item in policies)
{
if (item == strSearchField.Trim())
{
res = res + "<option value=\"" + item + "\" selected>" + item + "</option>\r\n";
}
else
{
res = res + "<option value=\"" + item + "\">" + item + "</option>\r\n";
}
}
res = res + "</select>\r\n";
res = res + "</div>\r\n";
#endregion
res = res + "<div class=\"serch\" style=\"width:80px;\">\r\n";
res = res + "<input name=\"txtSmallSearch_" + i + "\" type=\"text\" id=\"txtSmallSearch_" + i + "\" value=\"" + strSmall + "\" class=\"TextBox\" style=\"width:80px;\">\r\n";
res = res + "</div>\r\n";
res = res + "<div class=\"serch\" style=\"width:10px;margin-left:2px;margin-right:2px;\"> 至 </div>\r\n";
res = res + "<div class=\"serch\" style=\"width:80px;\">\r\n";
res = res + "<input name=\"txtBigSearch_" + i + "\" type=\"text\" id=\"txtBigSearch_" + i + "\" value=\"" + strBig + "\" class=\"TextBox\" style=\"width:80px;\">\r\n";
res = res + "</div>\r\n";
#region 策略优先级别
string[] priorities = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" }; //优先级
res = res + "<div class=\"p_c\">\r\n";
res = res + "<select name=\"selPriority_" + i + "\" id=\"selPriority_" + i + "\" style=\"margin-left:20px;margin-right:10px;width:150px;height:25px;\" >\r\n";
res = res + "<option value=\"-1\">--请选择优先级--</option>";
foreach (string item in priorities)
{
if (item == strPriority.Trim())
{
res = res + "<option value=\"" + item + "\" selected>" + item + " 级</option>\r\n";
}
else
{
res = res + "<option value=\"" + item + "\">" + item + " 级</option>\r\n";
}
}
res = res + "</select>\r\n";
res = res + "</div>\r\n";
#endregion
if (i != 0)
{
res = res + "<div style=\"float:left;width:10px;margin-top:6px;\">\r\n";
res = res + "<a href=\"javascript:doRowDelete(" + i + ");\"><img alt=\"删除\" src=\"images/delete.jpg\" style=\"border:0px;\" /></a>\r\n";
res = res + "</div>\r\n";
}
res = res + "</div>\r\n";
}
return res;
}
#endregion
/// <summary>
/// 按钮 “添加搜索”
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAddSearchCondition_Click(object sender, EventArgs e)
{
hiddenSearchRowCount.Value = (int.Parse(hiddenSearchRowCount.Value) + 1).ToString();
litSearchPanel.Text = BindSearchHtml();
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (!ValidateInput()) return;
int TrCount = 0; //总行数
string[] DelRowId_Array = hiddenSearchRowDel.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); //删除行Id数组
try
{
TrCount = Convert.ToInt32(hiddenSearchRowCount.Value);
}
catch { }
for (int i = 0; i < TrCount; i++)
{
if (HasDeletedRow(i.ToString(), DelRowId_Array))
{
continue;
}
DCModifyPriceConditionContent policy = new DCModifyPriceConditionContent();
policy.nick = ddlNick.SelectedValue.Trim();
policy.campaign_id = Convert.ToInt32(ddlCampaign.SelectedValue.Trim());
policy.adgroup_id = Convert.ToInt64(hdADGoupSelect.Value.Trim());
policy.title = suggestinput.Value.Trim();
policy.itemPicUrl = hdItemPicUrl.Value.Trim();
if (!Request["selSearchField_" + i].Trim().Equals("-1"))
{
policy.condition = Request["selSearchField_" + i].Trim();
}
if (!string.IsNullOrEmpty(Request["txtSmallSearch_" + i].Trim()))
{
policy.smallContent = Request["txtSmallSearch_" + i].Trim();
}
if (!string.IsNullOrEmpty(Request["txtBigSearch_" + i].Trim()))
{
policy.bigContent = Request["txtBigSearch_" + i].Trim();
}
if (!Request["selPriority_" + i].Trim().Equals("-1"))
{
policy.priority = Request["selPriority_" + i].Trim();
}
policy.priceRange = Convert.ToInt32(txtPriceRange.Text.Trim());
policy.createPerson = CRMContext.Current.User.SCustomerInfo.FullName;
policy.createTime = DateTime.Now;
policy.modifyPerson = CRMContext.Current.User.SCustomerInfo.FullName;
policy.modifyTime = DateTime.Now;
base.DCModifyPriceConditionContentService.Insert(policy);
}
string nick = ddlNick.SelectedValue.Trim();
long campaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
long adgroupId = long.Parse(hdADGoupSelect.Value.Trim());
BindRptPolicy(nick, campaignId, adgroupId, Pager.PageSize, 1);
//清空策略输入项
hiddenSearchRowDel.Value = "";
hiddenSearchRowCount.Value = "0";
litSearchPanel.Text = BindSearchHtml();
}
/// <summary>
/// 验证输入数据合法性
/// </summary>
/// <returns></returns>
private bool ValidateInput()
{
string nick = ddlNick.SelectedValue.Trim();
long campaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
long adgroupId = long.Parse(hdADGoupSelect.Value.Trim());
IList<DCModifyPriceConditionContent> mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick, campaignId, adgroupId);
if (mPolicyList.Count > 0)
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('该推广组已经存在其它策略,请先删除');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (ddlNick.SelectedValue.Equals("-1"))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('请选择店铺');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (ddlCampaign.SelectedValue.Equals("-1"))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('请选择推广计划');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (string.IsNullOrEmpty(hdADGoupSelect.Value)
|| hdADGoupSelect.Value.Trim().Equals("-1"))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('请选择推广组');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (string.IsNullOrEmpty(txtPriceRange.Text.Trim()))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('调价幅度不能为空');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
int pacent = 0;
if (!int.TryParse(txtPriceRange.Text.Trim(), out pacent))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('调价幅度必须是整数');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
#region 验证策略合法性
int TrCount = 0; //总行数
string[] DelRowId_Array = hiddenSearchRowDel.Value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); //删除行Id数组
try
{
TrCount = Convert.ToInt32(hiddenSearchRowCount.Value);
}
catch { }
Hashtable hstPolicyItems = new Hashtable();
Hashtable hstPolicyPriorities = new Hashtable();
for (int i = 0; i < TrCount; i++)
{
if (HasDeletedRow(i.ToString(), DelRowId_Array))
{
continue;
}
if (Request["selSearchField_" + i].Trim().Equals("-1"))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('请选择策略项');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
int result = 0;
if (!int.TryParse(Request["txtSmallSearch_" + i].Trim(), out result))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key",
"alert('请输入[" + Request["selSearchField_" + i].Trim() + "]下限值,必须是整数');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (!int.TryParse(Request["txtBigSearch_" + i].Trim(), out result))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key",
"alert('请输入[" + Request["selSearchField_" + i].Trim() + "]上限值,必须是整数');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (Request["selPriority_" + i].Trim().Equals("-1"))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('请选择策略优先级');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (Convert.ToInt32(Request["txtSmallSearch_" + i].Trim()) >= Convert.ToInt32(Request["txtBigSearch_" + i].Trim()))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key",
"alert('[" + Request["selSearchField_" + i].Trim() + "]上限值必须大于下限值');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (!hstPolicyItems.ContainsKey(Request["selSearchField_" + i].Trim()))
hstPolicyItems.Add(Request["selSearchField_" + i].Trim(), "");
if (!hstPolicyPriorities.ContainsKey(Request["selPriority_" + i].Trim()))
hstPolicyPriorities.Add(Request["selPriority_" + i].Trim(), "");
}
#endregion
if (!TrCount.Equals(hstPolicyItems.Count))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('策略项不能重复');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
if (!TrCount.Equals(hstPolicyPriorities.Count))
{
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('策略优先级不能重复');", true);
litSearchPanel.Text = BindSearchHtml();//重新绑定搜索条件
return false;
}
return true;
}
/// <summary>
/// 该行是否已经被删除
/// </summary>
/// <param name="strRowId"></param>
/// <param name="DelRowId_Array"></param>
/// <returns></returns>
private bool HasDeletedRow(string strRowId, string[] DelRowId_Array)
{
foreach (string strId in DelRowId_Array)
{
if (strRowId == strId)
{
return true;
}
}
return false;
}
protected void rptPolicy_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string str = "";
DCModifyPriceConditionContent mPolicy = (DCModifyPriceConditionContent)e.Item.DataItem;
IList<DCModifyPriceConditionContent> mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(mPolicy.nick, mPolicy.campaign_id.Value, mPolicy.adgroup_id.Value);
foreach (var m in mPolicyList)
{
str += m.condition + ": " + m.smallContent + " ~ " + m.bigContent + "<br/>";
}
Label lblConditionContent = e.Item.FindControl("lblConditionContent") as Label;
lblConditionContent.Text = str;
}
}
protected void rptPolicy_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName.Equals("delete"))
{
HiddenField hdNick = e.Item.FindControl("hdNick") as HiddenField;
HiddenField hdCampaignId = e.Item.FindControl("hdCampaignId") as HiddenField;
string nick = hdNick.Value.Trim();
long campaignId = long.Parse(hdCampaignId.Value.Trim());
long adgroupId = long.Parse(e.CommandArgument.ToString());
IList<DCModifyPriceConditionContent> mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick, campaignId, adgroupId);
foreach (var m in mPolicyList)
{
base.DCModifyPriceConditionContentService.Delete(m.id);
}
ScriptManager.RegisterStartupScript(UpdatePanel1, this.GetType(), "Key", "alert('删除成功');", true);
string currentNick = ddlNick.SelectedValue.Trim();
long currentCampaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
long currentAdgroupId = long.Parse(hdADGoupSelect.Value.Trim());
BindRptPolicy(currentNick, currentCampaignId, currentAdgroupId, Pager.PageSize, 1);
}
}
/// <summary>
/// 分页
/// </summary>
/// <param name="src"></param>
/// <param name="e"></param>
protected void Pager_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
string nick = ddlNick.SelectedValue.Trim();
long campaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
long adgroupId = long.Parse(hdADGoupSelect.Value.Trim());
BindRptPolicy(nick, campaignId, adgroupId, Pager.PageSize, e.NewPageIndex);
}
protected void btnSearch_Click(object sender, EventArgs e)
{
string nick = ddlNick.SelectedValue.Trim();
long campaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
long adgroupId = long.Parse(hdADGoupSelect.Value.Trim());
IList<DCModifyPriceConditionContent> mPolicyList = base.DCModifyPriceConditionContentService.GetPolicies(nick, campaignId, adgroupId);
if (mPolicyList.Count > 0)
txtPriceRange.Text = mPolicyList[0].priceRange.ToString();
else
txtPriceRange.Text = "";
BindRptPolicy(nick, campaignId, adgroupId, Pager.PageSize, 1);
litSearchPanel.Text = BindSearchHtml();
}
/// <summary>
/// 店铺下拉选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlNick_SelectedIndexChanged(object sender, EventArgs e)
{
string nick = ddlNick.SelectedValue.Trim();
BindDDLCampaigns(nick);
BindRptPolicy(nick, -1, -1, Pager.PageSize, 1);
litSearchPanel.Text = BindSearchHtml();
}
/// <summary>
/// 推广计划下拉选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlCampaign_SelectedIndexChanged(object sender, EventArgs e)
{
string nick = ddlNick.SelectedValue.Trim();
long campaignId = long.Parse(ddlCampaign.SelectedValue.Trim());
BindDDLAdgroups(nick,campaignId);
BindRptPolicy(nick, campaignId, -1, Pager.PageSize, 1);
litSearchPanel.Text = BindSearchHtml();
}
}
}