FileDownloadingDBOperations.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830
  1. using System;
  2. using Npgsql;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Configuration;
  7. using System.Text.RegularExpressions;
  8. using System.Linq;
  9. using System.IO;
  10. using System.Runtime.InteropServices;
  11. using System.Security.Principal;
  12. namespace CUP_POD_Mail_Reader
  13. {
  14. public class FileDownloadingDBOperations
  15. {
  16. SqlConnection conn = new SqlConnection(ConfigurationManager.AppSettings["connectStr"].ToString());
  17. NpgsqlConnection postgrescon = new NpgsqlConnection(ConfigurationManager.AppSettings["npgconn"].ToString());
  18. public bool InsertDownloadFileData(DownloadedFile filedata)
  19. {
  20. try
  21. {
  22. conn.Open();
  23. SqlCommand cmd = new SqlCommand("insert into Downloaded_File_Data values(@filename,@filesize,@downloadtime,@download_status)", conn);
  24. string download_status = filedata.DownloadStatus ? "Success" : "Fail";
  25. cmd.Parameters.AddWithValue("@filename", filedata.FileName);
  26. cmd.Parameters.AddWithValue("@download_status", download_status);
  27. SqlDataAdapter da = new SqlDataAdapter(cmd);
  28. byte result = Convert.ToByte(cmd.ExecuteNonQuery());
  29. bool insertstatus = result == 1 ? true : false;
  30. conn.Close();
  31. return insertstatus;
  32. }
  33. catch (Exception ex)
  34. {
  35. conn.Close();
  36. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  37. throw;
  38. }
  39. }
  40. public void insertMessageId(MessageId msg)
  41. {
  42. try
  43. {
  44. conn.Open();
  45. string qry = "INSERT INTO [dbo].[MessagereadTime] ([MessageId],[ReadTime],[projectcode],[Status],[Subject],[environment]) " +
  46. "VALUES (@msgid,@readtime,@projectcode,@status,@subject,@environment)";
  47. //SqlCommand cmd = new SqlCommand("insert into MessagereadTime values(@msgid,@readtime,@projectcode,@status,@subject,@environment)", conn);
  48. SqlCommand cmd = new SqlCommand(qry, conn);
  49. cmd.Parameters.AddWithValue("@msgid", msg.MailId);
  50. cmd.Parameters.AddWithValue("@readtime", msg.MailReadDate);
  51. cmd.Parameters.AddWithValue("@projectcode", msg.ProjectCode);
  52. int readStatus = msg.Status == true ? 1 : 0;
  53. cmd.Parameters.AddWithValue("@status", readStatus);
  54. cmd.Parameters.AddWithValue("@subject", msg.Subject);
  55. cmd.Parameters.AddWithValue("@environment", msg.Environment);
  56. SqlDataAdapter da = new SqlDataAdapter(cmd);
  57. int result = cmd.ExecuteNonQuery();
  58. conn.Close();
  59. }
  60. catch (Exception ex)
  61. {
  62. conn.Close();
  63. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  64. throw;
  65. }
  66. }
  67. public bool GetMessageId(string msgid, string projectCode)
  68. {
  69. try
  70. {
  71. conn.Open();
  72. SqlCommand cmd = new SqlCommand("select count(*) from MessagereadTime where MessageId=@msgid and projectcode=@projectcode", conn);
  73. cmd.Parameters.AddWithValue("@msgid", msgid);
  74. cmd.Parameters.AddWithValue("@projectcode", projectCode);
  75. SqlDataAdapter da = new SqlDataAdapter(cmd);
  76. DataSet ds = new DataSet();
  77. da.Fill(ds);
  78. byte result = Convert.ToByte(cmd.ExecuteScalar());
  79. bool msgstatus = result == 1 ? true : false;
  80. conn.Close();
  81. return msgstatus;
  82. }
  83. catch (Exception ex)
  84. {
  85. conn.Close();
  86. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  87. throw;
  88. }
  89. }
  90. public List<string> GetCCList(string projectCode)
  91. {
  92. string UserData_details = string.Empty;
  93. List<string> cclist = new List<string>();
  94. DataTable ccUserdata = new DataTable();
  95. FileDownloadingDBOperations dbOperations = new FileDownloadingDBOperations();
  96. try
  97. {
  98. UserData_details = @"select * from tblccaddresslist where projectCode='" + projectCode + "' and active=1";
  99. ccUserdata = dbOperations.getdatatable(UserData_details);
  100. if (ccUserdata.Rows.Count > 0)
  101. {
  102. foreach (DataRow data in ccUserdata.Rows)
  103. {
  104. if (!cclist.Any(x => x.Contains(data["ccaddress"].ToString())))
  105. {
  106. cclist.Add(data["ccaddress"].ToString());
  107. }
  108. }
  109. }
  110. return cclist;
  111. }
  112. catch (Exception ex)
  113. {
  114. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  115. return cclist;
  116. throw;
  117. }
  118. }
  119. public DataTable GetCredentials(string projectCode, string environment)
  120. {
  121. string UserData_details = string.Empty;
  122. DataTable Userdata = new DataTable();
  123. FileDownloadingDBOperations dbOperations = new FileDownloadingDBOperations();
  124. try
  125. {
  126. UserData_details = @"SELECT * from project_linked_ftp where projectCode='" + projectCode + "' and environement='" + environment + "' and active=1";
  127. Userdata = dbOperations.getdatatable(UserData_details);
  128. return Userdata;
  129. }
  130. catch (Exception ex)
  131. {
  132. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  133. return Userdata;
  134. throw;
  135. }
  136. }
  137. public DataTable GetToAddress(string projectCode)
  138. {
  139. //conn.Open();
  140. //SqlCommand cmd = new SqlCommand("select * from ToAddress where ProjectCode=@projectid", conn);
  141. //cmd.Parameters.AddWithValue("@projectid", projectCode);
  142. //SqlDataAdapter da = new SqlDataAdapter(cmd);
  143. //DataSet ds = new DataSet();
  144. //da.Fill(ds);
  145. //conn.Close();
  146. //return ds.Tables[0];
  147. //postgrescon.Open();
  148. try
  149. {
  150. NpgsqlCommand cmd = new NpgsqlCommand("select fs.*,um.emailid from ftp_settings fs inner join tblprojectdefinition pd on pd.projectdefinitionid = fs.projectdefid inner join tblusermaster um on um.userid = pd.projectmanager where pd.project_subtitle= @projectid", postgrescon);
  151. cmd.Parameters.AddWithValue("@projectid", projectCode);
  152. NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
  153. DataSet ds = new DataSet();
  154. da.Fill(ds);
  155. conn.Close();
  156. return ds.Tables[0];
  157. }
  158. catch (Exception ex)
  159. {
  160. conn.Close();
  161. Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  162. throw;
  163. }
  164. }
  165. //public DataTable GetServerPath(string projectCode, string environment)
  166. //{
  167. // try
  168. // {
  169. // conn.Open();
  170. // SqlCommand cmd = new SqlCommand("select * from serverpath where ProjectCode=@projectid and Environment=@environment", conn);
  171. // cmd.Parameters.AddWithValue("@projectid", projectCode);
  172. // cmd.Parameters.AddWithValue("@environment", environment);
  173. // SqlDataAdapter da = new SqlDataAdapter(cmd);
  174. // DataSet ds = new DataSet();
  175. // da.Fill(ds);
  176. // conn.Close();
  177. // return ds.Tables[0];
  178. // }
  179. // catch (Exception ex)
  180. // {
  181. // conn.Close();
  182. // Console.WriteLine(ex.Message + " at " + ex.StackTrace);
  183. // throw;
  184. // }
  185. //}
  186. public DataTable getdatatable(string Qry, List<NpgsqlParameter> paramet = null)
  187. {
  188. // NpgsqlConnection postgrescon = new NpgsqlConnection(ConfigurationManager.AppSettings[eGlob.environment].ToString());
  189. NpgsqlConnection postgrescon = new NpgsqlConnection(ConfigurationManager.AppSettings["npgconn"].ToString());
  190. DataTable dtable = new DataTable();
  191. try
  192. {
  193. NpgsqlCommand cmd = new NpgsqlCommand(Qry, postgrescon);
  194. if (paramet != null)
  195. {
  196. foreach (NpgsqlParameter sqlpara in paramet)
  197. cmd.Parameters.Add(sqlpara);
  198. cmd.CommandType = CommandType.StoredProcedure;
  199. }
  200. else
  201. {
  202. cmd.CommandType = CommandType.Text;
  203. }
  204. NpgsqlDataAdapter adp = new NpgsqlDataAdapter(cmd);
  205. adp.Fill(dtable);
  206. }
  207. catch (Exception ex) { string a = ex.Message; }
  208. return dtable;
  209. }
  210. public static string getscallervalue(string Qry, List<NpgsqlParameter> paramet = null)
  211. {
  212. NpgsqlConnection postgrescon = new NpgsqlConnection(ConfigurationManager.AppSettings["npgconn"].ToString());
  213. //DataTable dtable = new DataTable();
  214. try
  215. {
  216. postgrescon.Open();
  217. NpgsqlCommand cmd = new NpgsqlCommand(Qry, postgrescon);
  218. if (paramet != null)
  219. {
  220. foreach (NpgsqlParameter sqlpara in paramet)
  221. cmd.Parameters.Add(sqlpara);
  222. cmd.CommandType = CommandType.StoredProcedure;
  223. }
  224. else
  225. {
  226. cmd.CommandType = CommandType.Text;
  227. }
  228. string USRole = (string)cmd.ExecuteScalar();
  229. postgrescon.Close();
  230. return USRole;
  231. //NpgsqlDataAdapter adp = new NpgsqlDataAdapter(cmd);
  232. //adp.Fill(dtable);
  233. }
  234. catch (Exception ex)
  235. {
  236. string a = ex.Message;
  237. postgrescon.Close();
  238. }
  239. return null;
  240. }
  241. public static object insertdataScalar(string qry, List<NpgsqlParameter> parameters = null)
  242. {
  243. string connectionString = ConfigurationManager.AppSettings["npgconn"].ToString();
  244. using (var postgrescon = new NpgsqlConnection(connectionString))
  245. {
  246. try
  247. {
  248. postgrescon.Open();
  249. using (var cmd = new NpgsqlCommand(qry, postgrescon))
  250. {
  251. if (parameters != null && parameters.Count > 0)
  252. {
  253. cmd.Parameters.Clear();
  254. foreach (var p in parameters)
  255. {
  256. // Clone parameter to avoid "already belongs to a collection" issue
  257. var clonedParam = new NpgsqlParameter(p.ParameterName, p.Value)
  258. {
  259. NpgsqlDbType = p.NpgsqlDbType
  260. };
  261. cmd.Parameters.Add(clonedParam);
  262. }
  263. cmd.CommandType = CommandType.StoredProcedure;
  264. }
  265. else
  266. {
  267. cmd.CommandType = CommandType.Text;
  268. }
  269. var obj = cmd.ExecuteScalar();
  270. return obj;
  271. }
  272. }
  273. catch (Exception ex)
  274. {
  275. Console.WriteLine("❌ Database Error: " + ex.Message);
  276. return null;
  277. }
  278. }
  279. }
  280. public string GetServerPath(string transactionid, int lotid, bool createdir = false)
  281. {
  282. string serverpath = string.Empty;
  283. try
  284. {
  285. DataTable ds = getdatatable("usr_server_path_info", GetNpgsqlParameter(transactionid, lotid, "correction"));
  286. if (createdir)
  287. {
  288. if (ds.Rows.Count > 0)
  289. {
  290. string username = ds.Rows[0]["username"].ToString();
  291. string password = ds.Rows[0]["password"].ToString();
  292. string domain = ds.Rows[0]["domain"].ToString();
  293. serverpath = FormatPath(ds.Rows[0]["serverpath"].ToString());
  294. Impartunate impart = new Impartunate(username, password, domain);
  295. if (impart.AllowAccesstoServer())
  296. {
  297. Directory.CreateDirectory(Path.Combine(serverpath, "IN"));
  298. Directory.CreateDirectory(Path.Combine(serverpath, "OUT"));
  299. }
  300. impart.RemoveServerAccess();
  301. }
  302. }
  303. else
  304. {
  305. serverpath = FormatPath(ds.Rows[0]["serverpath"].ToString()); // GetPath(query);
  306. }
  307. }
  308. catch //(Exception ex)
  309. {
  310. }
  311. return serverpath;
  312. }
  313. public string GetServerPath(string transactionid, bool createdir = false, string serverinfo = "")
  314. {
  315. string serverpath = string.Empty;
  316. try
  317. {
  318. DataTable ds = new DataTable();
  319. if (serverinfo.Equals("serverinfo_cum"))
  320. ds = getdatatable("usr_server_path_info", GetNpgsqlParameter(transactionid, serverinfo));
  321. else
  322. ds = getdatatable("usr_server_path_info", GetNpgsqlParameter(transactionid, 0, serverinfo));
  323. if (createdir)
  324. {
  325. if (ds.Rows.Count > 0)
  326. {
  327. string username = ds.Rows[0]["username"].ToString();
  328. string password = ds.Rows[0]["password"].ToString();
  329. string domain = ds.Rows[0]["domain"].ToString();
  330. serverpath = FormatPath(ds.Rows[0]["serverpath"].ToString());
  331. if (username != "" && password != "")
  332. {
  333. Impartunate impart = new Impartunate(username, password, domain);
  334. if (impart.AllowAccesstoServer())
  335. {
  336. if (!Directory.Exists(Path.Combine(serverpath, "IN")))
  337. Directory.CreateDirectory(Path.Combine(serverpath, "IN"));
  338. if (!Directory.Exists(Path.Combine(serverpath, "OUT")))
  339. Directory.CreateDirectory(Path.Combine(serverpath, "OUT"));
  340. }
  341. impart.RemoveServerAccess();
  342. }
  343. else
  344. {
  345. if (!Directory.Exists(Path.Combine(serverpath, "IN")))
  346. Directory.CreateDirectory(Path.Combine(serverpath, "IN"));
  347. if (!Directory.Exists(Path.Combine(serverpath, "OUT")))
  348. Directory.CreateDirectory(Path.Combine(serverpath, "OUT"));
  349. }
  350. }
  351. }
  352. else
  353. {
  354. serverpath = FormatPath(ds.Rows[0]["serverpath"].ToString()); // GetPath(query);
  355. }
  356. }
  357. catch //(Exception ex)
  358. {
  359. return serverpath;
  360. }
  361. return serverpath;
  362. }
  363. public class modcommon
  364. {
  365. public static string ns(object val)
  366. {
  367. try
  368. {
  369. return val.ToString();
  370. }
  371. catch (Exception ex)
  372. {
  373. string a = ex.Message;
  374. return string.Empty;
  375. }
  376. }
  377. public static Int32 nz(object val)
  378. {
  379. try
  380. {
  381. if (val != null)
  382. return Int32.Parse(val.ToString());
  383. else
  384. return 0;
  385. }
  386. catch (Exception ex)
  387. {
  388. string a = ex.Message;
  389. return 0;
  390. }
  391. }
  392. }
  393. public static int fncreatejob(string projectdefid, string jobtitle, string jobn,string datefolder)
  394. {
  395. int jobid = 0;
  396. string isbnvalue = string.Empty;
  397. //DateTime currentDate = DateTime.Now;
  398. //if (jobn == "0")
  399. //{
  400. // jobn = "1";
  401. //}
  402. //int number = int.Parse(jobn); // Convert string to int
  403. //string formattedNumber = number.ToString("D3"); // Format with leading zeros (3 digits)
  404. //Console.WriteLine("Formatted Number: " + formattedNumber);
  405. string jobname = jobn;
  406. FileDownloadingDBOperations dbOperation = new FileDownloadingDBOperations();
  407. try
  408. {
  409. List<Npgsql.NpgsqlParameter> para = new List<Npgsql.NpgsqlParameter>();
  410. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "@pid", Value = projectdefid });
  411. DataTable data = dbOperation.getdatatable(string.Format("select * from tblprojectdefinition where projectdefinitionid={0} and active=1", projectdefid), null);
  412. if (data.Rows.Count > 0)
  413. {
  414. DataTable dtJobExist = dbOperation.getdatatable(@"select * from tbljobmaster where lower(title) = lower('" + jobtitle.Trim() + "') and projectdefinitionid = " + projectdefid, null);
  415. if (dtJobExist.Rows.Count == 0)
  416. {
  417. isbnvalue = Regex.Match(jobtitle, @"^([^><-]*)-", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline).Groups[1].Value;
  418. para = new List<Npgsql.NpgsqlParameter>();
  419. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "@pdid", Value = projectdefid });
  420. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "@pid", Value = data.Rows[0]["projectid"].ToString() });
  421. string sJobName = string.Empty;
  422. List<NpgsqlParameter> paramet1 = new List<NpgsqlParameter>();
  423. //int cnt = modcommon.nz(db1.insertdataScalar(db, string.Format("select count(*) from job_master where projectdefinitionid={0} and projectid={1}", projectdefid, data.Rows[0]["projectid"].ToString()), paramet1)) + 1;
  424. int cnt = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(string.Format("select count(*) from tbljobmaster where projectdefinitionid={0} and projectid={1}", projectdefid, data.Rows[0]["projectid"].ToString()))) + 1;
  425. sJobName = string.Format("{0}{1}", data.Rows[0]["jobno_prefix"].ToString().Replace("\"", string.Empty), cnt.ToString().PadLeft(Convert.ToInt32(data.Rows[0]["jobno_length"].ToString()), '0'));
  426. sJobName = String.Concat(sJobName,"_", jobname);
  427. string sQry = "insert_job_details";
  428. //string filename = string.Empty;
  429. //filename = ",,";
  430. List<NpgsqlParameter> paramet = new List<NpgsqlParameter>();
  431. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int32, ParameterName = "p_projectdefinitionid", Value = projectdefid });
  432. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_jobno", Value = sJobName });
  433. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_title", Value = jobtitle });
  434. paramet.Add(new NpgsqlParameter() { DbType = DbType.Guid, ParameterName = "p_jobkey", Value = Guid.NewGuid() });
  435. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int32, ParameterName = "p_projectid", Value = data.Rows[0]["projectid"].ToString() });
  436. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_filename", Value = datefolder });
  437. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_sapno", Value = isbnvalue });
  438. jobid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, paramet));
  439. }
  440. else
  441. {
  442. jobid = -1;
  443. }
  444. }
  445. }
  446. catch (Exception ex)
  447. {
  448. jobid = 0;
  449. return jobid;
  450. }
  451. return jobid;
  452. }
  453. public static bool fncreatejobconfiguration(string jbid, string pdid)
  454. {
  455. try
  456. {
  457. //jbid="3318";
  458. FileDownloadingDBOperations dbOperation = new FileDownloadingDBOperations();
  459. List<Npgsql.NpgsqlParameter> para = new List<Npgsql.NpgsqlParameter>();
  460. List<Npgsql.NpgsqlParameter> para1 = new List<Npgsql.NpgsqlParameter>();
  461. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "@pid", Value = pdid });
  462. DataTable proflow = dbOperation.getdatatable(string.Format("select * from tblprojectworkflowdefinition where projectdefinitionid={0} and active=1", pdid), null);
  463. if (proflow.Rows.Count > 0)
  464. {
  465. proflow.AsEnumerable().ToList<DataRow>().ForEach(item =>
  466. {
  467. para = new List<Npgsql.NpgsqlParameter>();
  468. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_pwdid", DbType = DbType.Int64, Value = item["pwdid"].ToString() });
  469. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_jobid", DbType = DbType.Int32, Value = jbid });
  470. string sQry = @"insert_jobworkflow_details";
  471. int jwid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, para));
  472. DataTable inoutfile = dbOperation.getdatatable(string.Format("select * from tblinoutfiles where projectworkflowid={0} and active=1", item["pwdid"].ToString()), null);
  473. if (inoutfile.Rows.Count > 0)
  474. {
  475. para = new List<Npgsql.NpgsqlParameter>();
  476. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_jobworkflowid", DbType = DbType.Int32, Value = jwid });
  477. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_projectworkflowid", DbType = DbType.Int32, Value = item["pwdid"].ToString() });
  478. sQry = "insert_inout_files_details";
  479. FileDownloadingDBOperations.insertdataScalar(sQry, para);
  480. }
  481. });
  482. para = new List<Npgsql.NpgsqlParameter>();
  483. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "@pid", Value = pdid });
  484. proflow = dbOperation.getdatatable(string.Format(@"select jwm.jobid,jwm.jobworkflowid,ns.jobworkflowid as nextstage,ps.jobworkflowid as parallelstage,bs.jobworkflowid as movebackstage, rs.jobworkflowid as resetstage from tbljobworkflowdefinition jwm
  485. left join tbljobworkflowdefinition ns on jwm.nextstage = ns.stageid and ns.jobid = {0}
  486. left join tbljobworkflowdefinition ps on jwm.parallelstage = ps.stageid and ps.jobid = {0}
  487. left join tbljobworkflowdefinition bs on jwm.movebackstage = bs.stageid and bs.jobid = {0}
  488. left join tbljobworkflowdefinition rs on jwm.resetstage = rs.stageid and rs.jobid = {0}
  489. where jwm.jobid = {0} and jwm.active = 1 order by jwm.stageorder ", jbid), null);
  490. if (proflow.Rows.Count > 0)
  491. {
  492. proflow.AsEnumerable().ToList<DataRow>().ForEach(item =>
  493. {
  494. para = new List<Npgsql.NpgsqlParameter>();
  495. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_jobworkflowid", DbType = DbType.Int64, Value = item["jobworkflowid"].ToString() });
  496. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_nextstage", DbType = DbType.Int64, Value = item["nextstage"].ToString() });
  497. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_parallelstage", DbType = DbType.Int64, Value = item["parallelstage"].ToString() });
  498. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_movebackstage", DbType = DbType.Int64, Value = item["movebackstage"].ToString() });
  499. para.Add(new Npgsql.NpgsqlParameter { ParameterName = "p_resetstage", DbType = DbType.Int64, Value = item["resetstage"].ToString() });
  500. string sQry = string.Format(@"update tbljobworkflowdefinition set nextstage={0},parallelstage={1},movebackstage={2},resetstage={3} where jobworkflowid={4}", string.IsNullOrEmpty(item["nextstage"].ToString()) ? "null" : item["nextstage"].ToString(), string.IsNullOrEmpty(item["parallelstage"].ToString()) ? "null" : item["parallelstage"].ToString(), string.IsNullOrEmpty(item["movebackstage"].ToString()) ? "null" : item["movebackstage"].ToString(), string.IsNullOrEmpty(item["resetstage"].ToString()) ? "null" : item["resetstage"].ToString(), item["jobworkflowid"].ToString());
  501. FileDownloadingDBOperations.insertdataScalar(sQry, null);
  502. });
  503. }
  504. }
  505. }
  506. catch (Exception ex) { }
  507. return true;
  508. }
  509. public static int fncreatlot(string jobid, string filenamechange, String countno,int pagecount)
  510. {
  511. int cnt = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(string.Format("select count(*) from tbllotmaster where jobid={0} and active=1", jobid), null));
  512. string lotname = String.Concat(Path.GetFileName(filenamechange), "_", countno);
  513. string sQry = "insert_lot_details";
  514. List<NpgsqlParameter> paramet = new List<NpgsqlParameter>();
  515. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int16, ParameterName = "p_jobid", Value = jobid });
  516. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_title", Value = filenamechange });
  517. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int16, ParameterName = "p_sequence", Value = cnt });
  518. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int16, ParameterName = "p_totalunits", Value = pagecount });
  519. paramet.Add(new NpgsqlParameter() { DbType = DbType.Guid, ParameterName = "p_lotkey", Value = Guid.NewGuid() });
  520. paramet.Add(new NpgsqlParameter() { DbType = DbType.String, ParameterName = "p_filename", Value = filenamechange });
  521. paramet.Add(new NpgsqlParameter() { DbType = DbType.DateTime, ParameterName = "p_createddate", Value = DateTime.Now });
  522. int lotid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, paramet));
  523. return lotid;
  524. }
  525. public static int InsertLotTrasaction(long lotid,string option="")
  526. {
  527. FileDownloadingDBOperations dbOperation = new FileDownloadingDBOperations();
  528. int tranid = 0;
  529. try
  530. {
  531. string sqry = string.Format(@"select jwm.jobworkflowid,'R' as lotstatus,jwm.nextstage,1 active,null batchid,lm.createdby,lm.createdon from tbllotbatch lm
  532. left join tbljobworkflowdefinition jwm on jwm.jobid = lm.jobid and lm.jobid = jwm.jobid where lm.batchid = {0} and jwm.stageorder = 1", lotid);
  533. DataTable data = dbOperation.getdatatable(sqry, null);
  534. if (data.Rows.Count > 0 && option!="nexttraind")
  535. {
  536. string sQry = "insert_lot_transaction_details_batch_only";
  537. List<NpgsqlParameter> paramet = new List<NpgsqlParameter>();
  538. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_jobworkflowid", Value = data.Rows[0]["jobworkflowid"].ToString() });
  539. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_lotid", Value = lotid });
  540. tranid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, paramet));
  541. }
  542. if (data.Rows.Count > 0 && option=="nexttraind")
  543. {
  544. string sQry = "insert_lot_transaction_details_batch_only";
  545. List<NpgsqlParameter> paramet = new List<NpgsqlParameter>();
  546. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_jobworkflowid", Value = data.Rows[0]["nextstage"].ToString() });
  547. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_lotid", Value = lotid });
  548. tranid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, paramet));
  549. }
  550. }
  551. catch (Exception ex)
  552. {
  553. return 0;
  554. }
  555. return tranid;
  556. }
  557. public static int InsertLotTrasaction1(long lotid)
  558. {
  559. FileDownloadingDBOperations dbOperation = new FileDownloadingDBOperations();
  560. int tranid = 0;
  561. try
  562. {
  563. string sqry = string.Format(@"select jwm.jobworkflowid,lm.lotid,'R' as lotstatus,1 active,null batchid,lm.lotkey,lm.createdby,lm.createdby,lm.createdon from tbllotmaster lm
  564. left join tbljobworkflowdefinition jwm on jwm.jobid = lm.jobid and lm.jobid = jwm.jobid where lm.lotid = {0} and jwm.stageorder = 2", lotid);
  565. DataTable data = dbOperation.getdatatable(sqry, null);
  566. if (data.Rows.Count > 0)
  567. {
  568. string sQry = "insert_lot_transaction_details";
  569. List<NpgsqlParameter> paramet = new List<NpgsqlParameter>();
  570. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_jobworkflowid", Value = data.Rows[0]["jobworkflowid"].ToString() });
  571. paramet.Add(new NpgsqlParameter() { DbType = DbType.Int64, ParameterName = "p_lotid", Value = lotid });
  572. paramet.Add(new NpgsqlParameter() { DbType = DbType.Guid, ParameterName = "p_lotkey", Value = Guid.Parse(data.Rows[0]["lotkey"].ToString()) });
  573. tranid = modcommon.nz(FileDownloadingDBOperations.insertdataScalar(sQry, paramet));
  574. }
  575. }
  576. catch (Exception ex)
  577. {
  578. return 0;
  579. }
  580. return tranid;
  581. }
  582. public static int insertdataNonQuery(string Qry, List<NpgsqlParameter> paramet = null)
  583. {
  584. int NonEx_Val = -1;
  585. NpgsqlConnection postgrescon = new NpgsqlConnection(ConfigurationManager.AppSettings["npgconn"].ToString());
  586. try
  587. {
  588. postgrescon.Open();
  589. NpgsqlCommand cmd = new NpgsqlCommand(Qry, postgrescon);
  590. if (paramet != null)
  591. {
  592. foreach (NpgsqlParameter sqlpara in paramet)
  593. cmd.Parameters.Add(sqlpara);
  594. cmd.CommandType = CommandType.StoredProcedure;
  595. }
  596. else
  597. {
  598. cmd.CommandType = CommandType.Text;
  599. }
  600. NonEx_Val = cmd.ExecuteNonQuery();
  601. postgrescon.Close();
  602. return NonEx_Val;
  603. }
  604. catch (Exception ex)
  605. {
  606. string a = ex.Message;
  607. postgrescon.Close();
  608. return NonEx_Val;
  609. }
  610. }
  611. public class GrantFolderPermission : IDisposable
  612. {
  613. FileDownloadingDBOperations info = new FileDownloadingDBOperations();
  614. private bool id;
  615. Impartunate impartunate = null;
  616. public GrantFolderPermission(string transactionid, string lotid = "")
  617. {
  618. if (transactionid == "")
  619. {
  620. string username = System.Configuration.ConfigurationSettings.AppSettings["username"].ToString();
  621. string password = System.Configuration.ConfigurationSettings.AppSettings["password"].ToString();
  622. string domain = System.Configuration.ConfigurationSettings.AppSettings["domain"].ToString();
  623. impartunate = new Impartunate(username, password, domain);
  624. impartunate.AllowAccesstoServer();
  625. }
  626. else
  627. {
  628. DataTable ds = null;
  629. if (transactionid != "")
  630. ds = info.getdatatable("usr_server_path_info", info.GetNpgsqlParameter(transactionid, 0, "logininfo"));
  631. else if (lotid != "")
  632. ds = info.getdatatable("usr_server_path_info", info.GetNpgsqlParameter("0", Convert.ToInt32(lotid), "loginlotinfo"));
  633. /*string query = @"select lt.transactionid, sm.ipaddress, sm.username, sm.password, sm.domain from lot_transaction as lt
  634. Left join lot_master lm on lt.lotid=lm.lotid
  635. left join job_master jm on lm.jobid = jm.jobid
  636. left join project_definition pd on jm.projectdefinitionid = pd.projectdefinitionid
  637. left join server_master sm on pd.fileserver = sm.serverid where lt.transactionid = '" + transid + "'";*/
  638. //using (DataSet ds = info.GetDataSet(query))
  639. //{
  640. if (ds.Rows.Count > 0)
  641. {
  642. string username = ds.Rows[0]["username"].ToString();
  643. string password = ds.Rows[0]["password"].ToString();
  644. string domain = ds.Rows[0]["domain"].ToString();
  645. impartunate = new Impartunate(username, password, domain);
  646. impartunate.AllowAccesstoServer();
  647. }
  648. }
  649. //}
  650. }
  651. public GrantFolderPermission(string jobid)
  652. {
  653. try
  654. {
  655. // DataSet ds = null;
  656. DataSet ds = new DataSet();
  657. FileDownloadingDBOperations serinfo = new FileDownloadingDBOperations();
  658. ds.Tables.Add(serinfo.getdatatable("usr_server_path_info", serinfo.GetNpgsqlParameter(jobid, 0, "loginjobinfo")));
  659. if (ds.Tables.Count > 0)
  660. {
  661. string username = ds.Tables[0].Rows[0]["username"].ToString();
  662. string password = ds.Tables[0].Rows[0]["password"].ToString();
  663. string domain = ds.Tables[0].Rows[0]["domain"].ToString();
  664. impartunate = new Impartunate(username, password, domain);
  665. impartunate.AllowAccesstoServer();
  666. }
  667. }
  668. catch (Exception ex)
  669. {
  670. Console.Write(ex.Message);
  671. }
  672. }
  673. public void Dispose()
  674. {
  675. if (id == true)
  676. return;
  677. impartunate.RemoveServerAccess();
  678. impartunate = null;
  679. id = true;
  680. GC.SuppressFinalize(this);
  681. }
  682. }
  683. class Impartunate
  684. {
  685. #region Impersonating User
  686. #region Impersonation
  687. static IntPtr tokenHandle;
  688. static WindowsImpersonationContext impersonatedUser;
  689. private string impersUsername { get; set; }
  690. private string impersPwd { get; set; }
  691. private string impersDomain { get; set; }
  692. static WindowsIdentity newId;
  693. #endregion
  694. public Impartunate(string username, string password, string domain)
  695. {
  696. impersUsername = username;
  697. impersPwd = password;
  698. impersDomain = domain;
  699. }
  700. public static WindowsImpersonationContext oImpersonatedUser;
  701. [DllImport("advapi32.dll", SetLastError = true)]
  702. private static extern bool LogonUser(string sUsername, string sDomain, string sPassword, int iLogonType, int iLogonProvider, ref IntPtr oToken);
  703. [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  704. private static extern bool CloseHandle(IntPtr oHandle);
  705. public bool AllowAccesstoServer()
  706. {
  707. try
  708. {
  709. tokenHandle = IntPtr.Zero;
  710. bool Result = LogonUser(impersUsername, impersDomain, impersPwd, 2, 0, ref tokenHandle);
  711. if (Result)
  712. {
  713. newId = new WindowsIdentity(tokenHandle);
  714. impersonatedUser = newId.Impersonate();
  715. return true;
  716. }
  717. else
  718. {
  719. return false;
  720. }
  721. }
  722. catch (Exception ex) { return false; }
  723. }
  724. public void RemoveServerAccess()
  725. {
  726. try
  727. {
  728. if (impersonatedUser != null)
  729. {
  730. impersonatedUser.Undo();
  731. }
  732. if (tokenHandle != IntPtr.Zero)
  733. {
  734. CloseHandle(tokenHandle);
  735. }
  736. }
  737. catch (Exception ex) { }
  738. }
  739. private void ImpersonateUser()
  740. {
  741. System.IO.FileInfo localFileLastModified;
  742. System.IO.FileInfo serverFileLastModified;
  743. if (AllowAccesstoServer())
  744. {
  745. RemoveServerAccess();
  746. }
  747. }
  748. #endregion
  749. }
  750. private List<NpgsqlParameter> GetNpgsqlParameter(string transid, string process)
  751. {
  752. List<NpgsqlParameter> parametr = new List<NpgsqlParameter>();
  753. parametr.Add(new NpgsqlParameter { ParameterName = "p_tranid", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Integer, Value = transid });
  754. parametr.Add(new NpgsqlParameter { ParameterName = "p_option", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Varchar, Value = process });
  755. return parametr;
  756. }
  757. private List<NpgsqlParameter> GetNpgsqlParameter(string transid, int lotid, string process)
  758. {
  759. List<NpgsqlParameter> parametr = new List<NpgsqlParameter>();
  760. parametr.Add(new NpgsqlParameter { ParameterName = "p_tranid", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Integer, Value = transid });
  761. parametr.Add(new NpgsqlParameter { ParameterName = "p_lotid", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Integer, Value = lotid });
  762. parametr.Add(new NpgsqlParameter { ParameterName = "p_option", NpgsqlDbType = NpgsqlTypes.NpgsqlDbType.Varchar, Value = process });
  763. return parametr;
  764. }
  765. public string FormatPath(string inputpath)
  766. {
  767. try
  768. {
  769. inputpath = inputpath.Replace("/", "\\");
  770. inputpath = inputpath.Replace("\\\\", "");
  771. inputpath = System.Text.RegularExpressions.Regex.Replace(inputpath, @"\\\\", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
  772. }
  773. catch //(Exception ex)
  774. {
  775. }
  776. return string.Concat("\\\\", inputpath);
  777. }
  778. }
  779. }