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

430 lines
12 KiB
ObjectPascal

unit uCtrlKmenZbozi;
interface
{$I 'GlobalDefs.inc'}
uses
mvcframework,
mvcframework.Commons,
mvcframework.Serializer.Commons,
MVCFramework.Controllers.Register,
MVCFramework.Logger,
uCtrlBase,
uHeoObj_Base,
MVCFramework.Swagger.Commons
;
const
{$I globalConsts.inc}
type
[MVCPath('/skupinakaret')]
TSkupinaZboziController = class(TBaseController)
public
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Skupina karet', 'Vraci metadata skupiny karet', 'SkupZboGetMeta')]
procedure GetMeta;
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Skupina karet', 'Vrací data skupiny karet dle jejího kódu')]
[MVCSwagParam(plPath, 'id', 'ID skupiny karet', ptString, true)]
procedure GetByID (id: string='';
[MVCFromQueryString('sk', '')] sk: string='';
[MVCFromQueryString('nazev', '')] nazev: string=''
);
[MVCPath('')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Skupina karet', 'Vraci všechny skupiny karet', 'SkupZboGetAll')]
[MVCSwagParam(plQuery, 'sk', 'Skupina karet', ptString, false)]
[MVCSwagParam(plQuery, 'nazev', 'Název skupiny karet (použit operátor "obsahuje")', ptString, false)]
procedure GetAll ( [MVCFromQueryString('sk', '')] sk: string='';
[MVCFromQueryString('nazev', '')] nazev: string=''
);
end;
[MVCPath('/kmenzbozi')]
TKmenZboziController = class(TBaseController)
public
[MVCPath('/meta')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Kmen zboží', 'Vraci metadata kmenové karty', 'KmenZboziGetMeta')]
procedure GetMeta;
[MVCPath('/($id)/prepocetmj')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Kmen zboží', 'Vrati tabulku prepoctu MJ dane kmenove karty dle ID', 'KmenZboziGetPrepocetMJ')]
[MVCSwagParam(plPath, 'id', 'ID kmenové karty', ptString, false)]
[MVCSwagResponses(200, 'Success', TPrepocetMJ, true)]
procedure GetPrepocetMJ(id: string='0');
[MVCPath('/($id)/dokumenty')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Kmen zboží', 'Vrátí seznam dokumentů k dané kmenové kartě', 'KmenZboziGetDokumenty')]
[MVCSwagParam(plPath, 'id', 'ID kmenové karty', ptString, false)]
[MVCSwagParam(plQuery, 'jenseznam', '1 = jen seznam (bez obsahu dokumentu)', ptString, false, '1')]
[MVCSwagParam(plQuery, 'pripona', 'Připona souboru dokumentu', ptString, false)]
[MVCSwagParam(plQuery, 'prednastaveny', 'Pokud má parametr hodnotu 1, zobrazí se jen dokumenty přednastavené pro API (TabDokumenty_EXT._DokladProAPI=1)', ptString, false, '')]
[MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')]
[MVCSwagParam(plQuery, 'iddokstrom', 'ID stromové struktury dokumetu', ptString, false)]
[MVCSwagParam(plQuery, 'iddoktyp', 'ID typu dokumetu', ptString, false)]
procedure GetDokumenty (id: string='0';
[MVCFromQueryString('jenseznam', '')] jenSeznam: string='1';
[MVCFromQueryString('pripona', '')] pripona: string='';
[MVCFromQueryString('prednastaveny', '')] prednastaveny: string='';
[MVCFromQueryString('base64', '')] base64: string='0';
[MVCFromQueryString('iddokstrom', '')] idDokStrom: string='';
[MVCFromQueryString('iddoktyp', '')] idDokTyp: string=''
);
[MVCPath('/($id)')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Kmen zboží', 'Vrací data kmenové karty dle jejího ID'), 'KmenZboziGetByID']
[MVCSwagParam(plPath, 'id', 'ID kmenové karty', ptString, false)]
[MVCSwagParam(plQuery, 'sk', 'Skupina karet (použit operátor "začíná na")', ptString, false)]
[MVCSwagParam(plQuery, 'rc', 'Registrační číslo (operátor "začíná na")', ptString, false)]
[MVCSwagParam(plQuery, 'barcode', 'Čárový kod', ptString, false)]
[MVCSwagParam(plQuery, 'nazev1', 'Název 1 (operátor "obsahuje")', ptString, false)]
[MVCSwagParam(plQuery, 'cislozbozi', 'Číslo zboží (tj. skupina + registrační číslo) (operátor "začíná na")', ptString, false)]
[MVCSwagResponses(200, 'Success', TKmenZbozi, false)]
procedure GetByID (id: string='0';
[MVCFromQueryString('sk', '')] sk: string='';
[MVCFromQueryString('rc', '')] rc: string='';
[MVCFromQueryString('barcode', '')] barcode: string='';
[MVCFromQueryString('cislozbozi', '')] cisZbo: string='';
[MVCFromQueryString('nazev1', '')] nazev1: string=''
);
[MVCPath('')]
[MVCHTTPMethod([httpGET])]
[MVCSwagSummary('Kmen zboží', 'Vraci všechny kmenové karty', 'KmenZboziGetAll')]
[MVCSwagParam(plQuery, 'sk', 'Skupina karet (použit operátor "začíná na")', ptString, false)]
[MVCSwagParam(plQuery, 'rc', 'Registrační číslo (operátor "začíná na")', ptString, false)]
[MVCSwagParam(plQuery, 'barcode', 'Čárový kod', ptString, false)]
[MVCSwagParam(plQuery, 'nazev1', 'Název 1 (operátor "obsahuje")', ptString, false)]
[MVCSwagResponses(200, 'Success', TKmenZbozi, true)]
procedure GetAll ( [MVCFromQueryString('sk', '')] sk: string='';
[MVCFromQueryString('rc', '')] rc: string='';
[MVCFromQueryString('barcode', '')] barcode: string='';
[MVCFromQueryString('nazev1', '')] nazev1: string=''
);
end;
implementation
uses
uSvc_Base,
uCommons,
QUick.Logger,
mvcframework.Serializer.Intf,
System.Generics.Collections,
System.RegularExpressions,
System.StrUtils,
System.SysUtils;
{ TSkupinaZboziController }
procedure TSkupinaZboziController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetSkupinaZboziService.GetMeta));
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end;
procedure TSkupinaZboziController.GetAll (sk: string=''; nazev: string='');
begin
sk:= sanitizeSQLString(sk);
nazev:= sanitizeSQLString(nazev);
GetByID ('', sk, nazev);
end;
procedure TSkupinaZboziController.GetByID (id: string = ''; sk: string=''; nazev: string = '');
var iId: integer;
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);
sk:= sanitizeSQLString(sk);
if (sk<>'') then
params.Add('sz', sk);
nazev:= sanitizeSQLString(nazev);
if (nazev<>'') then
params.Add('nazev', nazev);
if (params.Count>0) then
try
Render(ObjectDict().Add('data', GetSkupinaZboziService.GetByParams(params))); // viz uSvc_KmenZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create('Chyba hledání SK', E.Message, 0, 200);
end
else
raise;
{$ENDIF}
end
else
{$IFDEF NORENDER400}
RenderStatusMessage (200, 'Chyba hledání SK');
{$ELSE}
raise EMVCException.Create('Chyba hledání SK', 'Pro hledání skupiny karet nebyl zadán žádný atribut', 0, 200);
{$ENDIF}
params.Free;
end;
{ TKmenZboziController }
{
procedure TKmenZboziController.GetAll;
begin
Render(
ObjectDict().Add('data', GetKmenZboziService.GetAll) // viz uSvc_KmenZbozi.pas
);
end;
}
procedure TKmenZboziController.GetPrepocetMJ (id: string = '0');
var iId: integer;
begin
id:= sanitizeSQLString(id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
begin
try
Render(ObjectDict().Add('data', GetKmenZboziService.GetPrepocetMJ(iId))); // viz uSvc_KmenZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end
else
{$IFDEF NORENDER400}
RenderStatusMessage (200, 'Nemám ID kmenové karty');
{$ELSE}
raise EMVCException.Create('Nemám ID kmenové karty', '', 0, 200);
{$ENDIF}
end;
procedure TKmenZboziController.GetDokumenty (id: string = '0'; jenSeznam: string='1'; pripona: string=''; prednastaveny: string=''; base64: string='0';
idDokStrom: string=''; idDokTyp: string='');
var iId: integer;
i1, i2: integer;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
iId:= 0;
id:= sanitizeSQLString(id);
if (id<>'') then
if not(TryStrToInt(id, iId)) then
iId:= 0;
params.Add('vazba_ident', '8');
if (iId>0) then
params.Add('vazba_idtab', iId.ToString);
pripona:= sanitizeSQLString(pripona);
if (pripona<>'') then
params.Add('pripona', pripona);
jenSeznam:= sanitizeSQLString(jenSeznam);
if (jenSeznam='1') or (jenSeznam='0') then
params.Add('jenHlavicka', jenSeznam);
prednastaveny:= sanitizeSQLString(prednastaveny);
if (prednastaveny='0') or (prednastaveny='1') then
params.Add('prednastaveny', prednastaveny);
base64:= sanitizeSQLString(base64);
if (base64='1') then
params.Add('base64', '1');
i1:= 0;
idDokStrom:= sanitizeSQLString(idDokStrom);
if not(TryStrToInt(idDokStrom, i1)) then
i1:= 0;
if (i1>0) then
params.Add('iddokstrom', i1.ToString);
i2:= 0;
idDokTyp:= sanitizeSQLString(idDokTyp);
if not(TryStrToInt(idDokTyp, i2)) then
i2:= 0;
if (i2>0) then
params.Add('iddoktyp', i2.ToString);
try
// Log.Debug('GetDokumenty start', 'uCtrlKmen_GetDokumenty');
Render(ObjectDict().Add('data', GetDokumentService.GetByParams (params)));
// Log.Debug('GetDokumenty konec', 'uCtrlKmen_GetDokumenty');
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
params.Free;
end;
procedure TKmenZboziController.GetByID (id: string='0'; sk: string=''; rc: string=''; barcode: string=''; cisZbo: string=''; nazev1: string='');
var iId: integer;
typ: byte;
params: TDictionary<string, string>;
begin
params:= TDictionary<string, string>.Create;
id:= sanitizeSQLString(id);
if not(TryStrToInt(id, iId)) then
iId:= 0;
if (iId>0) then
params.Add('id', iId.ToString);
sk:= sanitizeSQLString(sk);
if (sk<>'') then
params.Add('sz', sk);
rc:= sanitizeSQLString(rc);
if (rc<>'') then
params.Add('rc', rc);
barcode:= sanitizeSQLString(barcode);
if (barcode<>'') then
params.Add('barcode', barcode);
cisZbo:= sanitizeSQLString(cisZbo);
if (cisZbo<>'') then
params.Add('cisloZbozi', cisZbo);
nazev1:= sanitizeSQLString(nazev1);
if (nazev1<>'') then
params.Add('nazev1', nazev1);
try
Render(ObjectDict().Add('data', GetKmenZboziService.GetByParams (params))); // viz uSvc_KmenZbozi.pas
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
params.Free;
end;
procedure TKmenZboziController.GetAll (sk: string=''; rc: string=''; barcode: string=''; nazev1: string='');
begin
sk:= sanitizeSQLString(sk);
rc:= sanitizeSQLString(rc);
barcode:= sanitizeSQLString(barcode);
nazev1:= sanitizeSQLString(nazev1);
GetByID ('', sk, rc, barcode, nazev1);
end;
procedure TKmenZboziController.GetMeta;
begin
try
Render(ObjectDict().Add('data', GetKmenZboziService.GetMeta));
except
{$IFDEF NORENDER400}
RenderStatusMessage (200);
{$ELSE}
on E: EServiceException do
begin
raise EMVCException.Create(E.Message, '', 0, 200);
end
else
raise;
{$ENDIF}
end;
end;
//initialization
// TControllersRegister.Instance.RegisterController(TKmenZboziController, 'HDCApiService');
end.