unit TESIS_WEBSERVICEImpl;
interface
uses InvokeRegistry, Types, XSBuiltIns, TESIS_WEBSERVICEIntf,WebDataModul,SysUtils,
Classes;
type
{ TT_WEBSERVICE }
TT_WEBSERVICE =
class(TInvokableClass, IT_WEBSERVICE)
public
function WriteMesswert(
const Authent:TAuth; MesswertData:TRequest_WriteMesswert):TResponse_Write_Messwert;
stdcall;
function WriteMesswertArray(
const Authent:TAuth; MesswertArray:TRequest_WriteMesswertArray):TResponse_WriteMesswertArray;
stdcall;
end;
implementation
#
function TT_WEBSERVICE.WriteMesswert(
const Authent:TAuth; MesswertData:TRequest_WriteMesswert):TResponse_Write_Messwert;
var
s:
string;
UserID,ErrorText,h:
String;
b:boolean;
err:Integer;
begin
if WB=nil
then WB:=TWebDatamod.Create(
nil);
if Result=nil
then Result:=TResponse_Write_Messwert.Create;
if WB.TestAuthentifizierung(Authent.UserName,Authent.UserPasswordHash,'
WriteMesswert',Authent.DB,s)=0
then
begin
err:=WB.FIsTRICValid(MesswertData.TRIC,b,ErrorText);
if err <> 0
then
begin
Result.Status:=IntToStr(err);
Result.ErrorText:=ErrorText;
Exit;
end;
if not WB.StringOk(MesswertData.Bezeichnung,WebDataModul.ALPHA)
then
begin
Result.Status:='
-1';
Result.ErrorText:=ErrorText;
Exit;
end;
err:=WB.FIsAuftragValid(MesswertData.Auftrag,b,ErrorText);
if err <> 0
then
begin
Result.Status:=IntToStr(err);
Result.ErrorText:=ErrorText;
Exit;
end;
b:=WB.StringOk(MesswertData.Tabelle,WebDataModul.DBALPHA);
if b=false
then
begin
Result.Status:=IntToStr(err);
Result.ErrorText:='
Der Tabellenname enthält unzulässige Zeichen. Zulässig sind a-z,A-Z,_,-,0-9';
Exit;
end;
err:=WB.FWriteMesswert(MesswertData,ErrorText);
if err=0
then
begin
Result.Status:=IntToStr(OK);
Result.ErrorText:='
';
end else
begin
Result.Status:=IntToStr(err);
Result.ErrorText:=ErrorText;
end;
end else
begin
Result.Status:='
-1';
Result.ErrorText:=s;
end;
end;
function TT_WEBSERVICE.WriteMesswertArray(
const Authent:TAuth; MesswertArray:TRequest_WriteMesswertArray):TResponse_WriteMesswertArray;
var
s:
string;
UserID,ErrorText,h:
String;
b:boolean;
err:Integer;
i:Cardinal;
begin
if WB=nil
then WB:=TWebDatamod.Create(
nil);
if Result=nil
then Result:=TResponse_WriteMesswertArray.Create;
if WB.TestAuthentifizierung(Authent.UserName,Authent.UserPasswordHash,'
WriteMesswertArray',Authent.DB,s)=0
then
begin
for I := 0
to MesswertArray.MesswertAnzahl - 1
do
begin
err:=WB.FWriteMesswert(MesswertArray.Messwerte[i],ErrorText);
if err<>0
then
begin
//Abbruch im Fehlerfall
Result.Status:=IntToStr(err);
Result.ErrorText:=ErrorText+'
Nicht alle Daten geschrieben. Letzter Datensatz-Nr im Array: '+IntToStr(i);
Exit;
end;
end;
if err=0
then
begin
Result.Status:=IntToStr(OK);
Result.ErrorText:='
';
end;
end;
end;
initialization
{ Aufrufbare Klassen müssen registriert werden }
InvRegistry.RegisterInvokableClass(TT_WEBSERVICE);
end.