gadjov

04. CreateMinion

Feb 22nd, 2017
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.84 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.SqlClient;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8.  
  9. namespace _04.Add_Minion
  10. {
  11.     class Startup
  12.     {
  13.         static void Main()
  14.         {
  15.             Console.Write("Minion: ");
  16.             var minionInfo = Console.ReadLine().Split(' ').ToArray();
  17.             var minionName = minionInfo[0];
  18.             var minionAge = int.Parse(minionInfo[1]);
  19.             var minionTown = minionInfo[2];
  20.             Console.Write("Villain: ");
  21.             var villainName = Console.ReadLine();
  22.             SqlConnection connection = new SqlConnection("Server=(localdb)\\MSSQLLocalDB; " +
  23.              "Database=MinionsDB; " +
  24.              "MultipleActiveResultSets=true;" +
  25.              "Integrated Security=true");
  26.             connection.Open();
  27.             using (connection)
  28.             {
  29.                 var queryTownCheck =
  30.                         File.ReadAllText(
  31.                             @"D:\Projects\Visual Studio 2015\Projects\Databases Advanced - Entity Framework\DB Apps Introduction\04. Add Minion\TownsCheck.sql");
  32.                 // insert query path
  33.                 SqlCommand commandTownCheck = new SqlCommand(queryTownCheck, connection);
  34.                 commandTownCheck.Parameters.AddWithValue("@name", minionTown);
  35.                 SqlDataReader readerTownCheck = commandTownCheck.ExecuteReader();
  36.                 using (readerTownCheck)
  37.                 {
  38.                     readerTownCheck.Read();
  39.                     var townId = -1;
  40.                     if (readerTownCheck.HasRows)
  41.                     {
  42.                         townId = (int)readerTownCheck[0];
  43.                     }
  44.                     else
  45.                     {
  46.                         InsertTown(minionTown, connection);
  47.                         townId = GetTownId(connection, minionTown);
  48.                     }
  49.                     InsertMinion(minionName, minionAge, townId, connection);  
  50.                 }
  51.  
  52.                 CheckVillainExist(villainName, connection);
  53.  
  54.                 var villainId = GetVillainId(connection, villainName);
  55.                 var minionId = GerMinionId(connection, minionName);
  56.                 SetMinionToServe(villainId, minionId, connection, minionName, villainName);
  57.             }
  58.         }
  59.  
  60.         private static void SetMinionToServe(int villainId, int minionId, SqlConnection connection, string minionName, string villainName)
  61.         {
  62.             var querySetMinionToServe = @"INSERT INTO MinionsServeToVillains VALUES
  63.                (@villianId, @minionId)";
  64.             SqlCommand commandSetMinionToServe = new SqlCommand(querySetMinionToServe, connection);
  65.             commandSetMinionToServe.Parameters.AddWithValue("@villianId", villainId);
  66.             commandSetMinionToServe.Parameters.AddWithValue("@minionId", minionId);
  67.             var rowsAfecteed = commandSetMinionToServe.ExecuteNonQuery();
  68.             if (rowsAfecteed > 0)
  69.             {
  70.                 Console.WriteLine($"Successfully added {minionName} to be minion of {villainName}");
  71.             }
  72.             else
  73.             {
  74.                 // Rollback
  75.             }
  76.         }
  77.  
  78.         private static void CheckVillainExist(string villainName, SqlConnection connection)
  79.         {
  80.             var queryCheckVillain = @"SELECT COUNT(*) FROM Villains
  81. where Name = @name";
  82.             SqlCommand commandCheckVillain = new SqlCommand(queryCheckVillain, connection);
  83.             commandCheckVillain.Parameters.AddWithValue("@name", villainName);
  84.             var villainRows = (int)commandCheckVillain.ExecuteScalar();
  85.             if (villainRows == 0)
  86.             {
  87.                 InsertVillain(villainName, connection);
  88.             }
  89.             else
  90.             {
  91.                 // roll back
  92.             }
  93.         }
  94.  
  95.         private static int GerMinionId(SqlConnection connection, string minionName)
  96.         {
  97.             var id = -1;
  98.             const string queryGetMinionId = @"SELECT Id FROM Minions
  99.                WHERE Name = @name";
  100.             SqlCommand commandGetTownId = new SqlCommand(queryGetMinionId, connection);
  101.             commandGetTownId.Parameters.AddWithValue("@name", minionName);
  102.             SqlDataReader readerGetId = commandGetTownId.ExecuteReader();
  103.             if (readerGetId.Read())
  104.             {
  105.                 id = (int)readerGetId[0];
  106.             }
  107.             return id;
  108.         }
  109.  
  110.         private static int GetVillainId(SqlConnection connection, string villainName)
  111.         {
  112.             var id = -1;
  113.             const string queryGetVillainId = @"SELECT Id FROM Villains
  114.                WHERE Name = @name";
  115.             SqlCommand commandGetTownId = new SqlCommand(queryGetVillainId, connection);
  116.             commandGetTownId.Parameters.AddWithValue("@name", villainName);
  117.             SqlDataReader readerGetId = commandGetTownId.ExecuteReader();
  118.             if (readerGetId.Read())
  119.             {
  120.                 id = (int)readerGetId[0];
  121.             }
  122.             return id;
  123.         }
  124.  
  125.         private static void InsertVillain(string villainName, SqlConnection connection)
  126.         {
  127.             const string queryInsertVillain = @"INSERT INTO Villains VALUES
  128.                (@name, 'evil')";
  129.             SqlCommand commandInsertVillain = new SqlCommand(queryInsertVillain, connection);
  130.             commandInsertVillain.Parameters.AddWithValue("@name", villainName);
  131.             var rowsAffected = (int) commandInsertVillain.ExecuteNonQuery();
  132.             if (rowsAffected > 0)
  133.             {
  134.                 Console.WriteLine($"Villain {villainName} was added to the database.");
  135.             }
  136.             else
  137.             {
  138.                 Console.WriteLine("Erro when try to insert evil");
  139.                 // Rollback
  140.             }
  141.         }
  142.  
  143.         public static void InsertTown(string minionTown, SqlConnection connection)
  144.         {
  145.             const string queryInsertTown = @"insert into Towns values
  146.              (@name, 1)"; // Inserting country id bcs is not null
  147.             SqlCommand commandTownInsert = new SqlCommand(queryInsertTown, connection);
  148.             commandTownInsert.Parameters.AddWithValue("@name", minionTown);
  149.             int townInsertedRows = commandTownInsert.ExecuteNonQuery();
  150.             if (townInsertedRows > 0)
  151.             {
  152.                 Console.WriteLine($"Town {minionTown} was added to the database.");
  153.             }
  154.         }
  155.  
  156.         public static void InsertMinion(string minionName, int minionAge, int townId, SqlConnection connection)
  157.         {
  158.             const string queryInsertMinion = @"insert into Minions values
  159.                (@minionName, @minionAge, @townId)";
  160.             SqlCommand commandInsertMinion = new SqlCommand(queryInsertMinion,connection);
  161.             commandInsertMinion.Parameters.AddWithValue("@minionName", minionName);
  162.             commandInsertMinion.Parameters.AddWithValue("@minionAge", minionAge);
  163.             commandInsertMinion.Parameters.AddWithValue("@townId", townId);
  164.             var minionInsertedRow = commandInsertMinion.ExecuteNonQuery();
  165.             if (minionInsertedRow > 0)
  166.             {
  167.             }
  168.             else
  169.             {
  170.                 // Rollback Implemation
  171.             }
  172.         }
  173.  
  174.         public static int GetTownId(SqlConnection connection, string townName)
  175.         {
  176.             int id = -2;
  177.             const string queryGetTownId = @"SELECT Id FROM Towns
  178.                WHERE Name = @name";
  179.             SqlCommand commandGetTownId = new SqlCommand(queryGetTownId, connection);
  180.             commandGetTownId.Parameters.AddWithValue("@name", townName);
  181.             SqlDataReader readerGetId = commandGetTownId.ExecuteReader();
  182.             if (readerGetId.Read())
  183.             {
  184.                 id = (int)readerGetId[0];
  185.             }
  186.             return id;
  187.         }
  188.     }
  189. }
Advertisement
Add Comment
Please, Sign In to add comment