This commit is contained in:
Luc Vandenbroucke 2022-04-19 14:58:36 +02:00
parent d57b990eee
commit eafb8ce7b3
11 changed files with 1640 additions and 1525 deletions

View file

@ -71,7 +71,12 @@ AS BEGIN
SET @ID_Station = @EPDVisitID % 100;
SET @ID_Visit = @EPDVisitID / 100;
DECLARE @isAlarm BIT = CASE WHEN ISNULL(@alarmStatus, 0) <> 0 OR ISNULL(@otherAlarms,0)<>0
DECLARE @isAlarm BIT = CASE WHEN ISNULL(@alarmStatus, 0) <> 0
OR ISNULL(@otherAlarms, 0) <> 0
OR ISNULL(@eDosDose07Warning, 0) <> 0
OR ISNULL(@eDosRate07Warning, 0) <> 0
OR ISNULL(@eDosDose10Warning, 0) <> 0
OR ISNULL(@eDosRate10Warning, 0) <> 0
OR ISNULL(@eDosDose07Alarm, 0) <> 0
OR ISNULL(@eDosRate07Alarm, 0) <> 0
OR ISNULL(@eDosDose10Alarm, 0) <> 0

View file

@ -7,70 +7,86 @@ GO
SET QUOTED_IDENTIFIER ON;
GO
USE [eDosLocal];
GO
/****** Object: StoredProcedure [dbo].[GetPersonInfo] Script Date: 19/04/2022 13:08:50 ******/
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[GetPersonInfo] @CSN CHAR(14) = NULL,
@PersID INT = NULL
AS
--DECLARE @PersID INT = null, @CSN CHAR(14) = 'TP10';
DECLARE
@lid_station INT,
@lid_visit INT;
@PersID INT = NULL,
@AllowMultipleEPD BIT = 0
AS BEGIN
--DECLARE @PersID INT = null, @CSN CHAR(14) = 'TP10';
DECLARE
@lid_station INT,
@lid_visit INT;
IF @PersID IS NULL
SELECT
@PersID = [PersID]
FROM [dbo].[PersonInfoSnapshot]
WHERE [CSN] = @CSN COLLATE SQL_Latin1_General_CP850_BIN;
SELECT TOP(1)
@lid_station = [ID_Station],
@lid_visit = [ID_Visit]
FROM [dbo].[Visit]
WHERE [PersID] = @PersID
AND [ReturnTime] IS NULL
AND [EntryTime] > DATEADD(YEAR, -1, GETDATE());
IF @PersID IS NULL
SELECT
@PersID = [PersID]
FROM [dbo].[PersonInfoSnapshot]
WHERE [CSN] = @CSN COLLATE SQL_Latin1_General_CP850_BIN;
[a].[PersID],
[a].[Type],
[a].[CSN],
[a].[FirstName],
[a].[LastName],
[a].[NickName],
[AccessAllow] = CASE WHEN @AllowMultipleEPD = 1
AND [a].[hasEPD] = 1 THEN 0 ELSE [a].[AccessAllow] END,
[a].[Language],
[a].[MarginHP10_M],
[a].[MarginHP10_Y],
[a].[Margin],
[a].[VisitIDLocked],
[a].[ID_CommentToPerson],
[a].[Comment],
[a].[Deleted],
[ReasonNoAccess] = CASE WHEN @AllowMultipleEPD = 1
AND [a].[hasEPD] = 1 THEN 'EPD not returned' ELSE [a].[ReasonNoAccess] END,
[a].[Dose_52W_microSv],
[a].[hasEPD],
[activeStation] = @lid_station,
[activeVisit] = @lid_visit
FROM(SELECT
[p].[PersID],
[p].[Type],
[p].[CSN],
[p].[FirstName],
[p].[LastName],
[p].[NickName],
[p].[AccessAllow],
[p].[Language],
[p].[MarginHP10_M],
[p].[MarginHP10_Y],
[p].[Margin],
[p].[VisitIDLocked],
[p].[ID_CommentToPerson],
[p].[Comment],
[p].[Deleted],
[p].[ReasonNoAccess],
[p].[Dose_52W_microSv],
[hasEPD] = CONVERT(BIT, CASE WHEN @lid_visit IS NOT NULL THEN 1 ELSE 0 END)
FROM [dbo].[PersonInfoSnapshot] [p]
WHERE [p].[PersID] = @PersID) [a];
END;
SELECT TOP(1)
@lid_station = [ID_Station],
@lid_visit = [ID_Visit]
FROM [dbo].[Visit]
WHERE [PersID] = @PersID
AND [ReturnTime] IS NULL
AND [EntryTime] > DATEADD(YEAR, -1, GETDATE());
SELECT
[a].[PersID],
[a].[Type],
[a].[CSN],
[a].[FirstName],
[a].[LastName],
[a].[NickName],
[AccessAllow] = CASE WHEN [a].[hasEPD] = 1 THEN 0 ELSE [a].[AccessAllow] END,
[a].[Language],
[a].[MarginHP10_M],
[a].[MarginHP10_Y],
[a].[Margin],
[a].[VisitIDLocked],
[a].[ID_CommentToPerson],
[a].[Comment],
[a].[Deleted],
[ReasonNoAccess] = CASE WHEN [a].[hasEPD] = 1 THEN 'EPD not returned' ELSE [a].[ReasonNoAccess] END,
[a].[Dose_52W_microSv],
[a].[hasEPD],
[activeStation] = @lid_station,
[activeVisit] = @lid_visit
FROM(SELECT
[p].[PersID],
[p].[Type],
[p].[CSN],
[p].[FirstName],
[p].[LastName],
[p].[NickName],
[p].[AccessAllow],
[p].[Language],
[p].[MarginHP10_M],
[p].[MarginHP10_Y],
[p].[Margin],
[p].[VisitIDLocked],
[p].[ID_CommentToPerson],
[p].[Comment],
[p].[Deleted],
[p].[ReasonNoAccess],
[p].[Dose_52W_microSv],
[hasEPD] = CONVERT(BIT, CASE WHEN @lid_visit IS NOT NULL THEN 1 ELSE 0 END)
FROM [dbo].[PersonInfoSnapshot] [p]
WHERE [p].[PersID] = @PersID) [a];
go
---- Luc 2022-03-25
@ -178,151 +194,158 @@ IF NOT EXISTS (SELECT
END;
GO
ALTER PROCEDURE [syncLoc].[UpdateRemoteReturns] @ID_LocalStation INT = NULL
AS
-- Luc 2022-03-25
--DECLARE @ID_LocalStation INT = 9;
DECLARE @pcnr VARCHAR(20);
ALTER PROCEDURE [syncLoc].[UpdateRemoteReturns] @ID_LocalStation INT = NULL,
@pcnr VARCHAR(20) = NULL
AS BEGIN
-- Luc 2022-03-25
--DECLARE @ID_LocalStation INT = 9;
--DECLARE @pcnr VARCHAR(20);
IF @pcnr = 'EDOS-SCH' SET @pcnr = 'EDOS-WSCH';
ELSE IF @pcnr = 'DESKTOP-CCDL4A3' SET @pcnr = 'EDOS-LNK';
ELSE IF @pcnr = 'EDOS-ZZZ' SET @pcnr = 'EDOS-LSCH';
SELECT @pcnr = @@serverName;
IF @ID_LocalStation IS NULL BEGIN
IF @pcnr IS NULL SET @pcnr = @@serverName;
IF @pcnr = 'EDOS-SCH' SET @pcnr = 'EDOS-WSCH';
ELSE IF @pcnr = 'DESKTOP-CCDL4A3' SET @pcnr = 'EDOS-LNK';
ELSE IF @pcnr = 'EDOS-ZZZ' SET @pcnr = 'EDOS-LSCH';
IF @pcnr = 'EDOS-SCH' SET @pcnr = 'EDOS-WSCH';
ELSE IF @pcnr = 'DESKTOP-CCDL4A3' SET @pcnr = 'EDOS-LNK';
ELSE IF @pcnr = 'EDOS-ZZZ' SET @pcnr = 'EDOS-LSCH';
SELECT
@ID_LocalStation = [ID_Station]
FROM [dbo].[StationSettings]
WHERE [PCNr] = @pcnr;
END;
IF @ID_LocalStation IS NULL
SELECT
@ID_LocalStation = [id_station]
FROM [dbo].[stationsettings]
WHERE [pcnr] = @pcnr;
@ID_LocalStation,
[PCNr]
FROM [dbo].[StationSettings]
WHERE [ID_Station] = @ID_LocalStation;
SELECT
@ID_LocalStation,
[pcnr]
FROM [dbo].[stationsettings]
WHERE [id_station] = @ID_LocalStation;
TRUNCATE TABLE [syncLoc].[compareVisit];
TRUNCATE TABLE [syncLoc].[compareVisit];
INSERT [syncLoc].[compareVisit]([ID_Station], [ID_Visit], [Inst_CODE], [PersID], [ID_Task], [EntryTime], [ReturnTime], [Hp10Dose], [Hp07Dose], [Hp10Total], [Hp07Total], [Hp10Peak], [Hp07Peak], [Hp10Time], [Hp07Time], [ID_EPD], [QualityData], [K1], [K2], [K3], [K4], [K5], [K6], [SG], [BC], [FB], [HG], [alarmStatus], [otherAlarms], [errorStatus], [operatingStatus], [isBG], [isComplete], [isDeleted], [isAlarm], [isAlarmCleared], [isManualExit], [ID_Station_Return], [ENTRY_EPD_CLOCK], [EXIT_EPD_CLOCK], [TIME_LOST], [epdID], [eDosBatteryWarning], [eDosDose07Warning], [eDosDose07Alarm], [eDosRate07Warning], [eDosRate07Alarm], [eDosDose10Warning], [eDosDose10Alarm], [eDosRate10Warning], [eDosRate10Alarm])
SELECT
[v].[ID_Station],
[v].[ID_Visit],
[v].[Inst_CODE],
[v].[PersID],
[v].[ID_Task],
[v].[EntryTime],
[v].[ReturnTime],
[v].[Hp10Dose],
[v].[Hp07Dose],
[v].[Hp10Total],
[v].[Hp07Total],
[v].[Hp10Peak],
[v].[Hp07Peak],
[v].[Hp10Time],
[v].[Hp07Time],
[v].[ID_EPD],
[v].[QualityData],
[v].[K1],
[v].[K2],
[v].[K3],
[v].[K4],
[v].[K5],
[v].[K6],
[v].[SG],
[v].[BC],
[v].[FB],
[v].[HG],
[v].[alarmStatus],
[v].[otherAlarms],
[v].[errorStatus],
[v].[operatingStatus],
[v].[isBG],
[v].[isComplete],
[v].[isDeleted],
[v].[isAlarm],
[v].[isAlarmCleared],
[v].[isManualExit],
[v].[ID_Station_Return],
[v].[ENTRY_EPD_CLOCK],
[v].[EXIT_EPD_CLOCK],
[v].[TIME_LOST],
[v].[epdID],
[v].[eDosBatteryWarning],
[v].[eDosDose07Warning],
[v].[eDosDose07Alarm],
[v].[eDosRate07Warning],
[v].[eDosRate07Alarm],
[v].[eDosDose10Warning],
[v].[eDosDose10Alarm],
[v].[eDosRate10Warning],
[v].[eDosRate10Alarm]
FROM [EDOS].[edos].[dbo].[Visit] [v]
INNER JOIN(SELECT
[ID_Visit]
FROM [dbo].[Visit]
WHERE [ID_Station] = @ID_LocalStation
AND [ReturnTime] IS NULL) [i] ON [i].[ID_Visit] = [v].[ID_Visit]
WHERE [v].[ID_Station] = @ID_LocalStation
AND [v].[ReturnTime] IS NOT NULL;
INSERT [syncLoc].[compareVisit]([ID_Station], [ID_Visit], [Inst_CODE], [PersID], [ID_Task], [EntryTime], [ReturnTime], [Hp10Dose], [Hp07Dose], [Hp10Total], [Hp07Total], [Hp10Peak], [Hp07Peak], [Hp10Time], [Hp07Time], [ID_EPD], [QualityData], [K1], [K2], [K3], [K4], [K5], [K6], [SG], [BC], [FB], [HG], [alarmStatus], [otherAlarms], [errorStatus], [operatingStatus], [isBG], [isComplete], [isDeleted], [isAlarm], [isAlarmCleared], [isManualExit], [ID_Station_Return], [ENTRY_EPD_CLOCK], [EXIT_EPD_CLOCK], [TIME_LOST], [epdID], [eDosBatteryWarning], [eDosDose07Warning], [eDosDose07Alarm], [eDosRate07Warning], [eDosRate07Alarm], [eDosDose10Warning], [eDosDose10Alarm], [eDosRate10Warning], [eDosRate10Alarm])
SELECT
[v].[ID_Station],
[v].[ID_Visit],
[v].[Inst_CODE],
[v].[PersID],
[v].[ID_Task],
[v].[EntryTime],
[v].[ReturnTime],
[v].[Hp10Dose],
[v].[Hp07Dose],
[v].[Hp10Total],
[v].[Hp07Total],
[v].[Hp10Peak],
[v].[Hp07Peak],
[v].[Hp10Time],
[v].[Hp07Time],
[v].[ID_EPD],
[v].[QualityData],
[v].[K1],
[v].[K2],
[v].[K3],
[v].[K4],
[v].[K5],
[v].[K6],
[v].[SG],
[v].[BC],
[v].[FB],
[v].[HG],
[v].[alarmStatus],
[v].[otherAlarms],
[v].[errorStatus],
[v].[operatingStatus],
[v].[isBG],
[v].[isComplete],
[v].[isDeleted],
[v].[isAlarm],
[v].[isAlarmCleared],
[v].[isManualExit],
[v].[ID_Station_Return],
[v].[ENTRY_EPD_CLOCK],
[v].[EXIT_EPD_CLOCK],
[v].[TIME_LOST],
[v].[epdID],
[v].[eDosBatteryWarning],
[v].[eDosDose07Warning],
[v].[eDosDose07Alarm],
[v].[eDosRate07Warning],
[v].[eDosRate07Alarm],
[v].[eDosDose10Warning],
[v].[eDosDose10Alarm],
[v].[eDosRate10Warning],
[v].[eDosRate10Alarm]
FROM [EDOS].[edos].[dbo].[visit] [v]
INNER JOIN(SELECT
[ID_Visit]
FROM [dbo].[Visit]
WHERE [ID_Station] = @ID_LocalStation
AND [ReturnTime] IS NULL) [i] ON [i].[ID_Visit] = [v].[ID_Visit]
WHERE [v].[id_station] = @ID_LocalStation
AND [v].[returntime] IS NOT NULL;
UPDATE
[dbo].[Visit]
SET
[ReturnTime] = [c].[ReturnTime],
[Hp10Dose] = [c].[Hp10Dose],
[Hp07Dose] = [c].[Hp07Dose],
[Hp10Total] = [c].[Hp10Total],
[Hp07Total] = [c].[Hp07Total],
[Hp10Peak] = [c].[Hp10Peak],
[Hp07Peak] = [c].[Hp07Peak],
[Hp10Time] = [c].[Hp10Time],
[Hp07Time] = [c].[Hp07Time],
[QualityData] = [c].[QualityData],
[K1] = [c].[K1],
[K2] = [c].[K2],
[K3] = [c].[K3],
[K4] = [c].[K4],
[K5] = [c].[K5],
[K6] = [c].[K6],
[SG] = [c].[SG],
[BC] = [c].[BC],
[FB] = [c].[FB],
[HG] = [c].[HG],
[alarmStatus] = [c].[alarmStatus],
[otherAlarms] = [c].[otherAlarms],
[errorStatus] = [c].[errorStatus],
[operatingStatus] = [c].[operatingStatus],
[isComplete] = [c].[isComplete],
[isDeleted] = [c].[isDeleted],
[isAlarm] = [c].[isAlarm],
[isAlarmCleared] = [c].[isAlarmCleared],
[isManualExit] = ISNULL([c].[isManualExit], [v].[isManualExit]),
[ID_Station_Return] = ISNULL([c].[ID_Station_Return], [v].[ID_Station_Return]),
[EXIT_EPD_CLOCK] = [c].[EXIT_EPD_CLOCK],
[eDosBatteryWarning] = CASE WHEN [v].[eDosBatteryWarning] IS NULL
OR [c].[eDosBatteryWarning] = 1 THEN [c].[eDosBatteryWarning] ELSE [v].[eDosBatteryWarning] END,
[eDosDose07Warning] = CASE WHEN [v].[eDosDose07Warning] IS NULL
OR [c].[eDosDose07Warning] = 1 THEN [c].[eDosDose07Warning] ELSE [v].[eDosDose07Warning] END,
[eDosDose07Alarm] = CASE WHEN [v].[eDosDose07Alarm] IS NULL
OR [c].[eDosDose07Alarm] = 1 THEN [c].[eDosDose07Alarm] ELSE [v].[eDosDose07Alarm] END,
[eDosRate07Warning] = CASE WHEN [v].[eDosRate07Warning] IS NULL
OR [c].[eDosRate07Warning] = 1 THEN [c].[eDosRate07Warning] ELSE [v].[eDosRate07Warning] END,
[eDosRate07Alarm] = CASE WHEN [v].[eDosRate07Alarm] IS NULL
OR [c].[eDosRate07Alarm] = 1 THEN [c].[eDosRate07Alarm] ELSE [v].[eDosRate07Alarm] END,
[eDosDose10Warning] = CASE WHEN [v].[eDosDose10Warning] IS NULL
OR [c].[eDosDose10Warning] = 1 THEN [c].[eDosDose10Warning] ELSE [v].[eDosDose10Warning] END,
[eDosDose10Alarm] = CASE WHEN [v].[eDosDose10Alarm] IS NULL
OR [c].[eDosDose10Alarm] = 1 THEN [c].[eDosDose10Alarm] ELSE [v].[eDosDose10Alarm] END,
[eDosRate10Warning] = CASE WHEN [v].[eDosRate10Warning] IS NULL
OR [c].[eDosRate10Warning] = 1 THEN [c].[eDosRate10Warning] ELSE [v].[eDosRate10Warning] END,
[eDosRate10Alarm] = CASE WHEN [v].[eDosRate10Alarm] IS NULL
OR [c].[eDosRate10Alarm] = 1 THEN [c].[eDosRate10Alarm] ELSE [v].[eDosRate10Alarm] END
FROM [dbo].[Visit] [v]
INNER JOIN [syncLoc].[compareVisit] [c] ON [c].[ID_Station] = [v].[ID_Station]
AND [c].[ID_Visit] = [v].[ID_Visit]
WHERE [v].[ReturnTime] IS NULL
AND [v].[isComplete] = 0;
UPDATE
[dbo].[Visit]
SET
[ReturnTime] = [c].[ReturnTime],
[Hp10Dose] = [c].[Hp10Dose],
[Hp07Dose] = [c].[Hp07Dose],
[Hp10Total] = [c].[Hp10Total],
[Hp07Total] = [c].[Hp07Total],
[Hp10Peak] = [c].[Hp10Peak],
[Hp07Peak] = [c].[Hp07Peak],
[Hp10Time] = [c].[Hp10Time],
[Hp07Time] = [c].[Hp07Time],
[QualityData] = [c].[QualityData],
[K1] = [c].[K1],
[K2] = [c].[K2],
[K3] = [c].[K3],
[K4] = [c].[K4],
[K5] = [c].[K5],
[K6] = [c].[K6],
[SG] = [c].[SG],
[BC] = [c].[BC],
[FB] = [c].[FB],
[HG] = [c].[HG],
[alarmStatus] = [c].[alarmStatus],
[otherAlarms] = [c].[otherAlarms],
[errorStatus] = [c].[errorStatus],
[operatingStatus] = [c].[operatingStatus],
[isComplete] = [c].[isComplete],
[isDeleted] = [c].[isDeleted],
[isAlarm] = [c].[isAlarm],
[isAlarmCleared] = [c].[isAlarmCleared],
[isManualExit] = CASE WHEN [v].[isManualExit] IS NULL
OR [c].[isManualExit] = 1 THEN [c].[isManualExit] ELSE [v].[isManualExit] END,
[ID_Station_Return] = ISNULL([c].[ID_Station_Return], [v].[ID_Station_Return]),
[EXIT_EPD_CLOCK] = [c].[EXIT_EPD_CLOCK],
[eDosBatteryWarning] = CASE WHEN [v].[eDosBatteryWarning] IS NULL
OR [c].[eDosBatteryWarning] = 1 THEN [c].[eDosBatteryWarning] ELSE [v].[eDosBatteryWarning] END,
[eDosDose07Warning] = CASE WHEN [v].[eDosDose07Warning] IS NULL
OR [c].[eDosDose07Warning] = 1 THEN [c].[eDosDose07Warning] ELSE [v].[eDosDose07Warning] END,
[eDosDose07Alarm] = CASE WHEN [v].[eDosDose07Alarm] IS NULL
OR [c].[eDosDose07Alarm] = 1 THEN [c].[eDosDose07Alarm] ELSE [v].[eDosDose07Alarm] END,
[eDosRate07Warning] = CASE WHEN [v].[eDosRate07Warning] IS NULL
OR [c].[eDosRate07Warning] = 1 THEN [c].[eDosRate07Warning] ELSE [v].[eDosRate07Warning] END,
[eDosRate07Alarm] = CASE WHEN [v].[eDosRate07Alarm] IS NULL
OR [c].[eDosRate07Alarm] = 1 THEN [c].[eDosRate07Alarm] ELSE [v].[eDosRate07Alarm] END,
[eDosDose10Warning] = CASE WHEN [v].[eDosDose10Warning] IS NULL
OR [c].[eDosDose10Warning] = 1 THEN [c].[eDosDose10Warning] ELSE [v].[eDosDose10Warning] END,
[eDosDose10Alarm] = CASE WHEN [v].[eDosDose10Alarm] IS NULL
OR [c].[eDosDose10Alarm] = 1 THEN [c].[eDosDose10Alarm] ELSE [v].[eDosDose10Alarm] END,
[eDosRate10Warning] = CASE WHEN [v].[eDosRate10Warning] IS NULL
OR [c].[eDosRate10Warning] = 1 THEN [c].[eDosRate10Warning] ELSE [v].[eDosRate10Warning] END,
[eDosRate10Alarm] = CASE WHEN [v].[eDosRate10Alarm] IS NULL
OR [c].[eDosRate10Alarm] = 1 THEN [c].[eDosRate10Alarm] ELSE [v].[eDosRate10Alarm] END
FROM [dbo].[Visit] [v]
INNER JOIN [syncLoc].[compareVisit] [c] ON [c].[ID_Station] = [v].[ID_Station]
AND [c].[ID_Visit] = [v].[ID_Visit]
WHERE [v].[ReturnTime] IS NULL
AND [v].[isComplete] = 0;
END;
GO
GRANT EXECUTE ON [syncLoc].[UpdateRemoteReturns] TO [eDosStation];
GO

View file

@ -20,6 +20,7 @@ namespace eDosStation
public static SqlCommand NextIDCommand;
public static SqlCommand LastIDCommand;
public static SqlCommand CheckStatus;
public static SqlCommand GetPersonInfo;
public DataSet1.CommentOnEventDataTable dtCOE;
private bool CheckUser, AllowMultipleEPD;
private SqlCommand ReverseSyncCommand;
@ -135,8 +136,11 @@ namespace eDosStation
localConnection = new SqlConnection(currentConStr);
NextIDCommand = new SqlCommand("SELECT NEXT VALUE FOR VisitSequence as VisitID", localConnection);
isLocal = true;
bool rv = checkCon(true);
MakeCommands();
bool rv = checkCon(false);
if (localConnection.State == ConnectionState.Open)localConnection.Close();
}
catch (Exception ex)
{
@ -192,6 +196,9 @@ namespace eDosStation
}
void MakeCommands()
{
var oldState = localConnection.State;
if (oldState == ConnectionState.Closed) localConnection.Open();
LastIDCommand = new SqlCommand("VisitIDLast", localConnection);
LastIDCommand.CommandType = CommandType.StoredProcedure;
var pa = new System.Data.SqlClient.SqlParameter("ID_Station", SqlDbType.Int, 4); LastIDCommand.Parameters.Add(pa);
@ -255,7 +262,14 @@ namespace eDosStation
});
ReverseSyncCommand = new System.Data.SqlClient.SqlCommand("syncLoc.UpdateRemoteReturns", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(ReverseSyncCommand);
ReverseSyncCommand.Parameters["@ID_LocalStation"].Value = DBNull.Value;
ReverseSyncCommand.SetStringParam("@pcnr", Environment.MachineName);
GetPersonInfo = new System.Data.SqlClient.SqlCommand("[dbo].[GetPersonInfo]", localConnection) { CommandType = System.Data.CommandType.StoredProcedure };
SqlCommandBuilder.DeriveParameters(GetPersonInfo);
if (oldState == ConnectionState.Closed) localConnection.Close();
}
public void VisitExit(int EpdVisitID, EpdBaseClr.Epd2 ep)
{
@ -350,16 +364,12 @@ namespace eDosStation
{
using (var dataSet1GetTaskInfoTableAdapter = new DataSet1TableAdapters.GetTaskInfoTableAdapter()) // new eDosStation.DataSet1TableAdapters.GetTaskInfoTableAdapter())
{
//dataSet1GetTaskInfoTableAdapter.Connection.ConnectionString = currentConStr;
stationLog?.WriteLine($"dataSet1GetTaskInfoTableAdapter Fillin {System.DateTime.Now}");
dataSet1GetTaskInfoTableAdapter.Fill(dataSet1.GetTaskInfo, null, _User.Margin);
stationLog?.WriteLine($"dataSet1GetTaskInfoTableAdapter Filled {System.DateTime.Now}");
}
}
catch (System.Exception ex)
{
splunkLog?.WriteException(moduleName, taskName, ex);
if (stationLog != null) stationLog.WriteLine($"{taskName} error {ex.Message} {System.DateTime.Now}");
}
}
public User GetUser(string CSN, string Code, bool isEntry)
@ -369,61 +379,58 @@ namespace eDosStation
//object[] Values = null;
try
{
using (var cmd = new SqlCommand("GetPersonInfo", localConnection) { CommandType = System.Data.CommandType.StoredProcedure })
GetPersonInfo.SetIntParam("@PersID", Code);
GetPersonInfo.SetStringParam("@CSN", CSN);
GetPersonInfo.SetBoolParam("@AllowMultipleEPD", AllowMultipleEPD);
checkCon(true);
var rs = GetPersonInfo.ExecuteReader(System.Data.CommandBehavior.SingleRow);
using (var tb = new DataTable())
{
if (int.TryParse(Code, out int PersID)) cmd.Parameters.AddWithValue("PersID", PersID);
if (!string.IsNullOrEmpty(CSN)) cmd.Parameters.AddWithValue("csn", CSN);
else cmd.Parameters.AddWithValue("csn", DBNull.Value);
checkCon(true);
var rs = cmd.ExecuteReader(System.Data.CommandBehavior.SingleRow);
using (var tb = new DataTable())
tb.Load(rs);
if (tb.Rows.Count > 0)
{
tb.Load(rs);
if (tb.Rows.Count > 0)
{
DataRow dr = tb.Rows[0];
//Values = new object[rs.FieldCount];
//int rv = rs.GetValues(Values);
u.PersID = (int)dr["PersID"];
u.LastName = dr["LastName"].ToString();
u.FirstName = dr["FirstName"].ToString();
//u.conCode = Values[rs.GetOrdinal("conCode")].ToString();
u.Language = dr["Language"].ToString();
u.AccessAllow = dr["AccessAllow"] as bool?;
decimal? m = dr["Margin"] as decimal?;
if (m.HasValue) u.Margin = (double)m.Value; else u.Margin = null;
//u.Margin = (double ?)Values[rs.GetOrdinal("Margin")] ;
u.VisitIDLocked = dr["VisitIDLocked"] as int?;
u.ReasonNoAccess = dr["ReasonNoAccess"].ToString().Replace("\\n", "\n");
u.UserComment = dr["Comment"].ToString();
DataRow dr = tb.Rows[0];
//Values = new object[rs.FieldCount];
//int rv = rs.GetValues(Values);
u.PersID = (int)dr["PersID"];
u.LastName = dr["LastName"].ToString();
u.FirstName = dr["FirstName"].ToString();
//u.conCode = Values[rs.GetOrdinal("conCode")].ToString();
u.Language = dr["Language"].ToString();
u.AccessAllow = dr["AccessAllow"] as bool?;
decimal? m = dr["Margin"] as decimal?;
if (m.HasValue) u.Margin = (double)m.Value; else u.Margin = null;
//u.Margin = (double ?)Values[rs.GetOrdinal("Margin")] ;
u.VisitIDLocked = dr["VisitIDLocked"] as int?;
u.ReasonNoAccess = dr["ReasonNoAccess"].ToString().Replace("\\n", "\n");
u.UserComment = dr["Comment"].ToString();
if (isEntry && tb.Columns.Contains("hasEPD"))
{
u.hasEPD = (bool)dr["hasEPD"];
if (u.hasEPD) u.ReasonNoAccess = "You have an EPD in use"; //!!! not for return !!!!
}
else u.hasEPD = false;
u.activeVisit = dr["activeVisit"] as int?;
u.AllOk = (!CheckUser || (u.AccessAllow == true && u.VisitIDLocked == 0));
}
else
if (isEntry && !AllowMultipleEPD && tb.Columns.Contains("hasEPD"))
{
// Not found
u.PersID = 0;
u.LastName = "Not Found";
u.FirstName = "Not Found";
//u.conCode = "A1";
u.Language = "N";
u.AccessAllow = false;
u.Margin = 0;
u.VisitIDLocked = 0;
u.ReasonNoAccess = "Not found";
u.UserComment = string.Empty;
u.hasEPD = false;
u.AllOk = !CheckUser || (u.AccessAllow == true && u.VisitIDLocked == 0);
u.hasEPD = (bool)dr["hasEPD"];
if (u.hasEPD) u.ReasonNoAccess = "You have an EPD in use"; //!!! not for return !!!!
}
rs.Close();
else u.hasEPD = false;
u.activeVisit = dr["activeVisit"] as int?;
u.AllOk = (!CheckUser || (u.AccessAllow == true && u.VisitIDLocked == 0));
}
else
{
// Not found
u.PersID = 0;
u.LastName = "Not Found";
u.FirstName = "Not Found";
//u.conCode = "A1";
u.Language = "N";
u.AccessAllow = false;
u.Margin = 0;
u.VisitIDLocked = 0;
u.ReasonNoAccess = "Not found";
u.UserComment = string.Empty;
u.hasEPD = false;
u.AllOk = !CheckUser || (u.AccessAllow == true && u.VisitIDLocked == 0);
}
rs.Close();
}
}
catch (System.Exception ex)
@ -441,7 +448,10 @@ namespace eDosStation
VisitExitCommand.Connection = localConnection;
try
{
splunkLog.KvClear();
splunkLog.KvAddCommand(CLog.skeys.sqlQuery, ReverseSyncCommand);
ReverseSyncCommand.ExecuteNonQuery();
splunkLog.WriteSplunkLog(taskName , CLog.iseverity.info );
rv = true;
}
catch (System.Exception ex)

View file

@ -457,7 +457,7 @@ namespace eDosStation
{
dispatcherTimer?.Stop();
dispatcherTimer = null;
if (_User.AllOk == true && !_User.hasEPD) Dispatcher.InvokeAsync(AskTask, DispatcherPriority.Normal);
if (_User.AllowShowTask()) Dispatcher.InvokeAsync(AskTask, DispatcherPriority.Normal);
else Dispatcher.InvokeAsync(() => {endPage(); });
}
}

View file

@ -51,5 +51,5 @@ using System.Windows;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.6.1.3")]
[assembly: AssemblyFileVersion("2.6.1.3")]
[assembly: AssemblyVersion("2.6.1.4")]
[assembly: AssemblyFileVersion("2.6.1.4")]

View file

@ -17,9 +17,6 @@ namespace eDosStation
}
}
public class readerclass
{
public string Text { get; set; }
@ -34,7 +31,6 @@ namespace eDosStation
Station thisStation;
ObservableCollection<beepclass> beepValues = new ObservableCollection<beepclass>();
ObservableCollection<readerclass> readerValues = new ObservableCollection<readerclass>();
public Settings( Station tStation)
{
thisStation = tStation;

View file

@ -247,7 +247,6 @@ namespace eDosStation
SqlConnection co = null;
using (var cmd = new SqlCommand("StationSettingsUpdate"))
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
try
{

View file

@ -37,6 +37,12 @@ namespace eDosStation
return (AccessAllow != true || !string.IsNullOrEmpty(UserComment) || !string.IsNullOrEmpty(ReasonNoAccess));
}
public bool AllowShowTask()
{
return (AllOk == true && !hasEPD && VisitIDLocked == null);
}
public User()
{
LastName = FirstName = conCode = Language = string.Empty;

View file

@ -17,6 +17,52 @@ static public class extensions
return found;
}
static public bool SetIntParam(this System.Data.SqlClient.SqlCommand c, string paramname, string value)
{
bool found = true;
object ovalue;
if (int.TryParse(value, out int ivalue)) ovalue = ivalue; else ovalue = DBNull.Value;
if (!c.Parameters.Contains(paramname))
{
if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1);
found = c.Parameters.Contains(paramname);
}
if (found)
c.Parameters[paramname].Value = ovalue;
return found;
}
static public bool SetIntParam(this System.Data.SqlClient.SqlCommand c, string paramname, int? value)
{
bool found = true;
object ovalue;
if (value.HasValue) ovalue = value.Value; else ovalue = DBNull.Value;
if (!c.Parameters.Contains(paramname))
{
if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1);
found = c.Parameters.Contains(paramname);
}
if (found)
c.Parameters[paramname].Value= ovalue;
return found;
}
static public bool SetStringParam(this System.Data.SqlClient.SqlCommand c, string paramname, string value)
{
bool found = true;
object ovalue ;
if (string.IsNullOrEmpty(value)) ovalue = DBNull.Value; else ovalue = value;
if (!c.Parameters.Contains(paramname))
{
if (paramname[0] != '@') paramname = "@" + paramname; else paramname = paramname.Substring(1);
found = c.Parameters.Contains(paramname);
}
c.Parameters[paramname].Value = ovalue;
return found;
}
static public bool SetBoolParam(this System.Data.SqlClient.SqlCommand c, string paramname, bool value)
{
bool found = true;

View file

@ -7,8 +7,10 @@ using spl = LSWLib.CLog;
namespace syncEdosLocal
{
class cResult
{
{
public DateTime timestamp;
public int VisitsNew, VisitsSkipped, VisitsAddedExits, VisitsAddedEntries;
public int ID_Visit_Min, ID_Visit_Max;
@ -17,8 +19,7 @@ namespace syncEdosLocal
System.Data.SqlClient.SqlCommand cmd;
spl spLog;
internal int ID_Station;
public cResult(int ? iID_station, SqlConnection co, spl Log)
public cResult(int? iID_station, SqlConnection co, spl Log)
{
if (iID_station.HasValue) ID_Station = iID_station.Value; else ID_Station = -1;
ErrorMessage = string.Empty;
@ -30,7 +31,7 @@ namespace syncEdosLocal
}
public override string ToString()
{
return $"Success: {VisitsNew} new , {VisitsAddedEntries} Added Entries, {VisitsAddedExits} Added Exits, {VisitsSkipped} skipped";
return $"Success: {VisitsNew} new , {VisitsAddedEntries} Added Entries, {VisitsAddedExits} Added Exits, {VisitsSkipped} skipped";
}
private void MakeCmd(SqlConnection co)
@ -51,7 +52,7 @@ namespace syncEdosLocal
});
}
public void Write( )
public void Write()
{
try
{
@ -76,7 +77,8 @@ namespace syncEdosLocal
if (cs != ConnectionState.Open) cmd.Connection.Close();
spLog.WriteSplunkLog("Result", spLog.splunkSeverity, null, this.ToString()); ;
}
} catch (System.Exception ex)
}
catch (System.Exception ex)
{
spLog.setErrorException(ex);
spLog.WriteSplunkLog("Result", spLog.splunkSeverity, null, spLog.splunkError);
@ -92,6 +94,8 @@ namespace syncEdosLocal
class Program
{
const string moduleName = "syncEdosLocal";
public static string pcName;
public static int Verbose;
public static DataSet ds = null;
static System.Data.SqlClient.SqlInfoMessageEventHandler iMessage = new SqlInfoMessageEventHandler(Connection_InfoMessage);
@ -103,8 +107,7 @@ namespace syncEdosLocal
static LSWLib.Bulker Bulker;
static cResult Result;
static System.IO.StreamWriter oStream;
public static int? CreateStationID (SqlConnection eDosLocalCon, SqlConnection eDosCon )
public static int? CreateStationID(SqlConnection eDosLocalCon, SqlConnection eDosCon)
{
var c1 = eDosCon.State;
if (c1 != ConnectionState.Open) eDosCon.Open();
@ -120,6 +123,28 @@ namespace syncEdosLocal
if (c1 != ConnectionState.Open) eDosCon.Close();
return StationID;
}
public static void UpdateRemoteReturns(SqlConnection eDosLocalCon)
{
const string taskName = "UpdateRemoteReturns";
var oldState = eDosLocalCon.State;
if (oldState == ConnectionState.Closed) eDosLocalCon.Open();
using (var cmd = new System.Data.SqlClient.SqlCommand("[syncloc].[UpdateRemoteReturns]", eDosLocalCon))
{
spLog.KvClear();
cmd.CommandType = CommandType.StoredProcedure;
if (!string.IsNullOrEmpty(pcName)) cmd.Parameters.AddWithValue("@pcnr", pcName);
spLog.KvAddCommand(spl.skeys.sqlQuery, cmd);
try
{
cmd.ExecuteNonQuery();
spLog.WriteSplunkLog(taskName, spl.iseverity.info, null, "Done");
}
catch (System.Exception ex)
{
spLog.WriteException(moduleName, taskName, ex);
}
}
}
public static bool DoorloopToDo(System.Data.SqlClient.SqlConnection fromConnection, string toConstr, System.Data.SqlClient.SqlInfoMessageEventHandler im, ref bool error, ref bool warning)
{
ds = new DataSet();
@ -184,7 +209,7 @@ namespace syncEdosLocal
toConnection.InfoMessage += im;
toConnection.Open();
if (toConnection.State == ConnectionState.Open)
using (var ucmd = new System.Data.SqlClient.SqlCommand("syncloc.SynchroToLocalTablesUpdate",fromConnection))
using (var ucmd = new System.Data.SqlClient.SqlCommand("syncloc.SynchroToLocalTablesUpdate", fromConnection))
{
ucmd.CommandType = CommandType.StoredProcedure;
SqlParameter pa = new SqlParameter("ID_Station", SqlDbType.Int, 4); ucmd.Parameters.Add(pa); pa.Value = Result.ID_Station;
@ -199,7 +224,7 @@ namespace syncEdosLocal
foreach (DataRow rtr in dtTables.Rows)
{
ucmd.Parameters["OBJECT_ID"].Value = (int)rtr[0];
string src=rtr[1].ToString();
string src = rtr[1].ToString();
dest = rtr[2].ToString();
var x = rtr.GetChildRows(dtActions.ParentRelations[0]);
Task = $"Table {dest}";
@ -251,7 +276,6 @@ namespace syncEdosLocal
Result.Persons = cnt;
else if (dest.Contains("TaskInfo")) Result.Tasks = cnt;
if (sqlCmdsActivate != null)
using (var cmd = new System.Data.SqlClient.SqlCommand(sqlCmdsActivate.ToString(), toConnection))
{
@ -276,7 +300,6 @@ namespace syncEdosLocal
}
}
ucmd.Parameters["syncError"].Value = error;
ucmd.ExecuteNonQuery();
if (error) break;
}
@ -288,9 +311,9 @@ namespace syncEdosLocal
static void Main(string[] args)
{
Verbose = 1;
for (int ai=0;ai<args.Length;ai++)
for (int ai = 0; ai < args.Length; ai++)
{
if (args[ai][0]=='-' && args[ai].Length>1)
if (args[ai][0] == '-' && args[ai].Length > 1)
{
switch (args[ai][1])
{
@ -303,8 +326,10 @@ namespace syncEdosLocal
else
oStream = null; // new System.IO.StreamWriter( System.IO.Stream.Null);
spLog = new spl("SynceDosLocal");
Bulker = new LSWLib.Bulker(spLog,false);
pcName = System.Environment.MachineName;
spLog = new spl(moduleName);
Bulker = new LSWLib.Bulker(spLog, false);
messages = Bulker.messages;
messages.AppendLine(spLog.GetStartInfoString());
@ -312,7 +337,7 @@ namespace syncEdosLocal
var SourceCoStr = new SqlConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings["eDosConnectionString"].ConnectionString);
var LocalCoStr = new SqlConnectionStringBuilder(System.Configuration.ConfigurationManager.ConnectionStrings["LocalConnectionString"].ConnectionString);
SourceCoStr.TrustServerCertificate = LocalCoStr.TrustServerCertificate= true;
SourceCoStr.TrustServerCertificate = LocalCoStr.TrustServerCertificate = true;
SourceCoStr.ApplicationName = LocalCoStr.ApplicationName = "eDosSync";
SourceCoStr.WorkstationID = LocalCoStr.WorkstationID = Environment.MachineName;
@ -325,7 +350,8 @@ namespace syncEdosLocal
reDos = key.GetValue("eDos").ToString();
reDosLocal = key.GetValue("eDosLocal").ToString();
}
} catch (System.Exception ex)
}
catch (System.Exception ex)
{
spLog.setErrorException(ex);
spLog.WriteSplunkLog("init", spLog.splunkSeverity, null, spLog.splunkError);
@ -368,6 +394,10 @@ namespace syncEdosLocal
}
if (error) goto final;
//Update remote returns
final:
messages.AppendLine($"Process:End,tm={System.DateTime.Now.ToString("yyyy-MM-ddTHH:mm")}, Errors={error}, Warnings={warning}");
//System.Diagnostics.Debug.WriteLine(messages.ToString());
@ -410,21 +440,21 @@ namespace syncEdosLocal
{
Result.CheckVisitID(lr.ID_Visit); //min max
cr = ds.CentralVisits.FindByID_StationID_Visit(lr.ID_Station, lr.ID_Visit);
if (cr==null)
if (cr == null)
tc.Fill(ds.CentralVisits, lr.ID_Station, lr.ID_Visit);
cr = ds.CentralVisits.FindByID_StationID_Visit(lr.ID_Station, lr.ID_Visit);
if (cr == null)
{
Result.VisitsNew++;
copyrow(lr, ds.CentralVisits);
if ((lr.VisitStatus & 1) > 0) { lr.syncedEntry = true; Result.VisitsAddedEntries++;}
if ((lr.VisitStatus & 1) > 0) { lr.syncedEntry = true; Result.VisitsAddedEntries++; }
if ((lr.VisitStatus & 2) > 0) { lr.syncedExit = true; Result.VisitsAddedExits++; }
}
else switch (cr.VisitStatus)
{
case 3: lr.syncedEntry = lr.syncedExit = true; Result.VisitsSkipped++; break;
case 1: if ((lr.VisitStatus & 2) == 2) { copyExit(lr, cr); lr.syncedEntry=lr.syncedExit = true; Result.VisitsAddedExits++; } break;
case 2: if ((lr.VisitStatus & 1) == 1) { copyEntry(lr, cr); lr.syncedEntry=lr.syncedExit= true; Result.VisitsAddedEntries++; } break;
case 1: if ((lr.VisitStatus & 2) == 2) { copyExit(lr, cr); lr.syncedEntry = lr.syncedExit = true; Result.VisitsAddedExits++; } break;
case 2: if ((lr.VisitStatus & 1) == 1) { copyEntry(lr, cr); lr.syncedEntry = lr.syncedExit = true; Result.VisitsAddedEntries++; } break;
}
}
ta.Update(ds.LocalVisits);
@ -497,7 +527,7 @@ namespace syncEdosLocal
{
DataSet1.CentralVisitsRow cr = centralVisits.NewCentralVisitsRow();
foreach (DataColumn sc in lr.Table.Columns)
if (lr.Table.Columns.Contains(sc.ColumnName) ) cr[sc.ColumnName] = lr[sc.ColumnName];
if (lr.Table.Columns.Contains(sc.ColumnName)) cr[sc.ColumnName] = lr[sc.ColumnName];
centralVisits.AddCentralVisitsRow(cr);
return cr;
}