﻿-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[mfr__updt__appointments]
	@tblname as nvarchar(50)
	, @referencetable nvarchar(50)
	, @tgtid bigint
AS
BEGIN
	SET NOCOUNT ON;

    DECLARE @tmp [dbo].[mfr__tt__appointments];

	DECLARE @tmp_cmd nvarchar(1000) = N'SELECT DISTINCT * FROM ' + @tblname
	INSERT INTO @tmp EXECUTE [sp_executesql] @tmp_cmd;


	MERGE [dbo].[mfr__appointments] as TARGET
		USING @tmp as SOURCE ON TARGET.[Id] = SOURCE.[Id]
	WHEN MATCHED AND (TARGET.[Version] <= SOURCE.[Version] )  THEN
		UPDATE
			SET [Id] = SOURCE.[Id]
				  ,[Version] = SOURCE.[Version]
				  ,[State] = SOURCE.[State]
				  ,[Type] = SOURCE.[Type]
				  ,[EndDateTime] = SOURCE.[EndDateTime]
				  ,[StartDateTime] = SOURCE.[StartDateTime]
				  ,[DrivingDistanceFrom] = SOURCE.[DrivingDistanceFrom]
				  ,[DrivingDistanceTo] = SOURCE.[DrivingDistanceTo]
				  ,[WasReadOnClientSide] = SOURCE.[WasReadOnClientSide]
				  ,[ContactIds] = SOURCE.[ContactIds]
				  ,[ServiceRequestId] = SOURCE.[ServiceRequestId]
				  ,[ContactId] = SOURCE.[ContactId]
				  ,[Note] = SOURCE.[Note]
	WHEN NOT MATCHED BY TARGET THEN
		INSERT
			   ([Id]
				  ,[Version]
				  ,[State]
				  ,[Type]
				  ,[EndDateTime]
				  ,[StartDateTime]
				  ,[DrivingDistanceFrom]
				  ,[DrivingDistanceTo]
				  ,[WasReadOnClientSide]
				  ,[ContactIds]
				  ,[ServiceRequestId]
				  ,[ContactId]
				  ,[Note])
		 VALUES
			    (SOURCE.[Id]
				  ,SOURCE.[Version]
				  ,SOURCE.[State]
				  ,SOURCE.[Type]
				  ,SOURCE.[EndDateTime]
				  ,SOURCE.[StartDateTime]
				  ,SOURCE.[DrivingDistanceFrom]
				  ,SOURCE.[DrivingDistanceTo]
				  ,SOURCE.[WasReadOnClientSide]
				  ,SOURCE.[ContactIds]
				  ,SOURCE.[ServiceRequestId]
				  ,SOURCE.[ContactId]
				  ,SOURCE.[Note]);
END