Advertisement
Guest User

Untitled

a guest
May 26th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.18 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.SqlClient;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Forms;
  11.  
  12. namespace Zadachi4
  13. {
  14. public partial class Form1 : Form
  15. {
  16. private Int32 LastStatementId = -1;
  17.  
  18. private string MemberId;
  19. private string ProviderId;
  20. private string Category;
  21. private double Amount;
  22.  
  23.  
  24.  
  25. public Form1()
  26. {
  27. InitializeComponent();
  28. }
  29.  
  30. private void AddStatement_Click(object sender, EventArgs e)
  31. {
  32. using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DbContext))
  33. {
  34. MemberId = MemberIdTb.Text;
  35. ProviderId = ProviderIdTb.Text;
  36. Category = CategoryTb.Text;
  37. Amount = double.Parse(AmountTb.Text);
  38.  
  39. string sqlquery = string.Format(@"INSERT INTO statement
  40. ([member_no]
  41. ,[statement_dt]
  42. ,[due_dt]
  43. ,[statement_amt]
  44. ,[statement_code])
  45. VALUES
  46. ({0}
  47. ,CURRENT_TIMESTAMP
  48. ,CURRENT_TIMESTAMP
  49. ,1500.00
  50. ,0)", MemberId);
  51. IDbCommand command = new SqlCommand(sqlquery);
  52. command.Connection = connection;
  53. connection.Open();
  54. command.ExecuteNonQuery();
  55. command.CommandText = "SELECT MAX(statement.statement_no) FROM statement; ";
  56. IDataReader reader = command.ExecuteReader();
  57. reader.Read();
  58. LastStatementId = reader.GetInt32(0);
  59. }
  60. }
  61.  
  62. private void AddPaymentWithoutRollback_Click(object sender, EventArgs e)
  63. {
  64. if (LastStatementId < 0)
  65. return;
  66. int ErrorVar = 0;
  67. Double PaySum = 500.0;
  68. Double PayedTotal = 0.0;
  69. Double ToBePayed = 0.0;
  70. string FirstQuery = @"INSERT INTO payment
  71. ([member_no]
  72. ,[payment_dt]
  73. ,[payment_amt]
  74. ,[statement_no]
  75. ,[payment_code])
  76. VALUES
  77. (10001
  78. ,CURRENT_TIMESTAMP
  79. ," + PaySum +
  80. " ," + LastStatementId +
  81. ",0)";
  82. string SecondQuery = @"SELECT SUM(payment.payment_amt)
  83. FROM payment
  84. WHERE payment.statement_no = " + LastStatementId;
  85. int Code = 0;
  86. string ThirdQuery = @"SELECT statement.statement_amt
  87. FROM statement
  88. WHERE statement.statement_no = " + LastStatementId;
  89. string FourthQuery = @"UPDATE statement
  90. SET statement_code = {0}" +
  91. "WHERE statement_no = " + LastStatementId;
  92.  
  93. using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DbContext))
  94. {
  95. IDbCommand command = new SqlCommand(FirstQuery);
  96.  
  97. command.Connection = connection;
  98. connection.Open();
  99.  
  100. IDbTransaction transact;
  101. transact = connection.BeginTransaction();
  102. command.Transaction = transact;
  103.  
  104. try
  105. {
  106. command.ExecuteNonQuery();
  107. int a = 10 / ErrorVar; // Генерираме Exeption
  108. command.CommandText = SecondQuery;
  109. IDataReader reader = command.ExecuteReader();
  110. reader.Read();
  111. PayedTotal = reader.GetDouble(0);
  112. command.CommandText = ThirdQuery;
  113. reader = command.ExecuteReader();
  114. reader.Read();
  115. ToBePayed = reader.GetDouble(0);
  116. if (PayedTotal == 0.0)
  117. { Code = 0; }
  118. else if (PayedTotal < ToBePayed)
  119. { Code = 1; }
  120. else { Code = 2; }
  121. command.CommandText = String.Format(FourthQuery, Code);
  122. command.ExecuteNonQuery();
  123. command.Transaction.Commit();
  124.  
  125. }
  126. catch (Exception ex)
  127. {
  128. command.Transaction.Rollback();
  129. MessageBox.Show(ex.Message, "Грешка, но пък правим rollback");
  130. }
  131. }
  132. }
  133.  
  134. private void AddCharge_Click(object sender, EventArgs e)
  135. {
  136.  
  137. }
  138.  
  139. private void AddPaymentWithRollback_Click(object sender, EventArgs e)
  140. {
  141. MemberId = MemberIdTb.Text;
  142. ProviderId = ProviderIdTb.Text;
  143. Category = CategoryTb.Text;
  144. Amount = double.Parse(AmountTb.Text);
  145.  
  146. string InsertIntoStatement = string.Format(@"INSERT INTO statement([member_no], [statement_dt], [due_dt], [statement_amt], [statement_code])
  147. VALUES({0}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 1000, 1)", MemberId);
  148.  
  149. string GetLastStatement = @" SELECT MAX(dbo.statement.statement_no)
  150. FROM STATEMENT;";
  151.  
  152.  
  153.  
  154. string SecondQuery = @"SELECT SUM(payment.payment_amt)
  155. FROM payment
  156. WHERE payment.statement_no = " + LastStatementId;
  157.  
  158. int Code = 0;
  159. string ThirdQuery = @"SELECT statement.statement_amt
  160. FROM statement
  161. WHERE statement.statement_no = " + LastStatementId;
  162.  
  163. string FourthQuery = @"UPDATE statement
  164. SET statement_code = {0}" +
  165. "WHERE statement_no = " + LastStatementId;
  166.  
  167. string ChargeStatement = string.Format(@"UPDATE charge
  168. SET charge_amt = charge_amt - {0}
  169. WHERE [member_no] = {1};", Amount, MemberId);
  170.  
  171. using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DbContext))
  172. {
  173. IDbCommand command = new SqlCommand(InsertIntoStatement);
  174.  
  175. command.Connection = connection;
  176. connection.Open();
  177.  
  178. IDbTransaction transact;
  179. transact = connection.BeginTransaction();
  180. command.Transaction = transact;
  181.  
  182. try
  183. {
  184. // INSERT Into Statement
  185. command.ExecuteNonQuery();
  186.  
  187. // Get Last
  188. command.CommandText = GetLastStatement;
  189.  
  190. // Get last id
  191. IDataReader reader = command.ExecuteReader();
  192. reader.Read();
  193. LastStatementId = reader.GetInt32(0);
  194. reader.Close();
  195.  
  196. string InsertIntoCharge = string.Format(@"INSERT INTO charge (
  197. [member_no], [provider_no], [category_no], [charge_dt], [charge_amt], [statement_no], [charge_code])
  198. VALUES ({0}, {1}, {2}, CURRENT_TIMESTAMP, {3}, {4}, 0);", MemberId, ProviderId, Category, Amount, LastStatementId);
  199.  
  200. // INSERT INTO CHARGE
  201. command.CommandText = InsertIntoCharge;
  202. command.ExecuteNonQuery();
  203.  
  204. // UPDATE Charge
  205. command.CommandText = ChargeStatement;
  206. command.ExecuteNonQuery();
  207.  
  208. command.Transaction.Commit();
  209.  
  210. }
  211. catch (Exception ex)
  212. {
  213. command.Transaction.Rollback();
  214. MessageBox.Show(ex.Message, "Грешка, но пък правим rollback");
  215. }
  216. }
  217. }
  218. }
  219. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement