using Model; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Entity; using System.Data.OleDb; using System.Diagnostics; using System.Globalization; using System.IO; using System.Linq; using System.Security.Cryptography; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using static Model.activity_check; public partial class admin_follower_reg : MyWeb.config { private Model.ezEntities _db = new Model.ezEntities(); public ArrayList _tmp = new ArrayList(); public bool isDataChanged = false; public bool isAutoNumbering = ConfigurationManager.AppSettings["IsAutoNumbering"].ToString() == "true" ? true : false; protected void Page_Load(object sender, EventArgs e) { CallAjax(); if (!IsPostBack) { InitEnumsOptions(identity_type); //身分別 //var qry = _db.followers.AsEnumerable(); var qry = _db.followers.AsQueryable(); if (isStrNull(Request["num"])) { if (!isAutoNumbering) { f_number.ReadOnly = false; } if (!isStrNull(Request["leader"])) { int _num = Val(Request["leader"]); var prod = qry.Where(q => q.num == _num).FirstOrDefault(); //家長的資訊 if (prod != null) { leader_txt.Value = prod.u_name; leader.Value = prod.num.ToString(); address.Text = prod.address; contactor.Text = prod.u_name; if (!isStrNull(prod.phone)) { MyWeb.encrypt encrypt = new MyWeb.encrypt(); contactor_phone.Text = encrypt.DecryptAutoKey(prod.phone.ToString()); } } } //預設國籍 country.Value = "158"; country_txt.Value = "中華民國(台灣)"; // 預設加入日期 join_date.Text = DateTime.Now.ToString("yyyy-MM-dd"); } else { f_number.ReadOnly = true; int _num = Val(Request["num"]); var prod = qry.Where(q => q.num == _num).FirstOrDefault(); if (prod != null) { MyWeb.encrypt encrypt = new MyWeb.encrypt(); try { foreach (Control obj in cardBodyPanel.Controls) { if (obj is TextBox) { var ObjValue = prod.GetType().GetProperty(obj.ID).GetValue(prod, null); if (!isStrNull(ObjValue)) { var textBox = (TextBox)obj; if (textBox.TextMode == TextBoxMode.Date) { textBox.Text = Convert.ToDateTime(ObjValue).ToString("yyyy-MM-dd"); } else if (!isStrNull(textBox.Attributes["data-encrypt"]) && ValString(textBox.Attributes["data-encrypt"]).Equals("Y")) { textBox.Text = !isStrNull(ObjValue)? encrypt.DecryptAutoKey(ObjValue.ToString()) :""; } else { textBox.Text = ObjValue.ToString(); } } } else if (obj is DropDownList && ((DropDownList)obj).SelectedIndex == 0) { var ObjValue = prod.GetType().GetProperty(obj.ID).GetValue(prod, null); if (!isStrNull(ObjValue)) { var dropDown = (DropDownList)obj; dropDown.SelectedValue = ObjValue.ToString(); } } } } catch (Exception ex) { L_msg.Type = alert_type.danger; L_msg.Text = ex.Message; } if (prod.birthday.HasValue) { Literal1.Text = publicFun.chagenDate(prod.birthday.Value); //農曆生日 Literal2.Text = Model.follower.chagenSign(prod.birthday.Value); //生肖 } if (prod.leader.HasValue) { leader_txt.Value = prod.follower1.u_name.ToString(); leader.Value = prod.leader.ToString(); } if (!isStrNull(prod.tab)) { string[] k = prod.tab.Split(','); for (int i = 0; i < k.Length; i++) { _tmp.Add(k[i].ToString()); } tab.Value = prod.tab.ToString(); } if (!isStrNull(prod.country)) { country_txt.Value = prod.country1.name_zh.ToString(); country.Value = prod.country.ToString(); } if (prod.reg_time.HasValue) { timePanel1.Visible = true; reg_time.Text= prod.reg_time.Value.ToString("yyyy/MM/dd HH:mm:ss"); } if ( !isStrNull( prod.admin_log)) { timePanel2.Visible = true; modify_time.Text = prod.admin_log; } if (!isStrNull(prod.is_auto_enroll)) { hid_is_auto_enroll.Value = prod.is_auto_enroll.ToString(); } if (prod.auto_enroll_start_date.HasValue) { hid_auto_enroll_start_date.Value = prod.auto_enroll_start_date.Value.ToString("yyyy-MM-dd"); } if (prod.auto_enroll_is_receipt.HasValue) { hid_auto_enroll_is_receipt.Value = prod.auto_enroll_is_receipt.ToString(); } if (!isStrNull(prod.auto_enroll_receipt_title)) { hid_auto_enroll_receipt_title.Value = prod.auto_enroll_receipt_title.ToString(); } if (!isStrNull(prod.auto_enroll_receipt_address)) { hid_auto_enroll_receipt_address.Value = prod.auto_enroll_receipt_address.ToString(); } edit.Visible = true; goback.Visible = true; add.Visible = false; phoneReqStar.Visible = false; cellphoneReqStar.Visible = false; addrReqStar.Visible = false; addressRFV.Visible = false; f_numberReqStar.Visible = false; } else { Response.Redirect("index.aspx"); } } } } protected void goback_Click(object sender, EventArgs e) { Response.Redirect("index.aspx?page=" + Convert.ToString(Request["page"])); } #region 資料新增 protected string createOrderNumber() { Application.Lock(); string order_no = "AA" + DateTime.Now.ToString("yyMMdd"); var qry = _db.companies.AsQueryable(); //var prod = qry.Where(q => q.last_order_no.Contains(order_no)).FirstOrDefault(); var prod = qry.Where(q => q.num == 1).FirstOrDefault(); if (prod != null) { if (!isStrNull(prod.last_order_no) && prod.last_order_no.Contains(order_no)) { int tmp = Convert.ToInt32(prod.last_order_no.Replace(order_no, "")) + 1; order_no = order_no + tmp.ToString("0000"); } else { order_no = order_no + "0001"; } prod.last_order_no = order_no; _db.SaveChanges(); } else order_no = ""; Application.UnLock(); return order_no; } protected void add_Click(object sender, EventArgs e) { if (Page.IsValid) { L_msg.Text = ""; if (chk_pro_num(f_number.Text)) { MyWeb.encrypt encrypt = new MyWeb.encrypt(); Model.follower followers = new Model.follower(); try { foreach (Control obj in cardBodyPanel.Controls) { if (obj is TextBox) { var ObjValue = followers.GetType().GetProperty(obj.ID); var textBox = (TextBox)obj; if (!isStrNull(textBox.Text)) { if (textBox.TextMode == TextBoxMode.Date) { ObjValue.SetValue(followers, selectDate(textBox)); } else if (!isStrNull(((TextBox)obj).Attributes["data-encrypt"]) && ValString(textBox.Attributes["data-encrypt"]).Equals("Y")) { ObjValue.SetValue(followers, encrypt.EncryptAutoKey(textBox.Text.Trim())); } else { ObjValue.SetValue(followers, ((TextBox)obj).Text.Trim()); } } else { ObjValue.SetValue(followers, null); } } } if (isAutoNumbering) { // 使用新的 generate_f_number 方法,已內建重號檢查和重試機制 followers.f_number = follower.generate_f_number(sex.SelectedValue); } followers.identity_type = Val(identity_type.SelectedValue); if(!isStrNull(leader.Value)) followers.leader = Val(leader.Value); if (!isStrNull(country.Value)) followers.country = country.Value; followers.sex = sex.SelectedValue; followers.blood = blood.SelectedValue; followers.reg_time = DateTime.Now; //tab followers.tab = tab.Value.Trim(','); if (!isStrNull(hid_is_auto_enroll.Value)) followers.is_auto_enroll = hid_is_auto_enroll.Value == "true"; if (!isStrNull(hid_auto_enroll_start_date.Value)) followers.auto_enroll_start_date = Convert.ToDateTime(hid_auto_enroll_start_date.Value); if (!isStrNull(hid_auto_enroll_is_receipt.Value)) followers.auto_enroll_is_receipt = hid_auto_enroll_is_receipt.Value == "true"; if (!isStrNull(hid_auto_enroll_receipt_title.Value)) followers.auto_enroll_receipt_title = hid_auto_enroll_receipt_title.Value; if (!isStrNull(hid_auto_enroll_receipt_address.Value)) followers.auto_enroll_receipt_address = hid_auto_enroll_receipt_address.Value; string ChkNewMsg = Model.follower.ChkNewFollower(followers); if(string.IsNullOrEmpty(ChkNewMsg)) { _db.followers.Add(followers); _db.SaveChanges(); if (hid_is_auto_enroll.Value == "true") { // 信眾自動報名 var qry = _db.activities.Where(a => a.startDate_solar >= followers.auto_enroll_start_date).AsQueryable(); var activities = qry.ToList(); if (activities != null) { try { foreach (var activity in activities) { Model.pro_order pro_order = new Model.pro_order(); //新增 bool isRegistered = _db.pro_order.Any(x => x.f_num == followers.num && x.activity_num == activity.num); if (isRegistered) continue; // 重複報名 pro_order.order_no = createOrderNumber(); pro_order.up_time = DateTime.Now; pro_order.reg_time = DateTime.Now; pro_order.keyin1 = "A01"; pro_order.f_num = followers.num; if (!isStrNull(followers.phone)) { pro_order.phone = followers.phone; } if (!isStrNull(followers.cellphone)) { pro_order.phone = followers.cellphone; } if (IsNumeric(activity.num)) { pro_order.activity_num = activity.num; } pro_order.address = isStrNull(followers.auto_enroll_receipt_address) ? "" : followers.auto_enroll_receipt_address; pro_order.receipt_title = isStrNull(followers.auto_enroll_receipt_title) ? "" : followers.auto_enroll_receipt_title; pro_order.send_receipt = isStrNull(followers.auto_enroll_is_receipt) ? false : followers.auto_enroll_is_receipt; pro_order.demo = ""; pro_order.customize_data = ""; try { if (!isStrNull(pro_order.order_no)) { _db.pro_order.Add(pro_order); _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Order, (int)Model.admin_log.Status.Insert, pro_order.order_no); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } //if (prod.Count > 0) //{ // var orderNumbers = prod.Select(x => x.order_no).ToList(); // var qry = _db.pro_order_detail // .Where(o => orderNumbers.Contains(o.order_no)) // } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } } int _id = followers.num; if (_id > 0) { // 如果啟用 search_keywords 功能,生成並更新 search_keywords if (GlobalVariables.UseSearchKeywords) { followers.search_keywords = encrypt.GenerateSearchKeywords(followers); _db.SaveChanges(); } Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Insert, f_number.Text + u_name.Text); Session["LastAddedID"] = followers.f_number; Response.Redirect("index.aspx"); } else { L_msg.Type = alert_type.danger; L_msg.Text = "錯誤:" + ChkNewMsg; } } catch (Exception ex) { L_msg.Type = alert_type.danger; L_msg.Text = "操作失敗"; } } else { L_msg.Type = alert_type.danger; L_msg.Text = "信眾編號重複"; } } } #endregion #region 資料修改 protected void edit_Click(object sender, EventArgs e) { if (Page.IsValid) { L_msg.Text = ""; MyWeb.encrypt encrypt = new MyWeb.encrypt(); int _num = Val(Request["num"]); Model.follower followers = _db.followers.Where(q => q.num == _num).FirstOrDefault();//修改 if (followers != null) { try { // 記錄修改前的舊值,供後續流程判斷 bool old_is_auto_enroll = followers.is_auto_enroll ?? false; DateTime? old_auto_enroll_start_date = followers.auto_enroll_start_date; foreach (Control obj in cardBodyPanel.Controls) { if (obj is TextBox) { var ObjValue = followers.GetType().GetProperty(obj.ID); var textBox = (TextBox)obj; if (!isStrNull(textBox.Text)) { if (textBox.TextMode == TextBoxMode.Date) ObjValue.SetValue(followers, selectDate(textBox)); else if (!isStrNull(((TextBox)obj).Attributes["data-encrypt"]) && ValString(textBox.Attributes["data-encrypt"]).Equals("Y")) ObjValue.SetValue(followers, encrypt.EncryptAutoKey(textBox.Text.Trim())); else ObjValue.SetValue(followers, ((TextBox)obj).Text.Trim()); } else ObjValue.SetValue(followers, null); } } followers.identity_type = Val(identity_type.SelectedValue); if (!isStrNull(leader.Value)) followers.leader = Val(leader.Value); if (!isStrNull(country.Value)) followers.country = country.Value; followers.sex = sex.SelectedValue; followers.blood = blood.SelectedValue; followers.tab = tab.Value.Trim(','); //followers.admin_log = admin.info.u_id + " " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); followers.follower_hash = encrypt.followerHash(followers.phone, followers.id_code); if (!isStrNull(hid_is_auto_enroll.Value)) followers.is_auto_enroll = hid_is_auto_enroll.Value == "true"; if (!isStrNull(hid_auto_enroll_start_date.Value)) followers.auto_enroll_start_date = Convert.ToDateTime(hid_auto_enroll_start_date.Value); if (!isStrNull(hid_auto_enroll_is_receipt.Value)) followers.auto_enroll_is_receipt = hid_auto_enroll_is_receipt.Value == "true"; if (!isStrNull(hid_auto_enroll_receipt_title.Value)) followers.auto_enroll_receipt_title = hid_auto_enroll_receipt_title.Value; if (!isStrNull(hid_auto_enroll_receipt_address.Value)) followers.auto_enroll_receipt_address = hid_auto_enroll_receipt_address.Value; // is_auto_enroll 從關 → 開,執行自動報名 bool new_is_auto_enroll = followers.is_auto_enroll ?? false; bool isAutoEnrollTurnedOn = !old_is_auto_enroll && new_is_auto_enroll; bool isAutoEnrollTurnedOff = old_is_auto_enroll && !new_is_auto_enroll; // auto_enroll_start_date 有變更,確認是否刪除已有訂單 bool isStartDateChanged = followers.auto_enroll_start_date != old_auto_enroll_start_date; // 關 → 開,執行自動報名 if (isAutoEnrollTurnedOn) { var qry = _db.activities.Where(a => a.startDate_solar >= followers.auto_enroll_start_date).AsQueryable(); var latestOrder = _db.pro_order.Where(o => o.f_num == followers.num).OrderByDescending(o => o.order_no).FirstOrDefault(); // 最近一次訂單 var activities = qry.ToList(); if (activities != null) { try { foreach (var activity in activities) { Model.pro_order pro_order = new Model.pro_order(); //新增 bool isRegistered = _db.pro_order.Any(x => x.f_num == followers.num && x.activity_num == activity.num); if (isRegistered) continue; // 重複報名 pro_order.order_no = createOrderNumber(); pro_order.up_time = DateTime.Now; pro_order.reg_time = DateTime.Now; pro_order.keyin1 = "A01"; pro_order.f_num = followers.num; if (!isStrNull(followers.phone)) { pro_order.phone = followers.phone; } if (!isStrNull(followers.cellphone)) { pro_order.phone = followers.cellphone; } if (IsNumeric(activity.num)) { pro_order.activity_num = activity.num; } pro_order.address = isStrNull(followers.auto_enroll_receipt_address) ? "" : followers.auto_enroll_receipt_address; pro_order.receipt_title = isStrNull(followers.auto_enroll_receipt_title) ? "" : followers.auto_enroll_receipt_title; pro_order.send_receipt = isStrNull(followers.auto_enroll_is_receipt) ? false : followers.auto_enroll_is_receipt; pro_order.demo = ""; pro_order.customize_data = ""; try { if (!isStrNull(pro_order.order_no)) { _db.pro_order.Add(pro_order); _db.SaveChanges(); // 報名品項(最近一次訂單內容) if (latestOrder != null) { var last_order_details = _db.pro_order_detail.Where(o => o.order_no == latestOrder.order_no).ToList(); foreach (var last_order_detail in last_order_details) { Model.pro_order_detail order_detail = new Model.pro_order_detail(); order_detail.order_no = pro_order.order_no; order_detail.actItem = last_order_detail.actItem; order_detail.parent_num = last_order_detail.parent_num; order_detail.print_id = last_order_detail.print_id; order_detail.f_num = last_order_detail.f_num; order_detail.f_num_tablet = last_order_detail.f_num_tablet; order_detail.address = last_order_detail.address; order_detail.from_id = last_order_detail.from_id; order_detail.from_id_tablet = last_order_detail.from_id_tablet; order_detail.bed_type = last_order_detail.bed_type; order_detail.qty = last_order_detail.qty; order_detail.price = last_order_detail.price; order_detail.start_date = DateTime.Today; order_detail.pay = last_order_detail.pay; order_detail.bed_type = last_order_detail.bed_type; order_detail.keyin1 = last_order_detail.keyin1; order_detail.demo = last_order_detail.demo; order_detail.customize_data = last_order_detail.customize_data; order_detail.printed_files = last_order_detail.printed_files; order_detail.UpdateTime = DateTime.Now; _db.pro_order_detail.Add(order_detail); } } _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Order, (int)Model.admin_log.Status.Insert, pro_order.order_no); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } // 開 → 關,刪除自動報名訂單 if (isAutoEnrollTurnedOff && hid_is_delete_all_order.Value == "true") { if (!string.IsNullOrEmpty(hid_delete_order_list.Value)) { var ids = hid_delete_order_list.Value.TrimEnd(',').Split(','); var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList(); if (prod.Count() > 0) { var prod2 = _db.pro_order_detail.Where(q => ids.Contains(q.order_no)).ToList(); if (prod2.Count > 0) { foreach (var item2 in prod2) { var prod3 = _db.bed_order.Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); if (prod3.Count > 0) { foreach (var item3 in prod3) { var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList(); if (prod4.Count > 0) { _db.bed_order_detail.RemoveRange(prod4); } } _db.bed_order.RemoveRange(prod3); } } _db.pro_order_detail.RemoveRange(prod2); _db.SaveChanges(); } _db.pro_order.RemoveRange(prod); _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); if (admin.isLoign()) { admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Order, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.order_no).ToList())); } } } } if (isStartDateChanged && old_auto_enroll_start_date.HasValue && !isAutoEnrollTurnedOff) { bool isDateMovedLater = followers.auto_enroll_start_date > old_auto_enroll_start_date; // 變晚 bool isDateMovedEarlier = followers.auto_enroll_start_date < old_auto_enroll_start_date; // 變早 // 日期變晚,刪除指定訂單 if (isDateMovedLater && hid_is_delete_all_order.Value == "true") { if (!string.IsNullOrEmpty(hid_delete_order_list.Value)) { var ids = hid_delete_order_list.Value.TrimEnd(',').Split(','); var prod = _db.pro_order.Where(q => ids.Contains(q.order_no)).ToList(); if (prod.Count() > 0) { //var prod2 = _db.pro_order_detail.ToList().Where(q => ids.Contains(Convert.ToString(q.order_no))).ToList(); var prod2 = _db.pro_order_detail.Where(q => ids.Contains(q.order_no)).ToList(); if (prod2.Count > 0) { foreach (var item2 in prod2) { var prod3 = _db.bed_order.Where(q => q.order_no == item2.order_no && q.o_detail_id == item2.num).ToList(); if (prod3.Count > 0) { foreach (var item3 in prod3) { var prod4 = _db.bed_order_detail.Where(q => q.bed_order_no == item3.bed_order_no).ToList(); if (prod4.Count > 0) { _db.bed_order_detail.RemoveRange(prod4); } } _db.bed_order.RemoveRange(prod3); } } _db.pro_order_detail.RemoveRange(prod2); _db.SaveChanges(); } _db.pro_order.RemoveRange(prod); _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); if (admin.isLoign()) { admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Order, (int)Model.admin_log.Status.Delete, admin_log.LogViewBtn(prod.Select(x => x.order_no).ToList())); } } } } // 日期變早,補報名 else if (isDateMovedEarlier && !isAutoEnrollTurnedOn) { var qry = _db.activities.Where(a => a.startDate_solar >= followers.auto_enroll_start_date && a.startDate_solar < old_auto_enroll_start_date); var latestOrder = _db.pro_order.Where(o => o.f_num == followers.num).OrderByDescending(o => o.order_no).FirstOrDefault(); // 最近一次訂單 var activities = qry.ToList(); if (activities != null) { try { foreach (var activity in activities) { Model.pro_order pro_order = new Model.pro_order(); //新增 bool isRegistered = _db.pro_order.Any(x => x.f_num == followers.num && x.activity_num == activity.num); if (isRegistered) continue; // 重複報名 pro_order.order_no = createOrderNumber(); pro_order.up_time = DateTime.Now; pro_order.reg_time = DateTime.Now; pro_order.keyin1 = "A01"; pro_order.f_num = followers.num; if (!isStrNull(followers.phone)) { pro_order.phone = followers.phone; } if (!isStrNull(followers.cellphone)) { pro_order.phone = followers.cellphone; } if (IsNumeric(activity.num)) { pro_order.activity_num = activity.num; } pro_order.address = isStrNull(followers.auto_enroll_receipt_address) ? "" : followers.auto_enroll_receipt_address; pro_order.receipt_title = isStrNull(followers.auto_enroll_receipt_title) ? "" : followers.auto_enroll_receipt_title; pro_order.send_receipt = isStrNull(followers.auto_enroll_is_receipt) ? false : followers.auto_enroll_is_receipt; pro_order.demo = ""; pro_order.customize_data = ""; try { if (!isStrNull(pro_order.order_no)) { _db.pro_order.Add(pro_order); _db.SaveChanges(); // 報名品項(最近一次訂單內容) if (latestOrder != null) { var last_order_details = _db.pro_order_detail.Where(o => o.order_no == latestOrder.order_no).ToList(); foreach (var last_order_detail in last_order_details) { Model.pro_order_detail order_detail = new Model.pro_order_detail(); order_detail.order_no = pro_order.order_no; order_detail.actItem = last_order_detail.actItem; order_detail.parent_num = last_order_detail.parent_num; order_detail.print_id = last_order_detail.print_id; order_detail.f_num = last_order_detail.f_num; order_detail.f_num_tablet = last_order_detail.f_num_tablet; order_detail.address = last_order_detail.address; order_detail.from_id = last_order_detail.from_id; order_detail.from_id_tablet = last_order_detail.from_id_tablet; order_detail.bed_type = last_order_detail.bed_type; order_detail.qty = last_order_detail.qty; order_detail.price = last_order_detail.price; order_detail.start_date = DateTime.Today; order_detail.pay = last_order_detail.pay; order_detail.bed_type = last_order_detail.bed_type; order_detail.keyin1 = last_order_detail.keyin1; order_detail.demo = last_order_detail.demo; order_detail.customize_data = last_order_detail.customize_data; order_detail.printed_files = last_order_detail.printed_files; order_detail.UpdateTime = DateTime.Now; _db.pro_order_detail.Add(order_detail); } } _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Order, (int)Model.admin_log.Status.Insert, pro_order.order_no); } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } } } // 如果啟用 search_keywords 功能,生成並更新 search_keywords if (GlobalVariables.UseSearchKeywords) { followers.search_keywords = encrypt.GenerateSearchKeywords(followers); } // 檢查是否有修改資料 var entry = _db.Entry(followers); this.isDataChanged = entry.CurrentValues.PropertyNames.Any(name => { if (name == "admin_log" || name == "follower_hash") return false; var originalVal = entry.OriginalValues[name]?.ToString(); var currentVal = entry.CurrentValues[name]?.ToString(); // 針對加密欄位進行特殊處理 bool isEncryptedField = (name == "phone" || name == "id_code"); if (isEncryptedField) { string originalPlain = !string.IsNullOrEmpty(originalVal) ? encrypt.DecryptAutoKey(originalVal) : ""; string currentPlain = !string.IsNullOrEmpty(currentVal) ? encrypt.DecryptAutoKey(currentVal) : ""; return originalPlain.Trim() != currentPlain.Trim(); } return !object.Equals(originalVal, currentVal); }); if (this.isDataChanged) { followers.admin_log = admin.info.u_id + " " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); } else { entry.State = EntityState.Unchanged; } int isDataSaved = _db.SaveChanges(); if (isDataSaved > 0) { //L_msg.Type = alert_type.success; //L_msg.Text = "修改成功"; Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Follower, (int)Model.admin_log.Status.Update, f_number.Text + u_name.Text); Response.Redirect("index.aspx?dirty=1&page=" + Convert.ToString(Request["page"])); } else { Response.Redirect("index.aspx?page=" + Convert.ToString(Request["page"])); } } catch (Exception ex) { L_msg.Type = alert_type.danger; L_msg.Text = "操作失敗"; L_msg.Text = ex.Message; } } else { L_msg.Type = alert_type.danger; L_msg.Text = "查無資料"; } /* if (chk_pro_num(f_number.Text, Val(Request["num"]))) { } else { L_msg.Type = alert_type.danger; L_msg.Text = "信眾編號重複"; } */ } } #endregion #region Ajax protected void CallAjax() { if (!isStrNull(Request["type"])) { Response.Clear(); Response.ContentType = "application/json"; AjaxInfo info = new AjaxInfo(); info.isOk = false; info.cDate = ""; info.sign = ""; info.msg = ""; if (ValString(Request["type"]) == "getTxt") { if (!isStrNull(Request["date"]) && isDate(Request["date"])) { DateTime date = ValDate(Request["date"]); info.isOk = true; info.cDate = publicFun.chagenDate(date); info.sign = Model.follower.chagenSign(date); } else info.msg = "參數不正確"; } else if (ValString(Request["type"]) == "chkNo") { if (!isStrNull(Request["txt"])) { info.isOk = chk_pro_num(ValString(Request["txt"]), !isStrNull(Request["id"]) ? Val(Request["id"]) : 0); if (!info.isOk) info.msg = "信眾編號重複"; } else { info.isOk = true; info.msg = ""; } } else { info.msg = "參數不正確"; } Response.Write(Newtonsoft.Json.JsonConvert.SerializeObject(info)); Response.End(); } } public class AjaxInfo { public bool isOk { get; set; } public string msg { get; set; } public string cDate { get; set; } public string cYear { get; set; } public string sign { get; set; } } #endregion #region 信眾編號 protected bool chk_pro_num(string txt, int num = 0) { bool success = false; var qry = _db.followers.AsQueryable(); qry = qry.Where(q => q.f_number == txt); if (num > 0) qry = qry.Where(q => q.num != num); var prod = qry.FirstOrDefault(); success = (prod == null); return success; } #endregion }