diff --git a/docs/UseCase003-CreateNatureCheck/Database/UC003-DDL.sql b/docs/UseCase003-CreateNatureCheck/Database/UC003-DDL.sql new file mode 100644 index 0000000..d35d68b --- /dev/null +++ b/docs/UseCase003-CreateNatureCheck/Database/UC003-DDL.sql @@ -0,0 +1,25 @@ +SET NOCOUNT ON; + +PRINT 'Using database [ArlaNatureConnect_Dev]...'; +USE [ArlaNatureConnect_Dev]; +GO + +/*************************************************************************************************** + Table: NatureCheck + Purpose: Stores Nature Check information. +***************************************************************************************************/ +IF OBJECT_ID(N'[dbo].[NatureCheck]') IS NULL +BEGIN + CREATE TABLE [dbo].[NatureCheck] ( + [Id] UNIQUEIDENTIFIER NOT NULL PRIMARY KEY DEFAULT NEWID(), + [Date] DATETIME NOT NULL, + [FarmId] UNIQUEIDENTIFIER NOT NULL, + [PersonId] UNIQUEIDENTIFIER NOT NULL, + + CONSTRAINT [FK_NatureCheck_Farm] FOREIGN KEY ([FarmId]) REFERENCES [dbo].[Farms]([Id]), + CONSTRAINT [FK_NatureCheck_Person] FOREIGN KEY ([PersonId]) REFERENCES [dbo].[Persons]([Id]) + ); + + CREATE INDEX [IX_NatureCheck_FarmId] ON [dbo].[NatureCheck]([FarmId]); + CREATE INDEX [IX_NatureCheck_PersonId] ON [dbo].[NatureCheck]([PersonId]); +END; \ No newline at end of file diff --git a/docs/UseCase003-CreateNatureCheck/Database/UC003-DML.sql b/docs/UseCase003-CreateNatureCheck/Database/UC003-DML.sql new file mode 100644 index 0000000..e69de29 diff --git a/docs/UseCase003-CreateNatureCheck/Database/UC003-DQL.sql b/docs/UseCase003-CreateNatureCheck/Database/UC003-DQL.sql new file mode 100644 index 0000000..baccf5a --- /dev/null +++ b/docs/UseCase003-CreateNatureCheck/Database/UC003-DQL.sql @@ -0,0 +1,16 @@ +SELECT + nc.Id AS NatureCheckId, + nc.FarmId, + f.Name AS FarmName, + f.CVR, + f.AddressId, + nc.PersonId, + p.FirstName AS ConsultantFirstName, + p.LastName AS ConsultantLastName, + nc.Date AS NatureCheckDate + +FROM dbo.NatureCheck AS nc +INNER JOIN dbo.Persons AS p + ON nc.PersonId = p.Id +INNER JOIN dbo.Farms AS f + ON nc.FarmId = f.Id; \ No newline at end of file diff --git a/docs/UseCase003-CreateNatureCheck/Database/uspCreateNatureCheck.sql b/docs/UseCase003-CreateNatureCheck/Database/uspCreateNatureCheck.sql new file mode 100644 index 0000000..d682620 --- /dev/null +++ b/docs/UseCase003-CreateNatureCheck/Database/uspCreateNatureCheck.sql @@ -0,0 +1,100 @@ +/* + File: uspCreateNatureCheck.sql + Purpose: Stored procedure to create a nature check. + safety: This script creates a stored procedure. Review before running in production. + + Use Case: UC003 - Create Nature Check + Description: This script holds all the columns needed to create a nature check. + + created: 2025-11-27 +*/ + +PRINT 'Using database [ArlaNatureConnect_Dev]...'; +USE [ArlaNatureConnect_Dev]; +GO + +/*************************************************************************************************** + Stored Procedure: uspCreateNatureCheck + Purpose: Creates a new nature check entry. + ***************************************************************************************************/ + + /* 1) Ensure the NatureCheck table has the extra columns */ + + + +IF OBJECT_ID(N'[dbo].[uspCreateNatureCheck]', N'P') IS NOT NULL +BEGIN + DROP PROCEDURE [dbo].[uspCreateNatureCheck]; +END +GO + +CREATE PROCEDURE [dbo].[uspCreateNatureCheck] + @NatureCheckId UNIQUEIDENTIFIER OUTPUT, + @FarmId UNIQUEIDENTIFIER, + @PersonId UNIQUEIDENTIFIER, + @FarmName NVARCHAR(200), + @FarmCVR NVARCHAR(50), + @FarmAddress UNIQUEIDENTIFIER, + @ConsultantFirstName NVARCHAR(100), + @ConsultantLastName NVARCHAR(100), + @DateTime DATETIME2 +AS +BEGIN + SET NOCOUNT ON; + + BEGIN TRY + BEGIN TRANSACTION; + + IF @NatureCheckId IS NULL + SET @NatureCheckId = NEWID(); + + IF NOT EXISTS (SELECT 1 FROM dbo.Farms WHERE Id = @FarmId) + BEGIN + RAISERROR('Farm not found for given FarmId.', 16, 1); + RETURN; + END; + + IF NOT EXISTS (SELECT 1 FROM dbo.Persons WHERE Id = @PersonId) + BEGIN + RAISERROR('Person not found for given PersonId.', 16, 1); + RETURN; + END; + + INSERT INTO dbo.NatureCheck ( + Id, + [Date], + FarmId, + PersonId, + FarmName, + FarmCVR, + FarmAddress, + ConsultantFirstName, + ConsultantLastName + ) + VALUES ( + @NatureCheckId, + @DateTime, + @FarmId, + @PersonId, + @FarmName, + @FarmCVR, + @FarmAddress, + @ConsultantFirstName, + @ConsultantLastName + ); + + COMMIT TRANSACTION; + END TRY + BEGIN CATCH + IF XACT_STATE() <> 0 + ROLLBACK TRANSACTION; + + DECLARE + @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE(), + @ErrorSeverity INT = ERROR_SEVERITY(), + @ErrorState INT = ERROR_STATE(); + + RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); + END CATCH +END +GO \ No newline at end of file