Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Configuration;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace BankDAL
  10. {
  11. public class BankAccountManager
  12. {
  13.  
  14. public void TransfererArgent(string ibanOrigine, string ibanDestination, int montantATransferer)
  15. {
  16. using (SqlConnection connection = GetDatabaseConnection())
  17. {
  18. connection.Open();
  19.  
  20. SqlCommand command = connection.CreateCommand();
  21. SqlTransaction transaction;
  22.  
  23. // Start a local transaction.
  24. transaction = connection.BeginTransaction("SampleTransaction");
  25.  
  26. // Must assign both transaction object and connection
  27. // to Command object for a pending local transaction
  28. command.Connection = connection;
  29. command.Transaction = transaction;
  30.  
  31. try
  32. {
  33. DebiterDe(montantATransferer, ibanOrigine, connection, command);
  34. CrediterDe(montantATransferer, ibanDestination, connection, command);
  35.  
  36. transaction.Commit();
  37. }
  38. catch (Exception e)
  39. {
  40. transaction.Rollback();
  41. throw e;
  42. }
  43. finally
  44. {
  45. connection.Close();
  46. }
  47.  
  48. }
  49. }
  50.  
  51. private void CrediterDe(int montantAAjouter, string iban, SqlConnection cn, SqlCommand mainCommand)
  52. {
  53. mainCommand.CommandText = "UPDATE [CompteEnBanque] SET [Solde]=[Solde]+@montantAAjouter WHERE [IBAN]=@ibanOrigine";
  54. mainCommand.Parameters.AddWithValue("@montantAAjouter", montantAAjouter);
  55. mainCommand.Parameters.AddWithValue("@ibanOrigine", iban);
  56. ExecuterRequeteEtVerifierImpact(mainCommand);
  57. }
  58.  
  59. private void DebiterDe(int montantARetirer, string iban, SqlConnection cn, SqlCommand mainCommand)
  60. {
  61. mainCommand.CommandText = "UPDATE [CompteEnBanque] SET [Solde]=[Solde]-@montantARetirer WHERE [IBAN]=@ibanDestination";
  62. mainCommand.Parameters.AddWithValue("@montantARetirer", montantARetirer);
  63. mainCommand.Parameters.AddWithValue("@ibanDestination", iban);
  64. ExecuterRequeteEtVerifierImpact(mainCommand);
  65. }
  66.  
  67. private static void ExecuterRequeteEtVerifierImpact(SqlCommand command)
  68. {
  69. var nombreDeComptesEnBanqueAffectes = command.ExecuteNonQuery();
  70. if (nombreDeComptesEnBanqueAffectes != 1)
  71. throw new BankAccountNotFoundException();
  72. }
  73.  
  74. public static SqlConnection GetDatabaseConnection()
  75. {
  76. return new SqlConnection(ConfigurationManager.ConnectionStrings["MyVeryPrimitiveBank"].ConnectionString);
  77. }
  78.  
  79. public double ObtenirSolde(string iban)
  80. {
  81. using (SqlConnection connection = GetDatabaseConnection())
  82. {
  83. connection.Open();
  84. var command = new SqlCommand("SELECT [Solde] FROM [CompteEnBanque] WHERE [IBAN]=@iban", connection);
  85. command.Parameters.AddWithValue("@iban", iban);
  86. var solde = (decimal)command.ExecuteScalar();
  87. connection.Close();
  88. return Convert.ToDouble(solde);
  89. }
  90. }
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement