Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.33 KB | None | 0 0
  1. private void RulesApply(MisBusContext _context)
  2.         {
  3.             var firstTableColumnName = new List<string>();
  4.             var secondTableColumnName = new List<string>();
  5.  
  6.             foreach (var rule in Rules)
  7.             {
  8.                 firstTableColumnName.Add(rule.Field1);
  9.                 secondTableColumnName.Add(rule.Field2);
  10.             }
  11.             firstTableColumnName.Add(PrimaryKey1);
  12.             secondTableColumnName.Add(PrimaryKey2);
  13.  
  14.             var firstUnicCols = firstTableColumnName.Distinct();
  15.             var secondUnicCols = secondTableColumnName.Distinct();
  16.  
  17.             var ref1DBConnection = Reference1.Remote.Connect();
  18.             var cmd1 = ref1DBConnection.CreateCommand();
  19.  
  20.             var list = new List<Dictionary<string, string>>();
  21.  
  22.             foreach (var item in firstUnicCols)
  23.             {
  24.                 cmd1.CommandText = $"SELECT `{item}` FROM `{ref1DBConnection.Database}`.`{Reference1.RemoteTableName}`";
  25.                 using (var reader = cmd1.ExecuteReader())
  26.                 {
  27.                     while (reader.Read())
  28.                     {
  29.                         list.Add(new Dictionary<string, string>()
  30.                         { { item,reader[item].ToString() } });
  31.                     }
  32.                 }
  33.             }
  34.  
  35.             var ref2DBConnection = Reference2.Remote.Connect();
  36.             var cmd2 = ref2DBConnection.CreateCommand();
  37.  
  38.             var dbConnection = _context.Database.GetDbConnection();
  39.             var cmd = dbConnection.CreateCommand();
  40.  
  41.             foreach (var rule in Rules)
  42.             {
  43.                 foreach (var item in list)
  44.                 {
  45.                     foreach (var key in item.Keys)
  46.                     {
  47.                         if (rule.Field1 == key)
  48.                         {
  49.                             if (rule.Action == RefAction.A_Equals_B)
  50.                             {
  51.                                 cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  52.                                     + $" WHERE `{rule.Field2}`='{item[key]}'";
  53.                                 using (var reader = cmd2.ExecuteReader())
  54.                                 {
  55.                                     while (reader.Read())
  56.                                     {
  57.                                         cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference1.RemoteTableName}`"
  58.                                         + $" WHERE `{rule.Field1}`='{item[key]}'";
  59.                                         var id = cmd1.ExecuteScalar();
  60.                                         cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
  61.                                         + $" ({reader[rule.Field2]}, {id})";
  62.                                         cmd.ExecuteNonQuery();
  63.                                     }
  64.                                 }
  65.                             }
  66.                             if (rule.Action == RefAction.B_Contains_A)
  67.                             {
  68.                                 if (Reference2.Remote.Type == RemoteType.MSSQL)
  69.                                 {
  70.                                     cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  71.                                     + $" WHERE CHARINDEX('{item[key]}', `{rule.Field2}`) > 0";
  72.                                     using (var reader = cmd2.ExecuteReader())
  73.                                     {
  74.                                         while (reader.Read())
  75.                                         {
  76.                                             cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  77.                                             + $" WHERE `{rule.Field2}`='{item[key]}'";
  78.                                             var id = cmd1.ExecuteScalar();
  79.                                             cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
  80.                                             + $" ({reader[rule.Field2]}, {id})";
  81.                                             cmd.ExecuteNonQuery();
  82.                                         }
  83.                                     }
  84.                                 }
  85.                                 else if (Reference2.Remote.Type == RemoteType.MySQL)
  86.                                 {
  87.                                     cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  88.                                         + $" WHERE LOCATE('{item[key]}', `{rule.Field2}`) > 0";
  89.                                     using (var reader = cmd2.ExecuteReader())
  90.                                     {
  91.                                         while (reader.Read())
  92.                                         {
  93.                                             cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  94.                                             + $" WHERE `{rule.Field2}`='{item[key]}'";
  95.                                             var id = cmd1.ExecuteScalar();
  96.                                             cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
  97.                                             + $" ({reader[rule.Field2]}, {id})";
  98.                                             cmd.ExecuteNonQuery();
  99.                                         }
  100.                                     }
  101.                                 }
  102.                             }
  103.                             if (rule.Action == RefAction.A_Contains_B)
  104.                             {
  105.                                 cmd2.CommandText = $"SELECT `{rule.Field2}` FROM `{ref2DBConnection.Database}`.`{Reference2.RemoteTableName}`";
  106.                                 using (var reader = cmd2.ExecuteReader())
  107.                                 {
  108.                                     while (reader.Read())
  109.                                     {
  110.                                         if (item[key].Contains(reader[rule.Field2].ToString()))
  111.                                         {
  112.                                             cmd1.CommandText = $"SELECT `{PrimaryKey1}` FROM `{ref1DBConnection.Database}`.`{Reference2.RemoteTableName}`"
  113.                                             + $" WHERE `{rule.Field2}`='{reader[rule.Field2].ToString()}'";
  114.                                             var id = cmd1.ExecuteScalar();
  115.                                             if (id != null)
  116.                                             {
  117.                                                 cmd.CommandText = $"INSERT INTO `{dbConnection.Database}`.`RefKeysMatch_{ID}` (`key_1`, `key_2`) VALUES"
  118.                                                     + $" ({reader[rule.Field2]}, {id})";
  119.                                                 cmd.ExecuteNonQuery();
  120.                                             }
  121.                                         }
  122.                                     }
  123.                                 }
  124.                             }
  125.                         }
  126.                     }
  127.                 }
  128.             }
  129.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement