209 lines
9.7 KiB
C#
209 lines
9.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Data.SqlClient;
|
|
using System.Data;
|
|
using System.Configuration;
|
|
using System.Runtime.Serialization.Json;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System.Web.Services.Protocols;
|
|
using System.Security.Cryptography;
|
|
using System.Text;
|
|
using System.Web.SessionState;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Runtime.Serialization;
|
|
|
|
/// <summary>
|
|
/// project 的摘要描述
|
|
/// </summary>
|
|
public class project : projectBase
|
|
{
|
|
public List<userdata> project_users;
|
|
public List<projectApiDomainBase> projectApi_domains;
|
|
public List<projectApiDomainBase> projectApi_ips;
|
|
public userdata project_createUser;
|
|
|
|
[IgnoreDataMember] public string update_result = "";
|
|
|
|
autoBindDataTable projectSQL;
|
|
autoExecSQL recExec;
|
|
string recString = "";
|
|
Boolean isNew = false;
|
|
DataRow projectRow;
|
|
|
|
public project() : base()
|
|
{
|
|
//
|
|
// TODO: 在這裡新增建構函式邏輯
|
|
//
|
|
project_users = new List<userdata>();
|
|
projectApi_domains = new List<projectApiDomainBase>();
|
|
projectApi_ips = new List<projectApiDomainBase>();
|
|
|
|
string projectString = "select * from projects where project_sn = -1";
|
|
projectSQL = new autoBindDataTable(projectString);
|
|
projectRow = projectSQL.newRow;
|
|
projectSQL.dataRows.Add(projectRow);
|
|
isNew = true;
|
|
authPermission objAuth = new authPermission();
|
|
|
|
project_createUid = objAuth.user_uid;
|
|
}
|
|
|
|
public project(string project_uid) : base(project_uid)
|
|
{
|
|
projectSQL = projectBaseSQL;
|
|
projectRow = projectBaseRow;
|
|
|
|
project_users = new List<userdata>();
|
|
projectApi_domains = new List<projectApiDomainBase>();
|
|
projectApi_ips = new List<projectApiDomainBase>();
|
|
|
|
project_createUser = new userdata(project_createUid);
|
|
|
|
string apiDomainString = string.Format("select * from projectApiDomain where project_uid = '{0}'", project_uid);
|
|
autoBindDataTable sqlApiDomain = new autoBindDataTable(apiDomainString);
|
|
|
|
foreach (DataRow tmpRow in sqlApiDomain.dataRows)
|
|
{
|
|
projectApiDomainBase tmpApi = new projectApiDomainBase();
|
|
tmpApi.project_uid = project_uid;
|
|
tmpApi.projectApiDomain_type = tmpRow["projectApiDomain_type"].ToString();
|
|
tmpApi.projectApiDomain_address = tmpRow["projectApiDomain_address"].ToString();
|
|
|
|
if (tmpApi.projectApiDomain_type == "domain")
|
|
{
|
|
projectApi_domains.Add(tmpApi);
|
|
}
|
|
|
|
if (tmpApi.projectApiDomain_type == "ip")
|
|
{
|
|
projectApi_ips.Add(tmpApi);
|
|
}
|
|
}
|
|
|
|
string userString = string.Format("select * from projectUser where project_uid = '{0}' and user_uid <> ''", project_uid);
|
|
autoBindDataTable sqlUser = new autoBindDataTable(userString);
|
|
|
|
foreach (DataRow tmpRow in sqlUser.dataRows)
|
|
{
|
|
userdata tmpUser = new userdata(tmpRow["user_uid"].ToString());
|
|
project_users.Add(tmpUser);
|
|
}
|
|
}
|
|
|
|
public Boolean updateData()
|
|
{
|
|
Boolean result = false;
|
|
|
|
update_result = "更新失敗!";
|
|
|
|
authPermission objAuth = new authPermission();
|
|
|
|
if (objAuth.isLogin() == false)
|
|
{
|
|
update_result = "無權限!";
|
|
return result;
|
|
}
|
|
|
|
projectRow["project_uid"] = project_uid;
|
|
projectRow["project_name"] = project_name;
|
|
projectRow["project_descript"] = project_descript;
|
|
projectRow["project_recTableName"] = project_recTableName;
|
|
projectRow["project_dateLimit"] = project_dateLimit;
|
|
projectRow["project_endDate"] = project_endDate;
|
|
projectRow["project_endToRedirect"] = project_endToRedirect;
|
|
projectRow["project_apiId"] = project_apiId;
|
|
projectRow["project_apiKey"] = project_apiKey;
|
|
projectRow["project_createUid"] = project_createUid;
|
|
|
|
if (isNew)
|
|
{
|
|
recString += string.Format(" CREATE TABLE [dbo].[rec_{0}](", project_uid);
|
|
recString += string.Format(" [rec_sn] [int] IDENTITY(1,1) NOT NULL,");
|
|
recString += string.Format(" [project_uid] [nvarchar](36) NOT NULL,");
|
|
recString += string.Format(" [url_uid] [nvarchar](36) NOT NULL,");
|
|
recString += string.Format(" [rec_sourceIP] [nvarchar](36) NOT NULL,");
|
|
recString += string.Format(" [rec_sourceDomain] [nvarchar](500) NOT NULL,");
|
|
recString += string.Format(" [rec_country] [nvarchar](50) NOT NULL,");
|
|
recString += string.Format(" [rec_city] [nvarchar](50) NOT NULL,");
|
|
recString += string.Format(" [rec_loc] [nvarchar](50) NOT NULL,");
|
|
recString += string.Format(" [rec_createdate] [datetime] NOT NULL,");
|
|
recString += string.Format(" CONSTRAINT [PK_rec_{0}] PRIMARY KEY CLUSTERED ", project_uid);
|
|
recString += string.Format("(");
|
|
recString += string.Format(" [rec_sn] ASC");
|
|
recString += string.Format(") WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]");
|
|
recString += string.Format(") ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format(" (");
|
|
recString += string.Format(" [project_uid] ASC");
|
|
recString += string.Format(")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}_1] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format(" (");
|
|
recString += string.Format(" [url_uid] ASC");
|
|
recString += string.Format(")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}_2] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format("(");
|
|
recString += string.Format(" [project_uid] ASC,");
|
|
recString += string.Format(" [url_uid] ASC");
|
|
recString += string.Format(") WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}_3] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format(" (");
|
|
recString += string.Format(" [rec_createdate] ASC");
|
|
recString += string.Format(") WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}_4] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format("(");
|
|
recString += string.Format(" [url_uid] ASC,");
|
|
recString += string.Format(" [rec_createdate] ASC");
|
|
recString += string.Format(")WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" CREATE NONCLUSTERED INDEX [IX_rec_{0}_5] ON [dbo].[rec_{1}]", project_uid, project_uid);
|
|
recString += string.Format("(");
|
|
recString += string.Format(" [project_uid] ASC,");
|
|
recString += string.Format(" [url_uid] ASC,");
|
|
recString += string.Format(" [rec_createdate] ASC");
|
|
recString += string.Format(") WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY];");
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_project_uid] DEFAULT ('') FOR [project_uid];", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_url_uid] DEFAULT ('') FOR [url_uid];", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_rec_sourceIP] DEFAULT ('') FOR [rec_sourceIP];", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_rec_sourceDomain] DEFAULT ('') FOR [rec_sourceDomain];", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_rec_country] DEFAULT ('') FOR [rec_country];", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_rec_city] DEFAULT ('') FOR [rec_city]", project_uid, project_uid);
|
|
|
|
recString += string.Format(" ALTER TABLE [dbo].[rec_{0}] ADD CONSTRAINT [DF_rec_{1}_rec_createdate] DEFAULT (getdate()) FOR [rec_createdate];", project_uid, project_uid);
|
|
}
|
|
|
|
try
|
|
{
|
|
projectSQL.updateDataTable();
|
|
|
|
if (isNew) {
|
|
autoExecSQL objNewRec = new autoExecSQL(recString);
|
|
}
|
|
result = true;
|
|
update_result = "";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
result = false;
|
|
update_result = ex.Message;
|
|
}
|
|
|
|
return result;
|
|
}
|
|
} |