// 逾期及群組處理流程 /*private bool DeadLineAndMemberGroupProcess(string group, ref IQueryable<ERecords> records) { string ignorelist = ""; foreach (var record in records) { if (!record.RID.Contains("_B")) { // "已結案" if (record.StatusID == 3) { // 清空逾期期限 foreach (var er in record.EmailRecord) { er.ExpireOn = null; db.Entry(er).State = EntityState.Modified; } } // "未處理" else if (record.StatusID == 1) { var ec = record.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault(); if (ec != null) { var expireon = ec.ExpireOn; if (expireon != null && expireon.Value < DateTime.Now) { record.AgentID = null; db.Entry(record).State = EntityState.Modified; } } } // "處理中" else if (record.StatusID == 2) { // "未值機" if (record.AgentID != null && record.AgentID.Length > 0) { var a = db.Agent.Find(record.AgentID); if (a != null && a.EmailIsLogin == 0) { var ec = record.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault(); if (ec != null) { var expireon = record.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().ExpireOn; if (expireon != null && expireon.Value < DateTime.Now) { record.AgentID = null; db.Entry(record).State = EntityState.Modified; } } } } } } var emailrecord = record.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault(); if (emailrecord == null) emailrecord = new EEmailRecord(); if (record.EmailRecord.Count > 1) emailrecord.IsReply = 1; else emailrecord.IsReply = 0; if (!group.ToUpper().Contains("ENTERPRISE,PERSONAL") && !group.ToUpper().Contains("SUPER")) { var agent = db.Agent.FirstOrDefault(a => a.AgentID == record.AgentID); if (agent == null) { agent = db.Agent.FirstOrDefault(a => a.AgentID == emailrecord.CurrAgentId); } if (agent != null) { var mm = db.MailMember.Where(m => m.CTILoginID == agent.CTILoginID); if (mm != null) { bool bFound = false; foreach (var m in mm) { if (group.ToUpper().Contains(m.GroupID.ToUpper())) { bFound = true; break; } } if (!bFound) { ignorelist += "|" + record.RID; } } } else { var mm = db.EmailRawHeader.Find(emailrecord.RawHeaderId); if (mm != null) { string GroupMailServer = "*****@*****.**"; if (group.ToUpper().Contains("PERSONAL")) GroupMailServer = "*****@*****.**"; if (!mm.MsgTo.ToUpper().Contains(GroupMailServer.ToUpper())) ignorelist += "|" + record.RID; } } } } db.SaveChanges(); if (ignorelist.Length > 0) { ignorelist = ignorelist.Substring(1); string[] arrIgnore = ignorelist.Split('|'); records = records.Where(r => !arrIgnore.Contains(r.RID)); } return true; }*/ // 查詢及排序 private bool SearchAndSort(EmailAdmin_SearchCondition searchcondition, string orderby, ref IQueryable<ERecords> records, int Desc = 0) { #region 查詢 if (searchcondition != null) { if (!String.IsNullOrEmpty(searchcondition.type) && !String.IsNullOrEmpty(searchcondition.condition)) { string condition = searchcondition.condition; switch (searchcondition.type) { // 案件編號 case "3": records = records.Where(e => condition.ToUpper().Contains(e.RID.ToUpper())); break; // 寄件者 case "2": records = records.Where(e => e.EmailRecord.OrderByDescending(r => r.OrderNo).FirstOrDefault().EmailRawHeader.MsgFrom.ToUpper().Contains(condition.ToUpper())); break; // 客服人員 case "1": default: records = records.Where(e => e.AgentID != null && e.AgentID.Length > 0 && e.EAgent.AgentName.ToUpper().Contains(condition.ToUpper())); break; } } if (!String.IsNullOrEmpty(searchcondition.Filter_Record_StatusID)) { string[] arrStatusIDs = searchcondition.Filter_Record_StatusID.Split(','); int[] intStatusIDs = arrStatusIDs.Select(x => int.Parse(x)).ToArray(); records = records.Where(r => intStatusIDs.Contains(r.StatusID.Value)); } if (!String.IsNullOrEmpty(searchcondition.Filter_Record_TypeID)) { string[] arrTypeIDs = searchcondition.Filter_Record_TypeID.Split(','); int[] intTypeIDs = arrTypeIDs.Select(x => int.Parse(x)).ToArray(); records = records.Where(r => intTypeIDs.Contains(r.TypeID.Value)); } } #endregion #region 標題欄的排序 if (!String.IsNullOrEmpty(orderby)) { switch (orderby) { // 寄件者 case "MsgFrom": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().EmailRawHeader.MsgFrom) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().EmailRawHeader.MsgFrom); break; // 郵件主旨 case "MsgSubject": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().EmailRawHeader.MsgSubject) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().EmailRawHeader.MsgSubject); break; // 進件時間 case "IncomeOn": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().IncomeOn) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().IncomeOn); break; // 逾期時間 case "ExpireOn": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().ExpireOn) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().ExpireOn); break; // 轉派次數 case "AssignCount": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().AssignCount) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().AssignCount); break; // 客服人員 case "AgentID": records = (Desc == 1) ? records.OrderByDescending(r => r.AgentID) : records.OrderBy(r => r.AgentID); break; // 案件狀態 case "EmailStatus": records = (Desc == 1) ? records.OrderByDescending(r => r.RecordStatus.Name) : records.OrderBy(r => r.RecordStatus.Name); break; // 是否為垃圾郵件 case "Garbage": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().Garbage) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().Garbage); break; // 處理狀況 case "ProcessStatus": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().ProcessStatus) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().ProcessStatus); break; // 退回原因 case "RejectReason": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().RejectReason) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().RejectReason); break; // 退回人員 case "CurrAgentId": records = (Desc == 1) ? records.OrderByDescending(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().RejectReason).ThenByDescending((r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().CurrAgentId)) : records.OrderBy(r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().RejectReason).ThenBy((r => r.EmailRecord.OrderByDescending(e => e.OrderNo).FirstOrDefault().CurrAgentId)); break; // 案件類型 case "TypeID": records = (Desc == 1) ? records.OrderByDescending(r => r.TypeID) : records.OrderBy(r => r.TypeID); break; // 處理方式 case "CloseApproachID": records = (Desc == 1) ? records.OrderByDescending(r => r.CloseApproachID) : records.OrderBy(r => r.CloseApproachID); break; // 案件編號 case "RID": default: records = (Desc == 1) ? records.OrderByDescending(r => r.RID) : records.OrderBy(r => r.RID); break; } } else { records = (Desc == 1) ? records.OrderBy(r => r.RID) : records.OrderByDescending(r => r.RID); } #endregion return true; }
public ActionResult IndexWait(EmailAdmin_SearchCondition searchcondition, string searchconditionStr, string sortOrder, int Desc = 0, int page = 1) { if (searchconditionStr != null && searchconditionStr.Length > 0) searchcondition = EmailAdmin_SearchCondition.Deserialize(searchconditionStr); int currentPage = page < 1 ? 1 : page; var records = db.Records.Include(e => e.Customers) .Include(e => e.EmailRecord) .Include(e => e.RecordStatus) .Include(e => e.RecordType) .Include(e => e.ServiceItem).Where(r => r.TypeID == 3); records = records.Where(r => r.AgentID == null || r.AgentID.Length < 1); DeadLineProcess(records); MailMemberProcessNormal(userGroupId, ref records); SearchAndSort(searchcondition, sortOrder, ref records, Desc); #region 網頁物件準備 if (searchcondition.Filter_Record_StatusID == null) searchcondition.Filter_Record_StatusID = ""; if (searchcondition.Filter_Record_TypeID == null) searchcondition.Filter_Record_TypeID = ""; if (searchcondition.type == null) searchcondition.type = "1"; if (searchcondition.condition == null) searchcondition.condition = ""; ViewBag.SearchCondition = searchcondition; ViewBag.Order = sortOrder; ViewBag.NumberBegin = pageSize * (page - 1); ViewBag.Desc = Desc; if (sortOrder != null && sortOrder.Length > 0) ViewBag.Desc = (Desc == 1) ? 0 : 1; ViewBag.Page = page; ViewBag.Source = "1"; #endregion var records2 = records.ToPagedList(currentPage, pageSize); foreach (var rd in records2) { string strItemNames = ""; foreach (var item in db.RecordServiceMap.Where(s => s.RID == rd.RID)) { int nGroupID = item.GroupID; int nItemID = item.ItemID; strItemNames += "," + db.ServiceItem.FirstOrDefault(si => si.GroupID == nGroupID && si.ItemID == nItemID).ItemDesc; } if (strItemNames.Length > 0) strItemNames = strItemNames.Substring(1); rd.ServiceItemNames = strItemNames; } return View(records2); }
public static string Serialize(EmailAdmin_SearchCondition xyz) { var serializer = new JavaScriptSerializer(); return serializer.Serialize(xyz); }