348 lines
14 KiB
C#
348 lines
14 KiB
C#
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
|
||
}
|
||
} |