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; begin params:= TDictionary.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; begin params:= TDictionary.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; begin params:= TDictionary.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.