Example #1
0
        public static void Main(string[] args)
        {
            var minionInfo  = Console.ReadLine()?.Split();
            var villainInfo = Console.ReadLine()?.Split();

            if (minionInfo == null)
            {
                return;
            }
            var minionName = minionInfo[1];
            var minionAge  = int.Parse(minionInfo[2]);
            var minionTown = minionInfo[3];

            if (villainInfo == null)
            {
                return;
            }
            var villainName = villainInfo[1];

            using (var connection = new SqlConnection(Configuration.ConnectionString))
            {
                connection.Open();

                Communication.ExecNonQuery(Configuration.UseDatabase, connection);
                const string townIdQuery = @"SELECT Id FROM Towns WHERE Name = @townName";
                int?         townId      = null;
                int?         minionId    = null;
                int?         villainId   = null;

                using (var command = new SqlCommand(townIdQuery, connection))
                {
                    command.Parameters.AddWithValue("@townName", minionTown);
                    townId = (int?)command.ExecuteScalar();

                    if (townId == null)
                    {
                        Communication.AddTown(minionTown, connection);
                        Console.WriteLine($"Town {minionTown} was added to the database.");
                    }

                    townId = (int?)command.ExecuteScalar();
                }

                const string minionQuery = @"SELECT Id FROM Minions WHERE Name = @Name";

                using (var command = new SqlCommand(minionQuery, connection))
                {
                    command.Parameters.AddWithValue("@Name", minionName);
                    minionId = (int?)command.ExecuteScalar();

                    if (minionId == null)
                    {
                        Communication.AddMinion(minionName, minionAge, townId, connection);
                    }

                    minionId = (int?)command.ExecuteScalar();
                }

                const string villainQuery = @"SELECT Id FROM Villains WHERE Name = @Name";

                using (var command = new SqlCommand(villainQuery, connection))
                {
                    command.Parameters.AddWithValue("@Name", villainName);
                    villainId = (int?)command.ExecuteScalar();

                    if (villainId == null)
                    {
                        Communication.AddVillain(villainName, connection);
                        Console.WriteLine($"Villain {villainName} was added to the database.");
                    }

                    villainId = (int?)command.ExecuteScalar();
                }

                const string cmdText = @"INSERT INTO MinionsVillains (MinionId, VillainId) VALUES (@villainId, @minionId)";

                using (var command = new SqlCommand(cmdText, connection))
                {
                    command.Parameters.AddWithValue("@villainId", villainId);
                    command.Parameters.AddWithValue("@minionId", minionId);
                    command.ExecuteNonQuery();
                }

                Console.WriteLine($"Successfully added {minionName} to be minion of {villainName}.");
            }
        }