#r "nuget: Dapper, 2.1.35" #r "nuget: Microsoft.Data.SqlClient, 5.2.2" using System; using System.Threading.Tasks; using Dapper; using Microsoft.Data.SqlClient; var connectionString = "Server=localhost,1434;Database=ScopingTool;User Id=sa;Password=ScopingTool_SA_2024Dev;TrustServerCertificate=true"; var testMisNumber = "TEST_DAPPER_001"; using var connection = new SqlConnection(connectionString); await connection.OpenAsync(); // Cleanup await connection.ExecuteAsync("DELETE FROM MisData_Curr WHERE MisNumber = @MisNumber", new { MisNumber = testMisNumber }); await connection.ExecuteAsync("DELETE FROM MisData_Hist WHERE MisNumber = @MisNumber", new { MisNumber = testMisNumber }); await connection.ExecuteAsync("DELETE FROM mis_temp WHERE MIS_IIS_Number = @MisNumber OR MIS_IIS_Number = @MisNumberWithPrefix", new { MisNumber = testMisNumber, MisNumberWithPrefix = $"IIS_{testMisNumber}" }); Console.WriteLine("Cleanup done"); // Insert test data await connection.ExecuteAsync( @"INSERT INTO mis_temp (MIS_IIS_Number, PartNumber, Site, Version, CharacterNumber, TestDescription, SamplingType, SamplingValue, ToolsGauges, WorkInstructions, Release_Date) VALUES (@MisNumber, '12345', 'SITE1', 'A', '1', 'Test Description', 'Random', '5', 'Gauge1', 'Instruction1', @ReleaseDate)", new { MisNumber = testMisNumber, ReleaseDate = DateTime.Now }); Console.WriteLine("Inserted staging data"); // Check staging data var stagingCount = await connection.QuerySingleAsync( "SELECT COUNT(*) FROM mis_temp WHERE MIS_IIS_Number = @MisNumber", new { MisNumber = testMisNumber }); Console.WriteLine($"Staging count before proc: {stagingCount}"); // Run procedure Console.WriteLine("Running stored procedure..."); await connection.ExecuteAsync("EXEC dbo.usp_ProcessMisStagingData @SaveChanges = 1"); Console.WriteLine("Stored procedure completed"); // Check result var record = await connection.QuerySingleOrDefaultAsync( @"SELECT MisNumber, ItemNumber, BranchCode, RevID, CharNumber, Status, ObsoleteDate FROM MisData_Curr WHERE MisNumber = @MisNumber", new { MisNumber = testMisNumber }); if (record == null) { Console.WriteLine("FAIL: Record is null!"); // Additional debugging - check if it got deleted during the proc var stagingCountAfter = await connection.QuerySingleAsync( "SELECT COUNT(*) FROM mis_temp WHERE MIS_IIS_Number = @MisNumber", new { MisNumber = testMisNumber }); Console.WriteLine($"Staging count after proc: {stagingCountAfter}"); } else { Console.WriteLine($"SUCCESS: Found record - Status={record.Status}"); } // Cleanup await connection.ExecuteAsync("DELETE FROM MisData_Curr WHERE MisNumber = @MisNumber", new { MisNumber = testMisNumber }); await connection.ExecuteAsync("DELETE FROM MisData_Hist WHERE MisNumber = @MisNumber", new { MisNumber = testMisNumber }); await connection.ExecuteAsync("DELETE FROM mis_temp WHERE MIS_IIS_Number = @MisNumber OR MIS_IIS_Number = @MisNumberWithPrefix", new { MisNumber = testMisNumber, MisNumberWithPrefix = $"IIS_{testMisNumber}" }); Console.WriteLine("Test complete");