Files
HDCApi/uCtrlOrganizace.pas
2025-05-21 21:14:32 +02:00

189 lines
4.5 KiB
ObjectPascal

unit uCtrlOrganizace;
interface
{$I 'GlobalDefs.inc'}
uses
mvcframework,
mvcframework.Commons,
mvcframework.Serializer.Commons,
uCtrlBase,
uHeoObj_Base
{$IFDEF SWAGGER}
,MVCFramework.Swagger.Commons
{$ENDIF}
;
const
{$I globalConsts.inc}
type
[MVCPath('/organizace')]
TOrganizaceController = class(TBaseController)
public
{
procedure GetByICODIC(const [MVCFromQueryString('ico', '')] ico: string;
const [MVCFromQueryString('dic', '')] dic: string
);
}
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Organizace', 'Vraci metadata kmenové karty', 'OrganizaceGetMeta')]
procedure GetMeta;
[MVCPath]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Organizace', 'Vrací seznam všech organizací', 'OrganizaceGetAll')]
[MVCSwagResponses(200, 'Success', TOrganizace)]
procedure GetAll;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Organizace', 'Vrací detail organizace', 'OrganizaceGetByID')]
[MVCSwagParam(plPath, 'id', 'ID organizace', ptString, false)]
[MVCSwagParam(plQuery, 'cislo', 'Èíslo organizace', ptString, false)]
[MVCSwagParam(plQuery, 'ico', 'IÈO organizace', ptString, false)]
[MVCSwagParam(plQuery, 'dic', 'DIÈ organizace', ptString, false)]
[MVCSwagResponses(200, 'Success', TOrganizace)]
procedure GetByID (id: string='0';
[MVCFromQueryString('cislo', '')] cislo: string='';
[MVCFromQueryString('ico', '')] ico: string='';
[MVCFromQueryString('dic', '')] dic: string=''
);
end;
implementation
uses
uSvc_Base,
uCommons,
mvcframework.Serializer.Intf,
System.Generics.Collections,
System.RegularExpressions,
System.StrUtils,
System.SysUtils;
{ TKmenZboziController }
procedure TOrganizaceController.GetAll;
begin
try
Render(ObjectDict().Add('data', GetOrganizaceService.GetAll)); // viz uSvc_Organizace.pas
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
end;
end;
{
procedure TOrganizaceController.GetByICODIC(const ico, dic: string);
begin
try
if (dic.Trim<>'')then
Render(ObjectDict().Add('data', GetOrganizaceService.GetByDIC(dic)))
else
if (ico.Trim<>'')then
Render(ObjectDict().Add('data', GetOrganizaceService.GetByICO(ico))) // viz uSvc_Organizace.pas
else
Render(ObjectDict().Add('data', GetOrganizaceService.GetAll))
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
end;
end;
}
procedure TOrganizaceController.GetByID(id: string='0'; cislo: string=''; ico: string=''; dic: string='');
var iId, iCislo: integer;
typ: Byte;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
iId:= 0;
id:= sanitizeSQLString(id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
params.Add('id', iId.ToString);
iCislo:= -1;
cislo:= sanitizeSQLString(cislo);
if not(TryStrToInt(cislo, iCislo)) then
iCislo:= -1;
if (iCislo>-1) then
params.Add('cislo', iCislo.ToString);
ico:= sanitizeSQLString(ico);
if (ico<>'') then
params.Add('ico', ico);
dic:= sanitizeSQLString(dic);
if (dic<>'') then
params.Add('dic', dic);
typ:= 0;
if (iId>-1) then
typ:= 0;
if (iCislo>-1) then
typ:= 1;
if (ico<>'') then
typ:= 2;
if (dic<>'') then
typ:= 3;
typ:= 4;
try
case typ of
0: Render(ObjectDict().Add('data', GetOrganizaceService.GetByID(iId))); // viz uSvc_Organizace.pas
1: Render(ObjectDict().Add('data', GetOrganizaceService.GetByCislo(iCislo)));
2: Render(ObjectDict().Add('data', GetOrganizaceService.GetByICO(ico)));
3: Render(ObjectDict().Add('data', GetOrganizaceService.GetByDIC(dic)));
4: Render(ObjectDict().Add('data', GetOrganizaceService.GetByParams(params)));
end;
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
end;
params.Free;
end;
procedure TOrganizaceController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetOrganizaceService.GetMeta));
except
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 404);
end
else
raise;
end;
end;
end.