unit uCtrlCustom;

interface

uses
  MVCframework,
  MVCframework.Commons,
  MVCframework.Serializer.Commons,
//  MVCframework.Serializer.Intf,
  System.Generics.Collections, // kvuli TDictionary
  System.RegularExpressions,
//  JsonDataObjects,
  uCommons, // kvuli EServiceException
  uCtrlBase,
//  uSvc_Base,
  helTabsBIDs,
  uHeoObj_Base,
  uHeOObj_Custom,
  uSvcCustom,
  MVCFramework.Swagger.Commons; // kvuli dokumentaci

const
{$I .\..\..\globalConsts.inc}

type
  [MVCPath('/rootvin')]
  TRTNController = class(TBaseController)
   strict private
    FSelfSvc: TRTNService;
   strict protected
    function GetRTNService: TRTNService;
   public
    destructor Destroy; override;

//    [MVCDoc('Pomoci POST zapise obecna json data do Heliosu')]
    [MVCPath('/zapisjson')] // zapis obecnych json data do Heliosu
    [MVCHTTPMethod([httpPOST])]
    [MVCSwagSummary('Rootvin', 'Zapis JSON dat do db Heliosu', 'RTNZapisJSONDoHeliosu')]
    [MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
    procedure ZapisJSONDoHeliosu (CTX: TWebContext);

//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/nactijson')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Nacteni data ve formatu JSON z Heliosu (dle předaného požadavku)', 'RTNNactiJsonData')]
    function NactiJSONDataZHeliosu (CTX: TWebContext): string;

//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/prikazymichani')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrati ID prikazu pro micharnu', 'RTNGetPrikazyProMicharnu')]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje pro které je těsto mícháno', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)]
    procedure GetPrikazyProMicharnu ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                                     [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string='';
                                     [MVCFromQueryString('datumod', '')] odDatum: string='';
                                     [MVCFromQueryString('datumdo', '')] doDatum: string='';
                                     [MVCFromQueryString('spustene', '0')] spustene: string=''
                                    );

//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/prikazyewb')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrati ID prikazu pro stroj EWB', 'RTNGetPrikazyProEWB')]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)]
    [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace maceni', ptString, false)]
    procedure GetPrikazyProEWB ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                                [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string='';
                                [MVCFromQueryString('material', '0')] material: string='';
                                [MVCFromQueryString('datumod', '')] odDatum: string='';
                                [MVCFromQueryString('datumdo', '')] doDatum: string='';
                                [MVCFromQueryString('spustene', '0')] spustene: string=''
                               );

//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/prikazymaceni')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro máčírnu', 'RTNGetPrikazyProMacirnu')]
//    [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (2=mĂˇÄŤĂ­rna)', ptString, false)]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje pro které je těsto mícháno', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)]
    [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace maceni', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)]
    procedure GetPrikazyProMacirnu ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                                    [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string='';
                                    [MVCFromQueryString('operace', '0')] operace: string='';
                                    [MVCFromQueryString('material', '0')] material: string='';
                                    [MVCFromQueryString('datumod', '')] odDatum: string='';
                                    [MVCFromQueryString('datumdo', '')] doDatum: string='';
                                    [MVCFromQueryString('spustene', '0')] spustene: string=''
                                   );

//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/prikazybaleni')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro balení', 'RTNGetPrikazyProBaleni')]
    [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (3=balení)', ptString, false)]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)]
    [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace baleni', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)]
    procedure GetPrikazyProBaleni ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                                   [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string='';
                                   [MVCFromQueryString('operace', '0')] operace: string='';
                                   [MVCFromQueryString('material', '0')] material: string='';
                                   [MVCFromQueryString('datumod', '')] odDatum: string='';
                                   [MVCFromQueryString('datumdo', '')] doDatum: string='';
                                   [MVCFromQueryString('spustene', '0')] spustene: string=''
                                  );

    [MVCPath('/prikazybalicka')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů pro baličku BAL-xx', 'RTNGetPrikazyProBalicku')]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '0=bez operaci (default) / 1=vcetne operaci', ptString, false)]
    [MVCSwagParam(plQuery, 'material', '0=bez materialu (default) / 1=vcetne materialu pro operace baleni', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spustene, tj. ty, co maji svou operaci v neukoncene evidenci operaci', ptString, false)]
    procedure GetPrikazyProBalicku ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                                    [MVCFromQueryString('operace', '0')] operace: string='';
                                    [MVCFromQueryString('material', '0')] material: string='';
                                    [MVCFromQueryString('datumod', '')] odDatum: string='';
                                    [MVCFromQueryString('datumdo', '')] doDatum: string='';
                                    [MVCFromQueryString('spustene', '0')] spustene: string=''
                                   );


//    [MVCDoc('Pomoci GET vraci json data z Heliosu')]
    [MVCPath('/prikazy')] // vrati JSON data podle pozadovaneho typu (json req)
    [MVCHTTPMethod([httpGET])]
    [MVCProduces(TMVCMediaType.APPLICATION_JSON)]
    [MVCSwagSummary('Rootvin', 'Vrátí ID příkazů podle druhu', 'RTNGetPrikazyProMacirnu')]
    [MVCSwagParam(plQuery, 'typprikazu', 'Typy příkazu (0=obecné / 1=míchárna / 2=máčírna)', ptString, false)]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, filtr na příkazy, v jejichž operacích je dané pracoviště›', ptString, false)]
    [MVCSwagParam(plQuery, 'datumod', 'Datum od ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'datumdo', 'Datum do ve formĂˇtu RRRRMMDD', ptString, false)]
    procedure GetPrikazy ([MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                          [MVCFromQueryString('idpracoviste', '')] sIdPracoviste: string='';
                          [MVCFromQueryString('typprikazu', '0')] sTypPrikazu: string='';
                          [MVCFromQueryString('datumod', '')] odDatum: string='';
                          [MVCFromQueryString('datumdo', '')] doDatum: string=''
                         );
  end;




  [MVCPath('/sdserver/doklad')]
  TGatemaSDDokladController = class(TBaseController)
   strict private
    FSelfSvc: TGatemaSDDokladService;
   strict protected
    function GetGatemaSDDokladService: TGatemaSDDokladService;
   public
    destructor Destroy; override;

    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad', 'VracĂ­ hlaviÄŤku dokladĹŻ SD Serveru', 'GatemaSDDokladyGetAll')]
    [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se zĂˇkladnĂ­mi Ăşdaji', ptString, false)]
    procedure GetAll ([MVCFromQueryString('od', '')] odDatum: string='';
                      [MVCFromQueryString('seznam', '')] jenSeznam: string='0'
                     );

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad', 'Vrací metadata dokladu SD Serveru', 'GatemaSDDokladyGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad', 'Vrací data dokladu SD Serveru', 'GatemaSDDokladyGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
    [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
    [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu', ptString, false)]
    [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
    [MVCSwagParam(plQuery, 'format', 'FormĂˇt (1=dokladOZ)', ptString, false)]
    [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'do', 'Datum do ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
    [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
    procedure GetByID(id: string='';
                      [MVCFromQueryString('typdokl', '')] typDokl: string='';
                      [MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
                      [MVCFromQueryString('sklad', '')] sklad: string='';
                      [MVCFromQueryString('format', '')] formatX: string='';
                      [MVCFromQueryString('od', '')] odDatum: string='';
                      [MVCFromQueryString('do', '')] doDatum: string='';
                      [MVCFromQueryString('seznam', '')] jenSeznam: string='0'
                     );

  end;



  [MVCPath('/sdserver/dokladoz')]
  TGatemaSDDokladOZController = class(TBaseController)
   strict private
    FSelfSvc: TSDGDokladOZService;
   strict protected
    function GetSDGDokladOZService: TSDGDokladOZService;
   public
    destructor Destroy; override;

    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací hlavičku dokladů OZ s vazbou na SD Server', 'GatemaSDDokladyOZGetAll')]
    [MVCSwagParam(plQuery, 'od', 'Datum od ve formátu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
    procedure GetAll([MVCFromQueryString('od', '')] odDatum: string='';
                     [MVCFromQueryString('seznam', '')] jenSeznam: string='0'
                    );

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací metadata', 'GatemaSDDokladyOZGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD doklad OZ', 'Vrací data dokladu OZ s vazbou na SD Server', 'GatemaSDDokladyOZGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID dokladu', ptString, false)]
    [MVCSwagParam(plQuery, 'typdokl', 'Typ dokladu', ptString, false)]
    [MVCSwagParam(plQuery, 'druhpohybu', 'Druh pohybu', ptString, false)]
    [MVCSwagParam(plQuery, 'sklad', 'Sklad', ptString, false)]
    [MVCSwagParam(plQuery, 'format', 'FormĂˇt (1=dokladOZ)', ptString, false)]
    [MVCSwagParam(plQuery, 'od', 'Datum od ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'do', 'Datum do ve formĂˇtu RRRRMMDD', ptString, false)]
    [MVCSwagParam(plQuery, 'seznam', '1=jen seznam se základními údaji', ptString, false)]
    [MVCSwagResponses(200, 'Success', TGatemaSDDoklad, true)]
    procedure GetByID (id: string='';
                       [MVCFromQueryString('typdokl', '')] typDokl: string='';
                       [MVCFromQueryString('druhpohybu', '')] druhPohybu: string='';
                       [MVCFromQueryString('sklad', '')] sklad: string='';
                       [MVCFromQueryString('format', '')] formatX: string='';
                       [MVCFromQueryString('od', '')] odDatum: string='';
                       [MVCFromQueryString('do', '')] doDatum: string='';
                       [MVCFromQueryString('seznam', '')] jenSeznam: string='0'
                      );

  end;



  [MVCPath('/sdserver/scandata')]
  TGatemaSDScanDataController = class(TBaseController)
   strict private
    FSelfSvc: TGatemaSDScanDataService;
   strict protected
    function GetGatemaSDScanDataService: TGatemaSDScanDataService;
   public
    destructor Destroy; override;

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD ScanData', 'Vrací metadata', 'GatemaSDScanDataGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('GatemaSD ScanData', 'Vrací naskenovaná data', 'GatemaSDScanDataGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID scan data', ptString, false)]
    [MVCSwagParam(plQuery, 'iddoklad', 'ID dokladu SD', ptString, false)]
    [MVCSwagResponses(200, 'Success', TGatemaSDScanData, true)]
    procedure GetByID(id: string='';
                      [MVCFromQueryString('iddoklad', '')] iddoklad: string=''
                     );
  end;




implementation
uses
 FireDAC.Stan.Option,
 FireDAC.Comp.Client,
 FireDAC.Stan.Param,
 MVCFramework.FireDAC.Utils,
 MVCFramework.DataSet.Utils,
 System.StrUtils,
 System.SysUtils,
 System.JSON,
 JsonDataObjects,
 Winapi.ActiveX,
 uDataMod,
 Quick.Logger;

const
 selSloupce = '';



 { TGatemaSDDokladOZController }

 destructor TGatemaSDDokladOZController.Destroy;
  begin
   FSelfSvc.Free;
   inherited;
  end;



 function TGatemaSDDokladOZController.GetSDGDokladOZService: TSDGDokladOZService;
  begin
   inherited;
   if not Assigned(FSelfSvc) then
    FSelfSvc:= TSDGDokladOZService.Create(datMod);
   result:= FSelfSvc;
  end;



 procedure TGatemaSDDokladOZController.GetAll (odDatum: string=''; jenSeznam: string='0');
  var params: TDictionary<string, string>;
  begin
   params:= TDictionary<string, string>.Create;
   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    params.Add('seznam', '1');

   try
     try
       Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
      except
       RenderStatusMessage (200);
{
       on E: EServiceException do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
       on E:Exception do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
}
     end;
    finally
     params.Free;
   end;
  end;




 procedure TGatemaSDDokladOZController.GetByID (id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
                                                jenSeznam: string='0');
  var iId: 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;
   if (iId>0) then
    params.Add('id', iId.ToString);

   typDokl:= sanitizeSQLString(sklad);
   if (typDokl<>'') then
    params.Add('typDokladu', typDokl);

   druhPohybu:= sanitizeSQLString(sklad);
   if (druhPohybu<>'') then
    params.Add('druhPohybu', druhPohybu);

   formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
   if (formatX<>'') then
    if (formatX='1') then
     params.Add('format', formatX);

   sklad:= sanitizeSQLString(sklad);
   if (sklad<>'') then
    params.Add('sklad', sklad);

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    params.Add('seznam', '1');

   try
     try
       Render(ObjectDict().Add('data', GetSDGDokladOZService.GetByParams(params))); // viz uSvcCustom.pas
      except
       RenderStatusMessage (200);
{
       on E: EServiceException do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
       on E:Exception do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
}
     end;
    finally
     params.Free;
   end;
  end;




 procedure TGatemaSDDokladOZController.GetMeta;
  begin
   try
     Render(ObjectDict().Add('data', GetSDGDokladOZService.GetMeta));
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
     begin
       raise EMVCException.Create(E.Message, '', 0, 200);
     end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;






 { TGatemaSDDokladController }

 destructor TGatemaSDDokladController.Destroy;
  begin
   FSelfSvc.Free;
   inherited;
  end;


 function TGatemaSDDokladController.GetGatemaSDDokladService: TGatemaSDDokladService;
  begin
   inherited;
   if not Assigned(FSelfSvc) then
    FSelfSvc:= TGatemaSDDokladService.Create(datMod);
   result:= FSelfSvc;
  end;




 procedure TGatemaSDDokladController.GetAll (odDatum: string=''; jenSeznam: string='0');
  var params: TDictionary<string, string>;
  begin
   params:= TDictionary<string, string>.Create;
   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    params.Add('seznam', '1');

   try
     try
       Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
      except
        RenderStatusMessage (200);
{
      on E: EServiceException do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
       on E:Exception do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
 }
     end;
    finally
     params.Free;
   end;
  end;




 procedure TGatemaSDDokladController.GetByID (id: string=''; typDokl: string=''; druhPohybu: string=''; sklad: string=''; formatX: string=''; odDatum: string=''; doDatum: string='';
                                             jenSeznam: string='0');
  var iId: 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;
   if (iId>0) then
    params.Add('id', iId.ToString);

   typDokl:= sanitizeSQLString(sklad);
   if (typDokl<>'') then
    params.Add('typDokladu', typDokl);

   druhPohybu:= sanitizeSQLString(sklad);
   if (druhPohybu<>'') then
    params.Add('druhPohybu', druhPohybu);

   formatX:= sanitizeSQLString(formatX); // pro zobrazeni jako DokladOZ
   if (formatX<>'') then
    if (formatX='1') then
     params.Add('format', formatX);

   sklad:= sanitizeSQLString(sklad);
   if (sklad<>'') then
    params.Add('sklad', sklad);

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    params.Add('seznam', '1');

   try
     try
       Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetByParams(params))); // viz uSvcCustom.pas
      except
       RenderStatusMessage (200);
{
       on E: EServiceException do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
       on E:Exception do
        begin
         raise EMVCException.Create(E.Message, '', 0, 200);
        end;
}
     end;
    finally
     params.Free;
   end;
  end;




 procedure TGatemaSDDokladController.GetMeta;
  begin
   try
     Render(ObjectDict().Add('data', GetGatemaSDDokladService.GetMeta));
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
     begin
       raise EMVCException.Create(E.Message, '', 0, 200);
     end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;





{ TGatemaSDScanDataController }

 destructor TGatemaSDScanDataController.Destroy;
  begin
   FSelfSvc.Free;
  end;

 function TGatemaSDScanDataController.GetGatemaSDScanDataService: TGatemaSDScanDataService;
  begin
   inherited Create;
   if not Assigned(FSelfSvc) then
    FSelfSvc:= TGatemaSDScanDataService.Create(datMod);
   result:= FSelfSvc;
  end;



 procedure TGatemaSDScanDataController.GetByID (id: string=''; iddoklad: string='');
  var iId: 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;
   if (iId>0) then
    params.Add('id', iId.ToString);

   try
     Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetByParams(params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;



 procedure TGatemaSDScanDataController.GetMeta;
  begin
   try
     Render(ObjectDict().Add('data', GetGatemaSDScanDataService.GetMeta));
   except
       RenderStatusMessage (200);
{
     on E: EServiceException do
     begin
       raise EMVCException.Create(E.Message, '', 0, 200);
     end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;









{ TRTNController }
 destructor TRTNController.Destroy;
  begin
   FSelfSvc.Free;
   inherited;
  end;



 function TRTNController.GetRTNService: TRTNService;
  begin
   inherited;
   if not Assigned(FSelfSvc) then
    FSelfSvc:= TRTNService.Create (datMod);
   result:= FSelfSvc;
  end;




 procedure TRTNController.ZapisJSONDoHeliosu (CTX: TWebContext);
  var respData, jsonData: string;
//      o: System.JSON.TJSONObject;
  begin
   respData:= '';
   try
     jsonData:= CTX.Request.Body.Trim;
     if (jsonData<>'') then
      GetRTNService.ZapisJsonDoHeliosu(jsonData, respData);
     ResponseStatus(HTTP_STATUS.OK, 'OK');
     Render(respData);
    except
       RenderStatusMessage (200);
   end;
  end;




 function TRTNController.NactiJSONDataZHeliosu (CTX: TWebContext): string;
  var respData, jsonData: string;
//      o: System.JSON.TJSONObject;
  begin
   result:= '';
   respData:= '';
   try
     jsonData:= CTX.Request.Body.Trim;
     if (jsonData<>'') then
      result:= GetRTNService.NactiDataZHeliosu (jsonData, respData);
     ResponseStatus(HTTP_STATUS.OK, 'OK');
     Render(respData);
    except
     RenderStatusMessage (200);
    end;
  end;





 procedure TRTNController.GetPrikazyProEWB (sIdStroj: string = ''; sIDPracoviste: string=''; material: string=''; odDatum: string = ''; doDatum: string = '';
                                            spustene: string='');
  var params: TDictionary<string, string>;
      idStroj: integer;
  begin
   params:= TDictionary<string, string>.Create;

   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);

   material:= sanitizeSQLString(material);
   if (material='1') then
    params.Add('material', material);

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   spustene:= sanitizeSQLString(spustene);
   if (spustene='1') then
    params.Add('spustene', '1');


   params.Add('typ', '5');

   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;




 procedure TRTNController.GetPrikazyProMicharnu (sIdStroj: string = ''; sIDPracoviste: string=''; odDatum: string = ''; doDatum: string = ''; spustene: string='');
  var params: TDictionary<string, string>;
      idStroj: integer;
  begin
   params:= TDictionary<string, string>.Create;

   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   spustene:= sanitizeSQLString(spustene);
   if (spustene='1') then
    params.Add('spustene', '1');


   params.Add('typ', '1');

   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;




 procedure TRTNController.GetPrikazyProMacirnu (sIdStroj: string = ''; sIDPracoviste: string=''; operace: string=''; material: string='';
                                                odDatum: string = ''; doDatum: string = ''; spustene: string='');
  var params: TDictionary<string, string>;
      idStroj: integer;
  begin
   params:= TDictionary<string, string>.Create;

   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);

   operace:= sanitizeSQLString(operace);
   if (operace='1') then
    params.Add('operace', '1');

   material:= sanitizeSQLString(material);
   if (material='1') then
    params.Add('material', '1');


   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   spustene:= sanitizeSQLString(spustene);
   if (spustene='1') then
    params.Add('spustene', '1');


//   params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - ÄŚoko%'' OR Nazev LIKE N''Z - PĹ™ep%'''));
//   params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''Z - ÄŚoko%'' OR Nazev LIKE N''Z - PĹ™ep%'''));
   params.Add('typ', '2');

   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;




 procedure TRTNController.GetPrikazyProBalicku (sIdStroj: string = ''; operace: string=''; material: string='';
                                                odDatum: string = ''; doDatum: string = ''; spustene: string='');
  var params: TDictionary<string, string>;
      idStroj: integer;
  begin
   params:= TDictionary<string, string>.Create;
   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);

   operace:= sanitizeSQLString(operace);
   if (operace='1') then
    params.Add('operace', '1');

   material:= sanitizeSQLString(material);
   if (material='1') then
    params.Add('material', '1');

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   spustene:= sanitizeSQLString(spustene);
   if (spustene='1') then
    params.Add('spustene', '1');


//   params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - ÄŚoko%'' OR Nazev LIKE N''Z - PĹ™ep%'''))
//   params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''%BaliÄŤka%'''));
   params.Add('typ', '4');

   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;



 procedure TRTNController.GetPrikazyProBaleni (sIdStroj: string = ''; sIDPracoviste: string=''; operace: string=''; material: string='';
                                               odDatum: string = ''; doDatum: string = ''; spustene: string='');
  var params: TDictionary<string, string>;
      idStroj: integer;
  begin
   params:= TDictionary<string, string>.Create;

   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);

   operace:= sanitizeSQLString(operace);
   if (operace='1') then
    params.Add('operace', '1');

   material:= sanitizeSQLString(material);
   if (material='1') then
    params.Add('material', '1');

   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);

   spustene:= sanitizeSQLString(spustene);
   if (spustene='1') then
    params.Add('spustene', '1');


//   params.Add('idpracovist', datMod.SQLIDsToString (tblCPrac, 'Nazev LIKE N''Z - ÄŚoko%'' OR Nazev LIKE N''Z - PĹ™ep%'''))
   params.Add('idstroju', datMod.SQLIDsToString (tblCisStroj, 'Nazev LIKE N''%BAL%'''));
   params.Add('typ', '3');

   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;




 procedure TRTNController.GetPrikazy (sIdStroj: string = ''; sIdPracoviste: string = ''; sTypPrikazu: string=''; odDatum: string = ''; doDatum: string = '');
  var params: TDictionary<string, string>;
      idStroj, idPracoviste, typVPr: integer;
  begin
   params:= TDictionary<string, string>.Create;

   sIdStroj:= sanitizeSQLString (sIdStroj);
   idStroj:= 0;
   if (sIdStroj<>'') then
    if not(TryStrToInt (sIdStroj, idStroj)) then
     idStroj:= 0;
   if (idStroj>0) then
    params.Add('idstroj', idStroj.ToString);


   sIdPracoviste:= sanitizeSQLString (sIdPracoviste);
   idPracoviste:= 0;
   if (sIdPracoviste<>'') then
    if not(TryStrToInt (sIdPracoviste, idPracoviste)) then
     idPracoviste:= 0;
   if (idPracoviste>0) then
    params.Add('idpracoviste', idPracoviste.ToString);


   sTypPrikazu:= sanitizeSQLString (sTypPrikazu);
   typVPr:= 0;
   if (sTypPrikazu<>'') then
    if not(TryStrToInt (sTypPrikazu, typVPr)) then
     typVPr:= 0;
   params.Add('typ', typVPr.ToString);


   odDatum:= sanitizeSQLString(odDatum);
   if (odDatum<>'') then
    params.Add('odDatum', odDatum);

   doDatum:= sanitizeSQLString(doDatum);
   if (doDatum<>'') then
    params.Add('doDatum', doDatum);


   try
     Render(ObjectDict().Add('data', GetRTNService.GetPrikazy (params))); // viz uSvcCustom.pas
    except
       RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
     on E:Exception do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
}
   end;
  end;


end.
