Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Data.SqlClient;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace BankDAL
- {
- public class BankAccountManager
- {
- public void TransfererArgent(string ibanOrigine, string ibanDestination, int montantATransferer)
- {
- using (SqlConnection connection = GetDatabaseConnection())
- {
- connection.Open();
- SqlCommand command = connection.CreateCommand();
- SqlTransaction transaction;
- // Start a local transaction.
- transaction = connection.BeginTransaction("SampleTransaction");
- // Must assign both transaction object and connection
- // to Command object for a pending local transaction
- command.Connection = connection;
- command.Transaction = transaction;
- try
- {
- DebiterDe(montantATransferer, ibanOrigine, connection, command);
- CrediterDe(montantATransferer, ibanDestination, connection, command);
- transaction.Commit();
- }
- catch (Exception e)
- {
- transaction.Rollback();
- throw e;
- }
- finally
- {
- connection.Close();
- }
- }
- }
- private void CrediterDe(int montantAAjouter, string iban, SqlConnection cn, SqlCommand mainCommand)
- {
- mainCommand.CommandText = "UPDATE [CompteEnBanque] SET [Solde]=[Solde]+@montantAAjouter WHERE [IBAN]=@ibanOrigine";
- mainCommand.Parameters.AddWithValue("@montantAAjouter", montantAAjouter);
- mainCommand.Parameters.AddWithValue("@ibanOrigine", iban);
- ExecuterRequeteEtVerifierImpact(mainCommand);
- }
- private void DebiterDe(int montantARetirer, string iban, SqlConnection cn, SqlCommand mainCommand)
- {
- mainCommand.CommandText = "UPDATE [CompteEnBanque] SET [Solde]=[Solde]-@montantARetirer WHERE [IBAN]=@ibanDestination";
- mainCommand.Parameters.AddWithValue("@montantARetirer", montantARetirer);
- mainCommand.Parameters.AddWithValue("@ibanDestination", iban);
- ExecuterRequeteEtVerifierImpact(mainCommand);
- }
- private static void ExecuterRequeteEtVerifierImpact(SqlCommand command)
- {
- var nombreDeComptesEnBanqueAffectes = command.ExecuteNonQuery();
- if (nombreDeComptesEnBanqueAffectes != 1)
- throw new BankAccountNotFoundException();
- }
- public static SqlConnection GetDatabaseConnection()
- {
- return new SqlConnection(ConfigurationManager.ConnectionStrings["MyVeryPrimitiveBank"].ConnectionString);
- }
- public double ObtenirSolde(string iban)
- {
- using (SqlConnection connection = GetDatabaseConnection())
- {
- connection.Open();
- var command = new SqlCommand("SELECT [Solde] FROM [CompteEnBanque] WHERE [IBAN]=@iban", connection);
- command.Parameters.AddWithValue("@iban", iban);
- var solde = (decimal)command.ExecuteScalar();
- connection.Close();
- return Convert.ToDouble(solde);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement