Basf_FCL/FCL/FineUIPro.Web/SendEmail/SendEmail.aspx.cs

348 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using BLL;
using BLL.Common;
using FineUIPro.Web.common;
using Model;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web.UI.WebControls;
using System.Data;
namespace FineUIPro.Web.SendEmail
{
public partial class SendEmail : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GetButtonPower();
//加载菜单树
this.InitMenuTree();
string strSql = @"SELECT t.Requisitioner FROM
(SELECT b.UserId,a.Requisitioner
FROM FC_SESReport AS a
LEFT JOIN Sys_User AS b ON LOWER(a.Requisitioner)=LOWER(b.Account)
WHERE YEAR(CASE WHEN a.Claim_sheets_receive IS NULL THEN a.TECO_Date ELSE a.Claim_sheets_receive END)=(CASE MONTH(GETDATE()) WHEN 1 THEN YEAR(GETDATE())-1 ELSE YEAR(GETDATE()) END)
AND MONTH(CASE WHEN a.Claim_sheets_receive IS NULL THEN a.TECO_Date ELSE a.Claim_sheets_receive END)=(CASE MONTH(GETDATE()) WHEN 1 THEN 12 ELSE MONTH(GETDATE())-1 END)
AND ISNULL(a.Requisitioner,'')!=''
AND ISNULL(a.Deleted,'')='' AND ISNULL(a.Blocked,'')=''
AND (a.Claim_sheets_receive IS NOT NULL OR a.TECO_Date IS NOT NULL)
GROUP BY a.Requisitioner,a.FO,YEAR(CASE WHEN a.Claim_sheets_receive IS NULL THEN a.TECO_Date ELSE a.Claim_sheets_receive END),MONTH(CASE WHEN a.Claim_sheets_receive IS NULL THEN a.TECO_Date ELSE a.Claim_sheets_receive END),b.Email,b.UserId
)t
WHERE t.UserId IS NULL
GROUP BY t.Requisitioner";
DataTable dt = BLL.SQLHelper.GetDataTableRunText(strSql, null);
string user = string.Empty;
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
user = user + dt.Rows[i]["Requisitioner"].ToString() + ",";
}
lbUser.Text = user.Substring(0, user.Length - 1);
}
}
}
#region
/// <summary>
/// 加载菜单树:动态加载
/// </summary>
private void InitMenuTree()
{
this.tvMenu.Nodes.Clear();
TreeNode rootNode = new TreeNode();//定义根节点
rootNode.Text = "ALL People";
rootNode.NodeID = "0";
rootNode.Expanded = true;
rootNode.EnableCheckEvent = true;
rootNode.EnableCheckBox = true;
this.tvMenu.Nodes.Add(rootNode);
this.GetNodes(rootNode.Nodes, rootNode.NodeID);
}
#endregion
#region ()
/// <summary>
/// 遍历节点方法
/// </summary>
/// <param name="nodes">节点集合</param>
/// <param name="parentId">父节点</param>
private void GetNodes(TreeNodeCollection nodes, string parentId)
{
var emailUser = UserEmail();
var userList = emailUser.GroupBy(p => new
{ p.UserId, p.UserName, p.Email, p.IsSafetyEvaluate }).Select(p => new { p.Key.UserId, p.Key.UserName, p.Key.Email ,p.Key.IsSafetyEvaluate }).ToList();
if (userList.Count > 0)
{
userList = userList.OrderBy(x => x.UserName).ToList();
foreach (var item in userList)
{
var u = from x in Funs.DB.View_Sys_Users where x.UserId == item.UserId select x;
string safeTyEva = string.Empty;
if (item.IsSafetyEvaluate == 1)
{
safeTyEva = "-特殊作业安全评估";
}
TreeNode newNode = new TreeNode();
string nodeText = (item.UserName + "" + item.Email + ")" + safeTyEva).ToString();
if (!string.IsNullOrEmpty(u.First().DepartCode))
{
nodeText = u.First().DepartCode + "-" + nodeText;
}
if (u.First().IsPost == false)
{
nodeText = nodeText + "-OFF";
}
newNode.Text = nodeText;
newNode.NodeID = item.UserId;
newNode.NavigateUrl = item.Email;
newNode.EnableCheckEvent = true;
newNode.EnableCheckBox = true;
if (!string.IsNullOrEmpty(item.Email))
{
newNode.Selectable = true;
}
else
{
newNode.Selectable = false;
newNode.Checked = false;
}
nodes.Add(newNode);
}
lbUserNum.Text = userList.Count().ToString();
}
#region
//List<Model.Sys_User> sysUserMenu = null;
//sysUserMenu = (from x in BLL.Funs.DB.Sys_User where x.Account != "gly" orderby x.UserName select x).ToList();
//foreach (var q in sysUserMenu)
//{
// TreeNode newNode = new TreeNode();
// newNode.Text = (q.UserName + "" + q.Email + ")").ToString();
// newNode.NodeID = q.UserId;
// newNode.NavigateUrl = q.Email;
// newNode.EnableCheckEvent = true;
// newNode.EnableCheckBox = true;
// newNode.Selectable = true;
// nodes.Add(newNode);
//}
#endregion
}
#endregion
#region
/// <summary>
/// 加载人员信息
/// </summary>
/// <returns></returns>
public List<EmailUser> UserEmail()
{
var emailSendList = Funs.DB.View_EmailUser_Send.Where(p => p.EmailType != 2 && p.IsEvaluateType != 1).ToList();
var emailSendLeaderList = Funs.DB.View_EmailUserLeader_Send.Where(p => p.EmailType != 2 && p.IsEvaluateType != 1).ToList();
List<EmailUser> eUserList = new List<EmailUser>();
foreach (var item in emailSendList)
{
EmailUser eUserModel = new EmailUser();
eUserModel.ConGuid = item.ConGuid.ToString();
eUserModel.UserId = item.UserId;
eUserModel.UserName = item.UserName;
eUserModel.FO_NO = item.FO_NO;
eUserModel.Email = item.Email;
eUserModel.UserType = item.UserType;
eUserModel.dateYear = item.DateYear;
eUserModel.dateMonth = item.DateMonth;
eUserModel.emailType = item.EmailType;
eUserModel.emailName = item.EmailName;
eUserModel.IsEvaluateType = item.IsEvaluateType;
eUserModel.IsEvaluateName = item.IsEvaluateName;
eUserModel.IsSafetyEvaluate = item.IsSafetyEvaluate;
eUserList.Add(eUserModel);
}
foreach (var item in emailSendLeaderList)
{
EmailUser eUserModel = new EmailUser();
eUserModel.ConGuid = item.ConGuid.ToString();
eUserModel.UserId = item.UserId;
eUserModel.UserName = item.UserName;
eUserModel.FO_NO = item.FO_NO;
eUserModel.Email = item.Email;
eUserModel.UserType = item.UserType;
eUserModel.dateYear = item.DateYear;
eUserModel.dateMonth = item.DateMonth;
eUserModel.emailType = item.EmailType;
eUserModel.emailName = item.EmailName;
eUserModel.IsEvaluateType = item.IsEvaluateType;
eUserModel.IsEvaluateName = item.IsEvaluateName;
eUserModel.IsSafetyEvaluate = item.IsSafetyEvaluate;
eUserList.Add(eUserModel);
}
return eUserList;
}
#endregion
#region
/// <summary>
/// 全选、全不选
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvMenu_NodeCheck(object sender, FineUIPro.TreeCheckEventArgs e)
{
if (e.Checked)
{
this.tvMenu.CheckAllNodes(e.Node.Nodes);
SetCheckParentNode(e.Node);
}
else
{
this.tvMenu.UncheckAllNodes(e.Node.Nodes);
}
}
/// <summary>
/// 选中父节点
/// </summary>
/// <param name="node"></param>
private void SetCheckParentNode(TreeNode node)
{
if (node.ParentNode != null && node.ParentNode.NodeID != "0")
{
node.ParentNode.Checked = true;
if (node.ParentNode.ParentNode.NodeID != "0")
{
SetCheckParentNode(node.ParentNode);
}
}
}
#endregion
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
EmailPop pop = MailHelper.getEmailPop(BLL.Const.EmailPopId);
if (pop == null)
{
ShowNotify("Please configure mailbox sender!", MessageBoxIcon.Warning);
return;
}
string mailFrom = pop.EmailYx;
string[] mailTo = null;
string[] sMailTo = null;
string mailSubject = string.Empty;
string mailBody = string.Empty;
string mailAttch = string.Empty;
string mailCode = string.Empty;
string mailPriority = string.Empty;
string[] mailCC = null;
string resultMessage = "";
List<string> namelist = new List<string>();
List<string> safetyNamelist = new List<string>();
foreach (TreeNode tn in this.tvMenu.GetCheckedNodes())
{
if (tn.NodeID != "0" && !string.IsNullOrEmpty(tn.NavigateUrl))
{
if (tn.Text.Contains("特殊作业安全评估"))
{
safetyNamelist.Add(tn.NavigateUrl);
}
else
{
namelist.Add(tn.NavigateUrl);
}
}
}
mailTo = namelist.ToList().Distinct().ToArray();
sMailTo = safetyNamelist.ToList().Distinct().ToArray();
try
{
if (mailTo.Count() > 0)
{
var EmailTemplate = Funs.DB.SendEmailTemplate.Where(x => x.EmailName.Contains("Evaluation") && !x.EmailName.Contains("Safety"));
if (EmailTemplate.Count() > 0)
{
var emailUserList = UserEmail();
string templetpath = EmailTemplate.Select(p => p.EmailContext).FirstOrDefault();
NameValueCollection myCol = new NameValueCollection();
mailBody = TemplateHelper.BulidByFile2(templetpath, myCol);
bool f = MailHelper.SendNetMail(pop, mailFrom, mailTo, "[提醒]承包商绩效评估", mailBody, mailAttch, mailCode, mailPriority, mailCC, emailUserList, out resultMessage);
if (f == true)
{
InitMenuTree();
ShowNotify("Send Successfully!", MessageBoxIcon.Success);
}
else
{
ShowNotify(resultMessage, MessageBoxIcon.Error);
}
}
else
{
ShowNotify("Template free", MessageBoxIcon.Warning);
}
}
if (sMailTo.Count() > 0)
{
var EmailTemplate = Funs.DB.SendEmailTemplate.Where(x => x.EmailName.Contains("Evaluation") && x.EmailName.Contains("Safety"));
if (EmailTemplate.Count() > 0)
{
var emailUserList = UserEmail();
string templetpath = EmailTemplate.Select(p => p.EmailContext).FirstOrDefault();
NameValueCollection myCol = new NameValueCollection();
mailBody = TemplateHelper.BulidByFile2(templetpath, myCol);
bool f = MailHelper.SendNetMail(pop, mailFrom, sMailTo, "[提醒]特殊作业安全监护服务-承包商绩效评估", mailBody, mailAttch, mailCode, mailPriority, mailCC, emailUserList, out resultMessage);
if (f == true)
{
InitMenuTree();
ShowNotify("Send Successfully!", MessageBoxIcon.Success);
}
else
{
ShowNotify(resultMessage, MessageBoxIcon.Error);
}
}
else
{
ShowNotify("Template free", MessageBoxIcon.Warning);
}
}
}
catch (Exception ex)
{
ShowNotify(ex.Message, MessageBoxIcon.Error);
}
}
#region
/// <summary>
/// 菜单按钮权限
/// </summary>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.UserId, BLL.Const.SendEmailMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnSend))
{
this.btnSave.Hidden = false;
}
}
}
#endregion
}
}