Files
17168ERP/web/admin/news/news_reg.aspx.cs
2025-08-29 01:27:25 +08:00

511 lines
18 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 System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Globalization;
public partial class admin_news_news_reg : MyWeb.config
{
private Model.ezEntities _db = new Model.ezEntities();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (isStrNull(Request["num"]))
{
uptime.Text = DateTime.Now.ToString("yyyy-MM-dd");
addNewRow();
}
else
{
int _num = Val(Request["num"]);
var qry = _db.news.AsEnumerable();
//var prod = _db.news.Where(q => q.num == _num).ToList();
var prod = qry.Where(q => q.num == _num).FirstOrDefault();
if (prod != null)
{
subject.Text = prod.subject;
if (prod.kind.HasValue)
{
kind_txt.Value = prod.news_kind.kind.ToString();
kind.Value = prod.kind.ToString();
}
status.SelectedValue = prod.status;
topping.Checked = ValString(prod.topping).Equals("Y");
if (prod.selltime1.HasValue)
{
start_day.Text = prod.selltime1.Value.ToString("yyyy-MM-dd");
}
if (prod.selltime2.HasValue)
{
end_day.Text = prod.selltime2.Value.ToString("yyyy-MM-dd");
}
if (prod.uptime.HasValue)
{
uptime.Text = prod.uptime.Value.ToString("yyyy-MM-dd");
}
if (prod.author.HasValue)
author.Text = prod.admin.u_name;
if (prod.activity_num.HasValue)
{
activity_num_txt.Value = prod.activity.subject.ToString();
activity_num.Value = prod.activity_num.ToString();
}
word.Text = prod.word;
demo.Text = prod.demo;
initNewsFiles(_num);
addNewRow();
edit.Visible = true;
goback.Visible = true;
add.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 void add_Click(object sender, EventArgs e)
{
if (Page.IsValid) {
L_msg.Text = "";
MyWeb.fileSystem fileSystem = new MyWeb.fileSystem();
string[] pic_name2 = { };
string[] pic_type = { };
string[] pic_name = fileSystem.UploadNewsFile(Model.news.Dir, 800, admin.info.num, ref pic_name2, ref pic_type); //縮圖的寬高不得超過800象素如果不是圖片也會傳
Model.news news = new Model.news();//新增
news.subject = subject.Text;
if (!isStrNull(kind.Value)) { news.kind = Val(kind.Value); }
if (!isStrNull(start_day.Text)) { news.selltime1 = ValDate(start_day.Text); } else { news.selltime1 = null; }
if (!isStrNull(end_day.Text)) { news.selltime2 = ValDate(end_day.Text); } else { news.selltime2 = null; }
news.word = word.Text;
news.demo = demo.Text;
if (!isStrNull(uptime.Text)) { news.uptime = ValDate(uptime.Text); }
if (admin.info.num > 0) { news.author = admin.info.num; } else { news.author =null; }
if (!isStrNull(status.SelectedValue)) { news.status = status.SelectedValue; }
news.topping = topping.Checked ? "Y" : "N";
if (!isStrNull(activity_num.Value)) { news.activity_num = Val(activity_num.Value); }
_db.news.Add(news);
_db.SaveChanges();
int _id = news.num;
if( _id > 0)
{
//檔案上傳
if( SaveFiles(_id, pic_name, pic_name2, pic_type))
{
Model.admin_log admin_log = new Model.admin_log();
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.News, (int)Model.admin_log.Status.Insert, subject.Text);
Response.Redirect("index.aspx");
}
}
else
{
L_msg.Type = alert_type.danger;
L_msg.Text = "Error";
}
//using (Model.ezEntities _db = new Model.ezEntities())
//{
//}
}
}
#endregion
#region
protected void edit_Click(object sender, EventArgs e)
{
if (Page.IsValid)
{
L_msg.Text = "";
MyWeb.fileSystem fileSystem = new MyWeb.fileSystem();
string[] pic_name2 = { };
string[] pic_type = { };
string[] pic_name = fileSystem.UploadNewsFile(Model.news.Dir, 800,admin.info.num, ref pic_name2, ref pic_type); //縮圖的寬高不得超過800象素如果不是圖片也會傳
int _num = Val(Request["num"]);
Model.news news = _db.news.Where(q => q.num == _num).FirstOrDefault();//修改
if (news != null)
{
news.subject = subject.Text;
if (!isStrNull(kind.Value)) { news.kind = Val(kind.Value); }
if (!isStrNull(start_day.Text)) { news.selltime1 = ValDate(start_day.Text); } else { news.selltime1 = null; }
if (!isStrNull(end_day.Text)) { news.selltime2 = ValDate(end_day.Text); } else { news.selltime2 = null; }
news.word = word.Text;
news.demo = demo.Text;
if (!isStrNull(uptime.Text)) { news.uptime = ValDate(uptime.Text); }
if (admin.info.num > 0) { news.author = admin.info.num; }
if (!isStrNull(status.SelectedValue)) { news.status = status.SelectedValue; }
if (admin.info.num > 0) { news.author = admin.info.num; } else { news.author = null; }
news.topping = topping.Checked ? "Y" : "N";
if (!isStrNull(activity_num.Value)) { news.activity_num = Val(activity_num.Value); }
_db.SaveChanges();
//檔案
if (SaveFiles(Val(Request["num"]), pic_name, pic_name2, pic_type))
{
Model.admin_log admin_log = new Model.admin_log();
admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.News, (int)Model.admin_log.Status.Update, subject.Text);
Response.Redirect("index.aspx?page=" + Convert.ToString(Request["page"]));
}
}
else
{
L_msg.Type = alert_type.danger;
L_msg.Text = "查無資料";
}
}
}
#endregion
#region
#region
//public void SaveFiles(int news_id, string[] pic_name , string[] _pic_name2 , string[] _pic_type)
//{
// DataTable picDt = new DataTable();
// IEnumerable<DataRow> queryFiles = (IEnumerable<DataRow>)from dTc in _db.news_files.AsEnumerable() where dTc.news_id == news_id select dTc;
// // int aa = queryTeacher.Count<DataRow>(); //Count=1
// if (queryFiles.Count<DataRow>() > 0) { picDt = queryFiles.CopyToDataTable<DataRow>(); }
// if (picDt.Rows.Count > 0)
// {
// }
// //處理本次更新的檔案
// MyWeb.fileSystem fileSystem = new MyWeb.fileSystem();
// List<string> nums = new List<string>();
// DataTable dt = GetFileRows();
// if (dt.Rows.Count > 0)
// {
// int p = 1;
// foreach (DataRow row in dt.Rows)
// {
// bool _change = false;
// string orgPic = GiftOrgPic(ValString(row["num"]), ref picDt);
// if (!isStrNull(pic_name[p]))
// {
// if (!isStrNull(orgPic)) { fileSystem.Delete(MyWeb.news.Dir + "/" + orgPic); }
// _change = true;
// }
// else
// {
// pic_name[p] = orgPic;
// }
// Model.news_files ff = _db.news_files.Where(q => q.news_id == news_id && q.num == ValString(row["num"]) ).FirstOrDefault();//修改
// if (ff != null)
// {
// ff.pic1 = pic_name[p];
// if (_change)
// {
// ff.reg_time = DateTime.Now;
// ff.pic_name = _pic_name2[p];
// ff.pic_type = _pic_type[p];
// }
// _db.SaveChanges();
// }
// else
// {
// if (!isStrNull(pic_name[p]))
// {
// Model.news_files ffNew = new Model.news_files();
// ffNew.num= ValString(row["num"]);
// ffNew.pic1 = pic_name[p];
// ffNew.news_id = news_id;
// ffNew.pic_name = _pic_name2[p];
// ffNew.pic_type = _pic_type[p];
// _db.news_files.Add(ffNew);
// _db.SaveChanges();
// }
// }
// p++;
// }
// }
// if (picDt.Rows.Count > 0)
// {
// foreach (DataRow row in picDt.Rows)
// {
// //刪掉不要的檔案
// var prod = _db.news_files.AsEnumerable().Where(q => q.news_id == news_id && q.num == ValString(row["num"])).FirstOrDefault(); //刪除該筆資料
// if (prod != null)
// {
// _db.news_files.Remove(prod);
// _db.SaveChanges(); //執行
// }
// if (!isStrNull(row["pic1"])) { fileSystem.Delete(MyWeb.news.Dir + "/" + ValString(row["pic1"])); }
// }
// }
//}
public bool SaveFiles(int news_id, string[] pic_name, string[] _pic_name2, string[] _pic_type)
{
bool success = true;
MyWeb.sql sql = new MyWeb.sql();
OleDbConnection sqlConn = sql.conn(db, p_name);
try
{
sqlConn.Open();
//載入原有的檔案
OleDbCommand sqlCmd = new OleDbCommand("", sqlConn);
sqlCmd.CommandText = "select [num],pic1 from [news_files] where news_id=? order by [num]";
sqlCmd.Parameters.Add(new OleDbParameter("news_id", news_id));
DataTable picDt = sql.dataTable(sqlCmd);
//處理本次更新的檔案
MyWeb.fileSystem fileSystem = new MyWeb.fileSystem();
List<string> nums = new List<string>();
DataTable dt = GetFileRows();
if (dt.Rows.Count > 0)
{
int p = 1;
foreach (DataRow row in dt.Rows)
{
bool _change = false;
string orgPic = GiftOrgPic(ValString(row["num"]), ref picDt);
if (!isStrNull(pic_name[p]))
{
if (!isStrNull(orgPic)) { fileSystem.Delete(Model.news.Dir + "/" + orgPic); }
_change = true;
}
else
{
pic_name[p] = orgPic;
}
sqlCmd = new OleDbCommand("", sqlConn);
sqlCmd.CommandText = "UPDATE [news_files] SET pic1=?" + (_change ? ",reg_time=?,pic_name=?,pic_type=?" : "") + " WHERE news_id=? and num=? ";
if (!isStrNull(pic_name[p]))
{
sqlCmd.CommandText += " IF @@ROWCOUNT = 0 ";
sqlCmd.CommandText += "INSERT INTO [news_files] (num,pic1,news_id,pic_name,pic_type) VALUES (?,?,?,?,?)";
}
sqlCmd.Parameters.Add(new OleDbParameter("pic1", pic_name[p]));
if (_change)
{
sqlCmd.Parameters.Add(new OleDbParameter("reg_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
sqlCmd.Parameters.Add(new OleDbParameter("pic_name", _pic_name2[p]));
sqlCmd.Parameters.Add(new OleDbParameter("pic_type", _pic_type[p]));
}
sqlCmd.Parameters.Add(new OleDbParameter("news_id", news_id));
sqlCmd.Parameters.Add(new OleDbParameter("num", ValString(row["num"])));
if (!isStrNull(pic_name[p]))
{
sqlCmd.Parameters.Add(new OleDbParameter("num", ValString(row["num"])));
sqlCmd.Parameters.Add(new OleDbParameter("pic1", pic_name[p]));
sqlCmd.Parameters.Add(new OleDbParameter("news_id", news_id));
sqlCmd.Parameters.Add(new OleDbParameter("pic_name", _pic_name2[p]));
sqlCmd.Parameters.Add(new OleDbParameter("pic_type", _pic_type[p]));
}
sqlCmd.ExecuteNonQuery();
p++;
}
}
if (picDt.Rows.Count > 0)
{
foreach (DataRow row in picDt.Rows)
{
//刪掉不要的檔案
OleDbCommand sqlCmd2 = new OleDbCommand("", sqlConn);
sqlCmd2.CommandText = "delete from [news_files] where news_id=? and num=?";
sqlCmd2.Parameters.Add(new OleDbParameter("news_id", news_id));
sqlCmd2.Parameters.Add(new OleDbParameter("num", ValString(row["num"])));
sqlCmd2.ExecuteNonQuery();
if (!isStrNull(row["pic1"])) { fileSystem.Delete(Model.news.Dir + "/" + ValString(row["pic1"])); }
}
}
}
catch (Exception ex)
{
//Response.Write(ex.Message);
success = false;
L_msg.Type = alert_type.danger;
L_msg.Text = ex.Message;
}
finally
{
sqlConn.Close(); sqlConn.Dispose();
}
return success;
}
protected string GiftOrgPic(string id, ref DataTable dt)
{
if (dt.Rows.Count > 0)
foreach (DataRow row in dt.Rows)
if (row["num"].ToString() == id)
{
string pic = row["pic1"].ToString();
dt.Rows.Remove(row);
return pic;
}
return "";
}
#endregion
#region
protected void initNewsFiles(int num = 0)
{
var qry = _db.news_files.AsEnumerable();
if (num > 0)
qry = qry.Where(q => q.news_id == num).ToList();
else
qry = qry.ToList();
fileRepeater.DataSource = qry;
fileRepeater.DataBind();
}
protected void fileRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//DataRowView row = (DataRowView)e.Item.DataItem;
((HiddenField)e.Item.FindControl("id")).Value = DataBinder.Eval(e.Item.DataItem, "num").ToString();
((HiddenField)e.Item.FindControl("pic")).Value = DataBinder.Eval(e.Item.DataItem, "pic1").ToString();
((Literal)e.Item.FindControl("pic_name")).Text = DataBinder.Eval(e.Item.DataItem, "pic_name").ToString();
((Literal)e.Item.FindControl("pic_type")).Text = DataBinder.Eval(e.Item.DataItem, "pic_type").ToString();
}
#endregion
protected DataTable GetFileRows()
{
DataTable dt = new DataTable();
dt.Columns.Add("num");
dt.Columns.Add("pic1");
dt.Columns.Add("pic_name");
dt.Columns.Add("pic_type");
if (fileRepeater.Items.Count > 0)
{
foreach (RepeaterItem item in fileRepeater.Items)
{
DataRow row = dt.NewRow();
row["pic1"] = ((HiddenField)item.FindControl("pic")).Value;
row["num"] = ((HiddenField)item.FindControl("id")).Value;
row["pic_name"] = ((Literal)item.FindControl("pic_name")).Text;
row["pic_type"] = ((Literal)item.FindControl("pic_type")).Text;
dt.Rows.Add(row);
}
}
return dt;
}
#region
protected void addNewRow()
{
string id = DateTime.Now.ToString("yyyyMMddHHmmss"); ;
DataTable dt = GetFileRows();
DataRow row = dt.NewRow();
row["num"] = id;
row["pic1"] = "";
row["pic_name"] = "";
row["pic_type"] = "";
dt.Rows.Add(row);
fileRepeater.DataSource = dt;
fileRepeater.DataBind();
ScriptJS("$('#pics').append('<input type=\"file\" data-id=\"" + id + "\" name=\"picUpload" + id + "\" id=\"picUpload" + id + "\">');bindPics();");
}
protected void AddBtn_Click(object sender, EventArgs e)
{
addNewRow();
}
#endregion
#region
protected void DelBtn_Click(object sender, EventArgs e)
{
RepeaterItem rItem = (RepeaterItem)((LinkButton)sender).NamingContainer;
string id = ((HiddenField)rItem.FindControl("id")).Value;
DataTable dt = GetFileRows();
foreach (DataRow row in dt.Rows)
{
if (ValString(row["num"]) == id)
{
dt.Rows.Remove(row);
break;
}
}
fileRepeater.DataSource = dt;
fileRepeater.DataBind();
ScriptJS("$('#picUpload" + id + "').remove();bindPics(false);");
}
#endregion
#endregion
}