unit uCtrlVyroba;

interface
{$I 'GlobalDefs.inc'}


uses
  MVCFramework,
  MVCFramework.Logger,
  MVCFramework.Commons,
  MVCFramework.Serializer.Commons,
  uCtrlBase,
  uHeoObj_Vyroba,
  uHeoObj_QMS
{$IFDEF SWAGGER}
  ,MVCFramework.Swagger.Commons
{$ENDIF}
  ;

const
{$I globalConsts.inc}

type
  [MVCPath('/vyroba/prikaz')]
  [MVCPath('/vyrobniprikaz')]
  TVyrobniPrikazController = class(TBaseController)
  public
    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí metadata', 'VyrobniPrikazGetMeta')]
    procedure GetMeta;

    [MVCPath('')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam výrobních příkazů', 'VyrobniPrikazGetAll')]
    [MVCSwagParam(plQuery, 'stav', 'Příkazy jen v požadovaném stavu (číselně, např. 30=zadáno)', ptString, false)]
    [MVCSwagParam(plQuery, 'rada', 'Řada výrobních příkazů', ptString, false)]
    [MVCSwagParam(plQuery, 'prikaz', 'Číslo vvýrobního', ptString, false)]
    [MVCSwagParam(plQuery, 'skdilce', 'Skupina karet dílce', ptString, false)]
    [MVCSwagParam(plQuery, 'iddilce', 'ID vyráběného dílce', ptString, false)]
    [MVCSwagParam(plQuery, 'cislozakazky', 'Číslo zakázky', ptString, false)]
    [MVCSwagParam(plQuery, 'zakazmodif', 'ID zakázkové modifikace', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '1=vrátí seznam výrobní operace', ptString, false, '0')]
    [MVCSwagParam(plQuery, 'material', '1=vrátí seznam materiálových požadavků', ptString, false, '0')]
    [MVCSwagParam(plQuery, 'spustene', '1=jen spuštené, tj. ty, co mají svou operaci v neukončené Evidenci rozpracovaných operací', ptString, false)]
    [MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')]
    [MVCSwagResponses(200, 'Success', TVyrobniPrikaz, true)]
    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetAll ([MVCFromQueryString('stav', '')] stav: string='';
                      [MVCFromQueryString('rada', '')] radaVPr: string='';
                      [MVCFromQueryString('prikaz', '')] cisloVPr: string='';
                      [MVCFromQueryString('skdilce', '')] skDilce: string='';
                      [MVCFromQueryString('iddilce', '')] sIdDilce: string='';
                      [MVCFromQueryString('cislozakazky', '')] cisloZak: string='';
                      [MVCFromQueryString('zakazmodif', '')] sIdZakModif: string='';
                      [MVCFromQueryString('operace', '0')] operace: string='';
                      [MVCFromQueryString('material', '0')] material: string='';
                      [MVCFromQueryString('spustene', '0')] spustene: string='';
                      [MVCFromQueryString('debug', '0')] debug: string=''
                     );

// kusovnik
//    [MVCDoc('VrĂˇtĂ­ meta informace kusovnĂ­ku')]
    [MVCPath('/meta/tpvkusovnik')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí meta informace TPV kusovníku', 'VyrobniPrikazGetTPVKusovnikMeta')]
    procedure GetMetaKusovniku;

//    [MVCDoc('VratĂ­ kusovnĂ­k výrobního příkazu')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCPath('/($id)/tpvkusovnik')]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí kusovník z TPV pro dílec výrobního příkazu *** požadavek vrátí v Mnozstvi *** pokud není zadán parametr "pocetmj", vrátí množství na 1 MJ', 'VyrobniPrikazGetTPVKusovnik')]
    [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, false)]
    [MVCSwagParam(plQuery, 'pocetmj', 'Na kolik MJ příkazu vrátí TPV kusovník', ptString, false, '1')]
//    [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false)]
    [MVCSwagResponses(200, 'Success', TTPVKusovnikDilce, false)]
    procedure GetKusovnik (id: string='';
                           [MVCFromQueryString('pocetmj', '1')] sMnozReq: string='1';
                           [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true
                          );

    [MVCPath('/($id)/dokladyoz')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam dokladů OZ k danému výrobnímu příkazu', 'VyrobniPrikazGetDokladyOZ')]
    [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)]
    [MVCSwagParam(plQuery, 'polozky', 'Doklady vÄŤetnÄ› poloĹľek', ptString, false, '1')]
    procedure GetDokladyOZ (id: string='0';
                            [MVCFromQueryString('polozky', '')] polozky: string='1'
                           );

    [MVCPath('/($id)/dokumenty')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam dokumentů k výrobnímu příkazu', 'VyrobniPrikazGetDokumenty')]
    [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)]
    [MVCSwagParam(plQuery, 'jenSeznam', 'Jen seznam (bez obsahu dokumentu)', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'pripona', 'Přípona souboru dokumentu', ptString, false)]
    [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')]
    procedure GetDokumenty (id: string='0';
                            [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1';
                            [MVCFromQueryString('pripona', '')] pripona: string='';
                            [MVCFromQueryString('base64', '')] base64: string='0'
                           );

    [MVCPath('/($id)/dokumentace')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Výrobní dokumentace k výrobnímu příkazu', 'VyrobniPrikazGetDokumentaci')]
    [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)]
    [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'oblast', '1=vyráběný dílec, 3=výrobní příkaz', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'operace', 'číslo operace', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')]
    procedure GetDokumenaci (id: string='0';
                             [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1';
                             [MVCFromQueryString('operace', '')] operace: string='';
                             [MVCFromQueryString('oblast', '')] oblast: string='';
                             [MVCFromQueryString('base64', '')] base64: string='0'
                            );

    [MVCPath('/($id)/vyssiprikazy')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí seznam (hlavičku) vyšších příkazů', 'VyrobniPrikazGetVyssiPrikazy')]
    [MVCSwagParam(plPath, 'id', 'ID výrobního příkazu', ptString, true)]
    procedure GetVyssiPrikazy (id: string='0');


    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - výrobní příkaz', 'Vrátí výrobní příkaz', 'VyrobniPrikazGetByID')]
    [MVCSwagResponses(200, 'Success', TVyrobniPrikaz)]
    [MVCSwagParam(plPath, 'id', 'ID příkazu', ptString, false)]
    [MVCSwagParam(plQuery, 'stav', 'Příkazy jen v požadovaném stavu (číselně, např. 30=zadáno)', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '1=vrátí seznam výrobní operace', ptString, false, '0')]
    [MVCSwagParam(plQuery, 'material', '1=vrátí seznam materiálových požadavků', ptString, false, '0')]
    [MVCSwagParam(plQuery, 'debug', '1=zapise SQL query do log souboru', ptString, false, '0')]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('stav', '')] stav: string='';
                       [MVCFromQueryString('operace', '0')] operace: string='';
                       [MVCFromQueryString('material', '0')] material: string='';
                       [MVCFromQueryString('debug', '0')] debug: string=''
                      );
  end;




  [MVCPath('/vyroba/prikaz/material')]
  [MVCPath('/vyroba/materialproprikazy')]
  [MVCPath('/materialprikazu')]
//  [MVCDoc('Seznam materiálovĂ˝ch poĹľadavkĹŻ výrobních příkazů')]
//  [MVCSwagSummary('MaterialPrikazu', 'materiálovĂ© poĹľadavky příkazu', '')]
  TMaterialPrikazuController = class(TBaseController)
  public
// metadata TabPrKVazby
    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí meta informace', 'MaterialPrikazuGetMeta')]
    procedure GetMeta;

    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí seznam všech materiálových požadavků', 'MaterialPrikazuGetAll')]
    [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptString, false)]
    [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false, '1')]
    [MVCSwagParam(plQuery, 'stavprikazu', 'Materiály jen pro příkazy ve stavu (30=zadáno)', ptString, false, '30')]
    [MVCSwagParam(plQuery, 'sk', 'Skupina karet materiálu', ptString, false)]
    [MVCSwagParam(plQuery, 'rc', 'Registračí číslo materiálu', ptString, false)]
    [MVCSwagResponses(200, 'Success', TMaterialPrikazu, true)]
//    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetAll ([MVCFromQueryString('idprikaz', '0')] sIdVPr: string='';
                      [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true;
                      [MVCFromQueryString('stavprikazu', '30')] stavPrikazu: string='30';
                      [MVCFromQueryString('sk', '')] skMat: string='';
                      [MVCFromQueryString('rc', '')] rcMat: string=''
                     );

//    [MVCDoc('Vrátí data poĹľadavku na materiály a polotovary')]
    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí materiály a polotovary příkazu', 'MaterialPrikazuGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID materiálového požadavku', ptString, false)]
    [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptString, false)]
    [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptString, false)]
    [MVCSwagResponses(200, 'Success', TMaterialPrikazu, true)]
//    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('idprikaz', '0')] sIdVPr: string='0';
                       [MVCFromQueryString('jenplatne', '0')] jenPlatne: string='0'
                      );

// kusovnik
//    [MVCDoc('Vrátí meta informace kusovnĂ­ku')]
    [MVCPath('/kusovnik/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - materiálové požadavky příkazu', 'Vrátí meta informace kusovníku', 'MaterialPrikazuGetKusovnikMeta')]
    procedure GetMetaKusovniku;

  end;



  [MVCPath('/vyroba/vyrobnioperace')]
  [MVCPath('/vyroba/operace')]
  [MVCPath('/vyrobnioperace')]
//  [MVCDoc('Operace výrobního příkazu')]
  TVyrobniOperaceController = class(TBaseController)
  public
//    [MVCDoc('Vrátí seznam výrobních operací')]
//    [MVCDoc('Vrátí všechny platné operace výrobních příkazů')]
    [MVCPath]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí seznam výrobních operací', 'VyrobniOperaceGetAll')]
    [MVCSwagParam(plQuery, 'barcode', 'Čárový kód operace', ptString, false)]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', 'Číslo operace', ptString, false)]
    [MVCSwagParam(plQuery, 'rada', 'Řada výrobných příkazů', ptString, false)]
    [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu', ptInteger, false)]
    [MVCSwagParam(plQuery, 'stavprikazu', 'Příkaz operace jen v požadovaném stavu (číselně, např. 30=zadáno)', ptString, false)]
    [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné operace', ptBoolean, false)]
    [MVCSwagParam(plQuery, 'jenkoop', 'Jen kooperační operace', ptBoolean, false)]
    [MVCSwagParam(plQuery, 'ziveprikazy', 'Jen z neuzavřených příkazů', ptBoolean, false)]
    [MVCSwagResponses(200, 'Success', TVyrobniOperace)]
//    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetAll(
                      [MVCFromQueryString('barcode', '')] barcode: string='';
                      [MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                      [MVCFromQueryString('operace', '')] operace: string='';
                      [MVCFromQueryString('rada', '')] radaVPr: string='';
                      [MVCFromQueryString('idprikaz', '0')] sIdVPr: string='';
                      [MVCFromQueryString('stavprikazu', '')] stavVPr: string='';
                      [MVCFromQueryString('jenkoop', false)] jenKooperace: boolean=false;
                      [MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true;
                      [MVCFromQueryString('ziveprikazy', true)] jenZiveVPr: boolean=true
                    );

//    [MVCDoc('Vrátí metadata operace výrobního příkazu')]
    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí meta informace', 'VyrobniOperaceGetMeta')]
    procedure GetMeta;


//    [MVCDoc('Vrátí údaje výrobní operace dle jejĂ­ho ID')]
    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výrobní příkaz - operace', 'Vrátí detail výrobní operace', 'VyrobniOperaceGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID operace postupu', ptString, false)]
    [MVCSwagParam(plQuery, 'barcode', 'Čárový kód operace', ptString, false)]
    [MVCSwagParam(plQuery, 'kp', '1=zobrazit kontrolní plány operace', ptString, false)]
    [MVCSwagResponses(200, 'Success', TVyrobniOperace)]
//    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('barcode', '')] barcode: string= '';
                       [MVCFromQueryString('kp', '')] kp: string=''
                      );

//    [MVCDoc('Pomocí POST zapíše data DataZone tasků (kontroluje duplicitu, vrací NEW, OLD nebo NOT OK s textem chyby)')]
    [MVCPath('/zapisoperaci')] // zapis operaci DZ tasky
    [MVCHTTPMethod([httpPOST])]
    [MVCSwagSummary('Výrobní příkaz - operace DZ', 'Zápis DataZone tasků', 'VyrobaZapisDZTasku')]
    [MVCConsumes(TMVCMediaType.APPLICATION_JSON)]
    procedure VyrobaZapisDZTasku (CTX: TWebContext);

//    [MVCDoc('Vrátí seznam nezaevidovaných DataZone tasků (nezapsaných v Evidenci operací)')]
    [MVCPath('/zapisoperaci/neevidovane')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výrobní příkaz - operace DZ', 'Vrátí seznam nezaevidovaných DataZone tasků', 'VyrobaZapisDZTaskuNeevidovane')]
    [MVCSwagParam(plQuery, 'od', 'Datum od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    [MVCSwagParam(plQuery, 'do', 'Datum do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    procedure GetDZTaskyNeevidovane (
                                    [MVCFromQueryString('od', '')] odDatum: string='';
                                    [MVCFromQueryString('do', '')] doDatum: string=''
                                    );
  end;





  [MVCPath('/tpv/zakazkmodif')]
//  [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')]
  TTPVZakazkoveModifikaceController = class(TBaseController)
   public
    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí meta informace', 'VyrobaZakazModifGetMeta')]
    procedure GetMeta;

    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí zakázkové modifikace', 'VyrobaZakazModifGetAll')]
    [MVCSwagParam(plQuery, 'rada', 'Řada zakázkových modifikací', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVZakazkovaModifikace, true)]
    procedure GetAll ([MVCFromQueryString('rada', '')] rada: string=''
                     );
  end;






  [MVCPath('/tpv/zakazkmodifdilce')]
//  [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')]
  TTPVZakazkoveModifikaceDilceController = class(TBaseController)
   public
    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí meta informace', 'VyrobaZakazModifDilceGetMeta')]
    procedure GetMeta;

    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - zakázkové modifikace', 'Vrátí seznam dílců zakázkových modifikací', 'VyrobaZakazModifDilceGetAll')]
    [MVCSwagParam(plQuery, 'idkmen', 'ID kmen', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVZakazkovaModifikaceDilce, true)]
    procedure GetAll ([MVCFromQueryString('idkmen', '')] idkmen: string=''
                     );
  end;





  [MVCPath('/vyroba/kooperacniobjednavka')]
  [MVCPath('/kooperacniobjednavka')]
//  [MVCSwagSummary('KontrolniPostupy', 'KontrolnĂ­ postupy', '')]
  TKooperacniObjednavkaController = class(TBaseController)
   public
    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí seznam kooperačních objednávek', 'VyrobaKoopObjGetAll')]
    [MVCSwagParam(plQuery, 'rada', 'Řada kooperačních objednávek', ptString, false)]
    [MVCSwagParam(plQuery, 'corgkoop', 'Číslo organizace kooperanta', ptString, false)]
    [MVCSwagParam(plQuery, 'polozky', '1=včetně položek', ptString, false)]
    [MVCSwagParam(plQuery, 'od', 'Datum vystavení od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    [MVCSwagParam(plQuery, 'do', 'Datum vystavení do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    [MVCSwagResponses(200, 'Success', TKooperacniObjednavka, true)]
    procedure GetAll([MVCFromQueryString('rada', '')] rada: string='';
                     [MVCFromQueryString('corgkoop', '')] cisOrgKoop: string='';
                     [MVCFromQueryString('polozky', '0')] polozky: string='0';
                     [MVCFromQueryString('od', '')] odDatum: string='';
                     [MVCFromQueryString('do', '')] doDatum: string=''
                    );

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí meta informace', 'VyrobaKoopObjGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - kooperační objednávka', 'Vrátí detail kooperační objednávky', 'VyrobaKoopObjGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID kooperační objednávky', ptString, true)]
    [MVCSwagParam(plQuery, 'polozky', '1=včetně položek', ptString, false, '0')]
    [MVCSwagResponses(200, 'Success', TKooperacniObjednavka)]
    procedure GetByID(id: string='0';
                      [MVCFromQueryString('polozky', '0')] polozky: string='0'
                     );
  end;





  [MVCPath('/tpv/prednastprooperace')]
  [MVCPath('/ciselnik/tpv/prednastprooperace')]
//  [MVCDoc('TPV - přednastavení pro operace postupu')]
  [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Přednastavení pro operace postupu (TPV)', '')]
  TTPVPrednastaveniOperaciController = class(TBaseController)
   public
    [MVCPath('')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Seznam přednastavení pro operace postupu', 'TPVPrednastaveniOperaciGetAll')]
    [MVCSwagParam(plQuery, 'minimumdat', '1=zobrazí jen základní informace (default) / 0=zobrazení všech sloupců', ptString, false)]
{$IFDEF CUSTOM_CTRL_INCOSystems}
    [MVCSwagParam(plQuery, 'cislo', 'Předdefinované číslo z Přednastavení operace (ext.informace)', ptString, false)]
{$ENDIF}
    [MVCSwagResponses(200, 'Success', TTPVPrednastaveniOperaci, true)]
    procedure GetAll ([MVCFromQueryString('minimumdat', '1')] minimumDat: string=''
{$IFDEF CUSTOM_CTRL_INCOSystems}
                     ; [MVCFromQueryString('cislo', '')] cislo: string=''
{$ENDIF}
                     );

    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Vrací meta informace', 'TPVPrednastaveniOperaciGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - přednastavení pro operace postupu', 'Vrací detail přednastavení pro operace postupu', 'TPVPrednastaveniOperaciGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID přednastavení pro operace', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVPrednastaveniOperaci, false)]
    procedure GetByID (id: string='0');
  end;





  [MVCPath('/tpv/ciselnik/pracoviste')]
  [MVCPath('/ciselnik/tpv/pracoviste')]
//  [MVCDoc('TPV - ÄŤĂ­selnĂ­k pracoviĹˇĹĄ')]
  [MVCSwagSummary('TPV - číselník pracovišť', 'číselník pracovišť (TPV)', '')]
  TTPVPracovisteController = class(TBaseController)
   public
    [MVCPath]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník pracovišť', 'Vrací seznam pracovišť', 'TPVPracovisteGetAll')]
    [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVPracoviste, true)]
    procedure GetAll;

    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník pracovišť', 'Vrátí meta informace', 'TPVPracovisteGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník pracovišť', 'Vrcí detail pracoviště', 'TPVPracovisteGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID pracoviště', ptString, true)]
    [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)]
    [MVCSwagParam(plQuery, 'frontaPrace', 'Zobrazit frontu práce daného pracoviště', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVPracoviste)]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('frontaPrace', '')] sFrontaPrace: string='';
                       [MVCFromQueryString('stredisko', '')] stredisko: string=''
                      );
  end;



  [MVCPath('/tpv/ciselnik/kooperace')]
  [MVCPath('/ciselnik/tpv/kooperace')]
//  [MVCDoc('TPV - ÄŤĂ­selnĂ­k kooperací')]
  TTPVCisKooperaciController = class(TBaseController)
  public
    [MVCPath('')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí čísleník kooperací', 'TPVCisKoopGetAll')]
    [MVCSwagParam(plQuery, 'rada', 'Řada kooperací', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVCisKoop, true)]
    [MVCSwagResponses(500, 'Internal Server Error')]
    procedure GetAll ([MVCFromQueryString('rada', '')] rada: string=''
                     );

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí metadata', 'TPVCisKoopGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník kooperací', 'Vrátí údaje kooperace', 'TPVCisKoopGetByID')]
    [MVCSwagResponses(200, 'Success', TTPVCisKoop)]
    [MVCSwagParam(plPath, 'id', 'ID kooperace', ptString, true)]
    [MVCSwagParam(plQuery, 'rada', 'Řada kooperací', ptString, false)]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('rada', '')] rada: string=''
                      );
  end;



  [MVCPath('/tpv/ciselnik/zmeny')]
  [MVCPath('/ciselnik/tpv/zmeny')]
//  [MVCDoc('TPV - ÄŤĂ­selnĂ­k zmÄ›novĂ˝ch Ĺ™Ă­zenĂ­')]
//  [MVCSwagSummary('TPV - ÄŤĂ­selnĂ­k zmÄ›novĂ˝ch Ĺ™Ă­zenĂ­', 'ÄŚĂ­selnĂ­k zmÄ›novĂ˝ch Ĺ™Ă­zenĂ­ (TPV)', '')]
  TTPVCiselnikZmenController = class(TBaseController)
  public
    [MVCPath]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrátí seznam změnových řízení', 'TPVCisZmenGetAll')]
    [MVCSwagParam(plQuery, 'rada', 'Řada změn', ptString, false)]
    [MVCSwagParam(plQuery, 'platne', 'Platné', ptString, false)]
    [MVCSwagParam(plQuery, 'datum', 'Datum platnosti', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVCiselnikZmen, true)]
    procedure GetAll([MVCFromQueryString('rada', '')] rada: string='';
                     [MVCFromQueryString('platne', '')] jenPlatne: string='';
                     [MVCFromQueryString('datum', '')] datPlatnosti: string=''
                    );

    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrací meta informace', 'TPVCisZmenGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník změnových řízení', 'Vrací změnové řízení', 'TPVCisZmenGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID kooperace', ptString, true)]
    [MVCSwagParam(plQuery, 'rada', 'Řada změn', ptString, false)]
    [MVCSwagParam(plQuery, 'platne', 'Platné', ptString, false)]
    [MVCSwagParam(plQuery, 'datum', 'Datum platnosti', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVCiselnikZmen)]
    procedure GetByID (id: string='0';
                       [MVCFromQueryString('rada', '')] rada: string='';
                       [MVCFromQueryString('platne', '')] jenPlatne: string='';
                       [MVCFromQueryString('datum', '')] datPlatnosti: string=''
                      );
  end;


  [MVCPath('/tpv/ciselnik/stroj')]
  [MVCPath('/ciselnik/tpv/stroj')]
//  [MVCDoc('TPV - ÄŤĂ­selnĂ­k strojĹŻ')]
//  [MVCSwagSummary('TPV - ÄŤĂ­selnĂ­k strojĹŻ', 'ÄŚĂ­selnĂ­k strojĹŻ (TPV)', '')]
  TTPVStrojController = class(TBaseController)
  public
    [MVCPath]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník strojů', 'Vrátí seznam strojů', 'TPVCisStrojuGetAll')]
    [MVCSwagParam(plQuery, 'idprac', 'ID pracoviště', ptString, false)]
    [MVCSwagParam(plQuery, 'prac', 'Kód pracoviště', ptString, false)]
    [MVCSwagParam(plQuery, 'stredisko', 'Středisko', ptString, false)]
    [MVCSwagResponses(200, 'Success', TTPVStroj, true)]
    procedure GetAll ([MVCFromQueryString('idprac', '')] idprac: string='';
                      [MVCFromQueryString('prac', '')] prac: string='';
                      [MVCFromQueryString('stredisko', '')] stredisko: string=''
                     );

    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - číselník strojů', 'Vrátí meta informace', 'TPVCisStrojuGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCDoc('Vrátí detail stroje')]
    [MVCSwagSummary('TPV - číselník strojů', 'Vrátí detail stroje', 'TPVCisStrojuGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID stroje', ptString, true)]
    [MVCSwagResponses(200, 'Success', TTPVStroj, false)]
    procedure GetByID (id: string='0');
  end;



  [MVCPath('/tpv/dilec')]
//  [MVCDoc('TPV - kusovnĂ­k  vyrĂˇbÄ›nĂ©ho dílce')]
//  [MVCSwagSummary('TPV - KusovnĂ­k', '(TPV) KusovnĂ­k', '')]
  TTPVKusovnikDilceController = class(TBaseController)
  public
    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - Kusovník', 'Vrátí meta informace dilce', 'TPVKusovnikDilceGetMeta')]
    procedure GetMeta;


    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - Kusovník', 'Vrátí dilec', 'TPVKusovnikDilceGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)]
    procedure GetByID (id: string='0');


    [MVCPath('/($id)/dokumentace')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - Kusovník', 'Výrobní dokumentace k dílci', 'TPVKusovnikGetDokumenaciDilce')]
    [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)]
    [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'operace', 'Číslo operace', ptString, false, '')]
    [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrátit v kódování BASE64', ptString, false, '0')]
    procedure GetDokumenaciDilce (id: string='0';
                                  [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1';
                                  [MVCFromQueryString('operace', '')] operace: string='';
                                  [MVCFromQueryString('base64', '')] base64: string='0'
                                 );
    [MVCPath('/($id)/kusovnik')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - Kusovník', 'Vrátí kusovník dílce', 'TPVKusovnikDilceGetKusovnik')]
    [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, false)]
    [MVCSwagParam(plQuery, 'pocetmj', 'Na kolik MJ dílce vrátí kusovník', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'alt', '1=včetně alternativ', ptString, false, '0')]
//    [MVCSwagParam(plQuery, 'jenplatne', 'Jen platné materiály', ptBoolean, false)]
    [MVCSwagResponses(200, 'Success', TTPVKusovnikDilce, true)]
    procedure GetKusovnik (id: string='';
                           [MVCFromQueryString('pocetmj', '1')] sMnozReq: string='1';
                           [MVCFromQueryString('alt', '')] alt: string=''
//                           ;[MVCFromQueryString('jenplatne', true)] jenPlatne: boolean=true
                         );
  end;






  [MVCPath('/tpv/dilec/postupy')]
//  [MVCDoc('TPV - technologickĂ© postupy vyrĂˇbÄ›nĂ©ho dílce')]
  TTPVOperaceDilceController = class(TBaseController)
  public
//    [MVCDoc('Vrátí seznam výrobních operací')]
//    [MVCDoc('Vrátí všechny platné operace výrobních příkazů')]
    [MVCPath]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - technologické postupy', 'Vrátí postupy vyráběných dílců', 'TPVOperaceDilceGetAll')]
    [MVCSwagParam(plQuery, 'vyssi', 'ID dílce', ptString, true)]
    procedure GetAll ([MVCFromQueryString('vyssi', '')] sIdDilce: string=''
                     );


    [MVCPath('/meta')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - technologické postupy', 'Vrátí meta informace', 'TPVOperaceDilceGetMeta')]
    procedure GetMeta;
  end;







  [MVCPath('/vyroba/evidenceoperaci')]
  [MVCPath('/evidenceoperaci')]
//  [MVCDoc('Výroba - evidence vyrobnich operací')]
//  [MVCSwagSummary('Výroba - evidence rozpracovanĂ˝ch operací', '(Výroba) Evidence rozpracovanĂ© operace', '')]
  TVyrobaEvidenceOperaciController = class(TBaseController)
  public
    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence výrobních operací', 'Vrátí meta informace', 'VyrobaEvidenceOperaciGetMeta')]
    procedure GetMeta;

    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence výrobních operací', 'Vrati Evidovanou vyrobni operaci', 'VyrobaEvidenceOperaciGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID evidované operace', ptString, true)]
    [MVCSwagResponses(200, 'Success', TVyrobaEvidovanaOperace, false)]
    procedure GetByID (id: string='0');
  end;






  [MVCPath('/vyroba/evidrozpracoperace')]
  [MVCPath('/evidrozpracoperace')]
//  [MVCDoc('Výroba - evidence rozpracovaných operací')]
//  [MVCSwagSummary('Výroba - evidence rozpracovaných operací', '(Výroba) Evidence rozpracované operace', '')]
  TVyrobaEvidRozpracOperaceController = class(TBaseController)
  public
    [MVCPath('/meta')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí meta informace', 'VyrobaEvidRozpracOperaceGetMeta')]
    procedure GetMeta;


    [MVCPath('/meta/radek')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí meta informace řádků/operací', 'VyrobaEvidRozpracOperaceRadekGetMeta')]
    procedure RadekGetMeta;


    [MVCPath('/($id)')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí hlavičku Evidence rozpracovaných operací', 'VyrobaEvidRozpracOperaceGetByID')]
    [MVCSwagParam(plPath, 'id', 'ID hlavičky rozpracovaných operací', ptString, true)]
    [MVCSwagResponses(200, 'Success', TEvidRozpracOperace, false)]
    procedure GetByID (id: string='0');

    [MVCPath('')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('Výroba - evidence rozpracovaných operací', 'Vrátí hlavičky Evidencí rozpracovaných operací', 'VyrobaEvidRozpracOperaceGetAll')]
    [MVCSwagParam(plQuery, 'datum', 'Datum případu evidence rozpracovaných operací', ptString, false)]
    [MVCSwagParam(plQuery, 'od', 'Datum vystavení od (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    [MVCSwagParam(plQuery, 'do', 'Datum vystavení do (formát RRRRMMDD / RRRRMMDDHHMM)', ptString, false)]
    [MVCSwagParam(plQuery, 'idprikaz', 'ID výrobního příkazu rozpracovaných operací', ptString, false)]
    [MVCSwagParam(plQuery, 'idstroj', 'ID stroje, na kterém jsou rozpracované operace', ptString, false)]
    [MVCSwagParam(plQuery, 'idpracoviste', 'ID pracoviště, na kterém jsou rozpracované operace', ptString, false)]
    [MVCSwagParam(plQuery, 'radaprikazu', 'Řada výrobních příkazů rozpracovaných operací', ptString, false)]
    [MVCSwagParam(plQuery, 'operace', '1=včetně seznamu rozpracovaných operací/řádků (default) / 0=bez seznamu operací', ptString, false)]
    [MVCSwagParam(plQuery, 'cislozamest', 'Osobní číslo zaměstnance', ptString, false)]
    [MVCSwagParam(plQuery, 'idzamest', 'ID zaměstnance', ptString, false)]
{$IFDEF CUSTOM_CTRL_INCOSystems}
    [MVCSwagParam(plQuery, 'datazoneid', 'Datazone ID "balíku"', ptString, false)]
{$ENDIF}
    [MVCSwagParam(plQuery, 'stav', 'Stav rozpracovanosti evidence (10=pořízeno, 20=zahájeno, 25=prostoj, 26=prostoj obsluhy, 27=prostoj stroje, 30=ukončeno, 40=uzavřeno)', ptString, false)]
    [MVCSwagResponses(200, 'Success', TEvidRozpracOperace, true)]
    procedure GetAll ([MVCFromQueryString('idprikaz', '')] sIdPrikaz: string='';
                      [MVCFromQueryString('idstroj', '')] sIdStroj: string='';
                      [MVCFromQueryString('idpracoviste', '')] sIdPrac: string=''; 
                      [MVCFromQueryString('radaprikazu', '')] radaPrikazu: string='';
                      [MVCFromQueryString('operace', '1')] operace: string='1';
                      [MVCFromQueryString('cislozamest', '')] sCisloZam: string='';
                      [MVCFromQueryString('idzamest', '')] sIdZam: string='';
                      [MVCFromQueryString('stav', '')] stavRozprac: string='';
                      [MVCFromQueryString('datum', '')] datum: string='';
                      [MVCFromQueryString('od', '')] odDatum: string='';
                      [MVCFromQueryString('do', '')] doDatum: string=''
{$IFDEF CUSTOM_CTRL_INCOSystems}
                     ; [MVCFromQueryString('datazoneid', '')] datazoneId: string=''
{$ENDIF}
                     );

{
    [MVCPath('/($id)/dokumentace')]
//    [MVCProduces('application/json')]
    [MVCHTTPMethod([httpGET])]
    [MVCSwagSummary('TPV - KusovnĂ­k', 'výrobní dokumentace k danĂ©mu dĂ­lci', 'GetDokumenaciDilce')]
    [MVCSwagParam(plPath, 'id', 'ID dílce', ptString, true)]
    [MVCSwagParam(plQuery, 'jenSeznam', 'Bez obsahu dokumentu', ptString, false, '1')]
    [MVCSwagParam(plQuery, 'operace', 'ÄŚĂ­slo operace', ptString, false, '')]
    [MVCSwagParam(plQuery, 'base64', 'Obsah dokumentu vrĂˇtit v kĂłdovĂˇnĂ­ BASE64', ptString, false, '0')]
    procedure GetDokumenaciDilce (id: string='0';
                                  [MVCFromQueryString('jenSeznam', '')] jenSeznam: string='1';
                                  [MVCFromQueryString('operace', '')] operace: string='';
                                  [MVCFromQueryString('base64', '')] base64: string='0'
                                 );
}
  end;



implementation

uses
  uSvc_Base,
  uHeoObj_Base,
  uCommons,
  MVCFramework.Serializer.Intf,
  MVCFramework.Controllers.Register,
  System.Generics.Collections,
  System.RegularExpressions,
  System.StrUtils,
  System.SysUtils,
  Winapi.ActiveX,
  IdHTTP,
  System.JSON,
  JsonDataObjects,
  helTabsBIDs;





{ TVyrobaEvidRozpracOperaceController }

 procedure TVyrobaEvidRozpracOperaceController.GetAll (sIdPrikaz: string=''; sIdStroj: string=''; sIdPrac: string=''; radaPrikazu: string=''; operace: string='1';
                                                       sCisloZam: string=''; sIdZam: string=''; stavRozprac: string=''; datum: string='';
                                                       odDatum: string=''; doDatum: string=''
{$IFDEF CUSTOM_CTRL_INCOSystems}
                                                       ; datazoneId: string=''
{$ENDIF}
);
  var idPrikaz, idStroj, idPrac, cisZam, idZam: integer;
      incOper: boolean;
      params: TDictionary<string,string>;
{$IFDEF CUSTOM_CTRL_INCOSystems}
      idDatazone: integer;
{$ENDIF}
  begin
   params:= TDictionary<string, string>.Create;

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

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

   idPrikaz:= 0;
   sIdPrikaz:= sanitizeSQLString(sIdPrikaz);
   if not(TryStrToInt(sIdPrikaz, idPrikaz)) then
    idPrikaz:= 0;
   if (idPrikaz>0) then
    params.Add('idPrikaz', idPrikaz.ToString);

{$IFDEF CUSTOM_CTRL_INCOSystems}
   idDatazone:= 0;
   datazoneId:= sanitizeSQLString(datazoneId);
   if not(TryStrToInt(datazoneId, idDatazone)) then
    idDatazone:= 0;
   if (idDatazone>0) then
    params.Add('datazoneId', idDatazone.ToString);
{$ENDIF}

   cisZam:= 0;
   sCisloZam:= sanitizeSQLString(sCisloZam);
   if not(TryStrToInt(sCisloZam, cisZam)) then
    cisZam:= 0;
   if (cisZam>0) then
    params.Add('cisZam', cisZam.ToString);

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

   idPrac:= 0;
   sIdPrac:= sanitizeSQLString(sIdPrac);
   if not(TryStrToInt(sIdPrac, idPrac)) then
    idPrac:= 0;
   if (idPrac>0) then
    params.Add('idPrac', idPrac.ToString);

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

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

   incOper:= true;
   operace:= sanitizeSQLString(operace);
   if (operace='0') then
    incOper:= false;
   params.Add('vcetneOper', incOper.ToInteger.ToString);

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


   try
     Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

   params.Free;
  end;



 procedure TVyrobaEvidRozpracOperaceController.GetByID (id: string = '0');
  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);

   try
     Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

   params.Free;
  end;



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


 procedure TVyrobaEvidRozpracOperaceController.RadekGetMeta;
  begin
    try
      Render(ObjectDict().Add('data', GetVyrobaEvidRozpracOperaciService.RadekGetMeta));
     except
      RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
  end;





{ TVyrobaEvidenceOperaciController }

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



 procedure TVyrobaEvidenceOperaciController.GetByID (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', GetVyrobaEvidenceOperaciService.GetByID (iId, nil, FDM.sqlConn)));
       except
        RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
      end;
     end
    else
     RenderStatusMessage (200);
  end;






{ TTPVCisKooperaciController }

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



 procedure TTPVCisKooperaciController.GetAll (rada: string='');
  begin
   rada:= sanitizeSQLString(rada);
   GetByID('', rada);
  end;



 procedure TTPVCisKooperaciController.GetByID (id: string='0'; rada: 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', GetTPVCisKoopService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

   params.Free;
  end;





{ TVyrobniPrikazController }

 procedure TVyrobniPrikazController.GetAll (stav: string=''; radaVPr: string=''; cisloVPr: string=''; skDilce: string=''; sIdDilce: string='';
                                            cisloZak: string=''; sIdZakModif: string=''; operace: string=''; material: string=''; spustene: string='';
                                            debug: string='');
  var errMsg: string;
      idDilce, idZakModif: integer;
      params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;


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

   stav:= sanitizeSQLString(stav);
   if (stav='10') or (stav='20') or (stav='30') or (stav='40') or (stav='50') or (stav='60') then
    params.Add('stav', stav);


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

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

   sIdDilce:= sanitizeSQLString (sIdDilce);
   idDilce:= 0;
   if (sIdDilce<>'') then
    if not(TryStrToInt(sIdDilce, idDilce)) then
     idDilce:= 0;
   if (idDilce>0) then
    params.Add('idDilce', idDilce.ToString);

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

   sIdZakModif:= sanitizeSQLString (sIdZakModif);
   idZakModif:= 0;
   if (sIdZakModif<>'') then
    if not(TryStrToInt(sIdZakModif, idZakModif)) then
     idZakModif:= 0;
   if (idZakModif>0) then
    params.Add('idZakazModif', idZakModif.ToString);

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

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

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

   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByParams (params, FDM.sqlConn) ));
    except on E:Exception do
     begin
      RenderStatusMessage (200);
      errMsg:= E.Message;
     end;
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
 }
   end;

   params.Free;
  end;




 procedure TVyrobniPrikazController.GetVyssiPrikazy (id: 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);

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

   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
   end;

   params.Free;

  end;




 procedure TVyrobniPrikazController.GetByID (id: string='0'; stav: string=''; operace: string=''; material: string=''; debug: 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;

   stav:= sanitizeSQLString(stav);
   if (stav='10') or (stav='20') or (stav='30') or (stav='40') or (stav='50') or (stav='60') then
    params.Add('stav', stav);

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

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


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


   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetByID (iId, params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
 }
   end;

   if (params<>nil) then
    params.Free;

  end;



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



 procedure TVyrobniPrikazController.GetMetaKusovniku;
  begin
    try
      Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMetaKusovniku));
     except
      RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
  end;



 procedure TVyrobniPrikazController.GetDokumenaci (id: string = '0'; jenSeznam: string = '1'; operace: string=''; oblast: string=''; base64: string='0');
  var iId, iOblast: integer;
      b, b64: Boolean;
  begin

   iId:= 0;
   id:= sanitizeSQLString(id);
   if (id<>'') then
    if not(TryStrToInt(id, iId)) then
     iId:= 0;

   b:= false;
   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    b:= true;

   operace:= sanitizeSQLString(operace);
   base64:= sanitizeSQLString(base64);
   b64:= (base64='1');

   oblast:= sanitizeSQLString(oblast);
   if not(TryStrToInt(oblast, iOblast)) then
    iOblast:= 3;


   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetDokumentaci (iId, b, iOblast, operace, b64)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

  end;




 procedure TVyrobniPrikazController.GetDokladyOZ (id: string = '0'; polozky: string = '1');
  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('idPrikaz', iId.ToString);

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

// omezeni dokladu na datum - zrusit
   params.Add('noDatum', '1');


   try
     Render(ObjectDict().Add('data', GetDokladOZService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;
  end;





 procedure TVyrobniPrikazController.GetDokumenty (id: string = '0'; jenSeznam: string = '1'; pripona: string = ''; base64: 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;

   params.Add('vazba_ident', '21');
   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);

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



   try
     Render(ObjectDict().Add('data', GetDokumentService.GetByParams(params)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

   params.Free;

  end;




 procedure TVyrobniPrikazController.GetKusovnik (id: string=''; sMnozReq: string='1'; jenPlatne: boolean=true);
  var idVPr: integer;
      mnReq: Extended;
  begin

   id:= sanitizeSQLString(id);
   if (Pos('&', id)>0) then
    id:= LeftStr(id, Pos('&', id)-1);

   idVPr:= 0;
   if (id<>'') then
    if not(TryStrToInt(id, idVPr)) then
     idVPr:= 0;

   mnReq:= 0;
   if (sMnozReq<>'') then
    if not(TryStrToFloat(sMnozReq, mnReq)) then
     mnReq:= 0;

   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetKusovnik (idVPr, mnReq, jenPlatne, 0, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
    end;

  end;




{ TMaterialyPrikazuController }

 procedure TMaterialPrikazuController.GetAll (sIdVPr: string=''; jenPlatne: boolean=true; stavPrikazu: string='30'; skMat: string=''; rcMat: string='');
  var typ: byte;
      idVPr, platne, iStav: integer;
      mnReq: extended;

      params: TDictionary<string, string>;
  begin
   params:= TDictionary<string, string>.Create;

   if (jenPlatne) then
    params.Add('jenplatne', '1');

   sIdVPr:= sanitizeSQLString(sIdVPr);
   idVPr:= 0;
   if (sIdVPr<>'') then
    if not(TryStrToInt(sIdVPr, idVPr)) then
     idVPr:= 0;
   if (idVPr>0) then
    params.Add('idprikaz', idVPr.ToString);

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

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

   iStav:= 0;
   stavPrikazu:= sanitizeSQLString(stavPrikazu);
   if (stavPrikazu<>'') then
    if not(TryStrToInt(stavPrikazu, iStav)) then
     iStav:= 0;
   if (iStav=10) or (iStav=20) or (iStav=30) or (iStav=40) or (iStav=50) or (iStav=60) then
    params.Add('stavPrikazu', iStav.ToString);

   try
     Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
   params.Free;
  end;




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



 procedure TMaterialPrikazuController.GetMetaKusovniku;
  begin
    try
      Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetMetaKusovniku));
     except
      RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
  end;




 procedure TMaterialPrikazuController.GetByID (id: string='0'; sIdVPr: string='0'; jenPlatne: string='0');
  var iid, idVPr: integer;
      mnReq: Extended;
      platne: 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);

   sIdVPr:= sanitizeSQLString(sIdVPr);
   idVPr:= 0;
   if (sIdVPr<>'') then
    if not(TryStrToInt(sIdVPr, idVPr)) then
     idVPr:= 0;
   if (idVPr>0) then
    params.Add('idprikaz', idVPr.ToString);

   jenPlatne:= sanitizeSQLString(jenPlatne);
   platne:= 0;
   if (jenPlatne<>'') then
    if not(TryStrToInt(jenPlatne, platne)) then
     platne:= 0;
   if (platne=1) then
    params.Add('jenplatne', '1');


   try
     Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
    end;

   params.Free;

  end;








{ TVyrobniOperaceController }


 procedure TVyrobniOperaceController.GetDZTaskyNeevidovane (odDatum: string = ''; doDatum: string = '');
  begin
   odDatum:= sanitizeSQLString(odDatum);
   doDatum:= sanitizeSQLString(doDatum);
   try
     Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetDZTaskyNeevidovane(odDatum, doDatum)));
    except
     RenderStatusMessage (200);
{
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
  end;




 procedure TVyrobniOperaceController.VyrobaZapisDZTasku (CTX: TWebContext);
  var dataZoneKlic, urlDZTaskyDown, jsonData, respStr: string;
      o: System.JSON.TJSONObject;
  begin
   respStr:= '';
   o:= System.JSON.TJSONObject.Create;
   try
     jsonData:= CTX.Request.Body;
     if (jsonData<>'') then
      GetVyrobniOperaceService.ZapisDZTasku (jsonData, respStr);
     ResponseStatus(HTTP_STATUS.OK, 'OK');
     Render(respStr);
    except
     RenderStatusMessage (200);
{
     on E:Exception do
      raise EMVCException.Create(E.Message, '', 0, 200);
}
   end;
   if (o<>nil) then
    o.Free;
  end;




 procedure TVyrobniOperaceController.GetAll (barcode: string=''; sIdStroj: string=''; operace: string=''; radaVPr: string=''; sIdVPr: string=''; stavVPr: string='';
                                             jenKooperace: boolean=false; jenPlatne: Boolean=true; jenZiveVPr: Boolean=true);
  var p: TDictionary<string,string>;
  begin
   p:= TDictionary<string,string>.Create;

   barcode:= sanitizeSQLString(barcode);
   if (barcode<>'') then
    p.Add ('barcode', barcode);

   sIdStroj:= sanitizeSQLString(sIdStroj);
   if (sIdStroj<>'') then
    p.Add ('idstroj', sIdStroj);

   operace:= sanitizeSQLString(operace);
   if (operace<>'') then
    p.Add ('operace', operace);

   radaVPr:= sanitizeSQLString(radaVPr);
   if (radaVPr<>'') then
    p.Add ('radaprikazu', radaVPr);

   sIdVPr:= sanitizeSQLString(sIdVPr);
   if (sIdVPr<>'') then
    p.Add ('idprikaz', sIdVPr);

   stavVPr:= sanitizeSQLString(stavVPr);
   if (stavVPr<>'') then
    p.Add ('stavprikazu', stavVPr);

  if (jenKooperace) then
   p.Add ('jenKoop', '1');


   try
     Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetByParams (p, FDM.sqlConn)));  // viz uSvc_Vyroba.pas
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
}
    end;
  end;




 procedure TVyrobniOperaceController.GetByID (id: string='0'; barcode: string= ''; kp: string='');
  var iid: integer;
      params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;

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

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

   id:= sanitizeSQLString(id);
   if not(TryStrToInt(id, iid)) then
    iid:= 0;

   kp:= sanitizeSQLString(kp);

   if (kp='1') then
    params.Add ('kontrolnipostupy', '1');

   try
      Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetByID (iid, params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       params.Free;
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
      begin
       params.Free;
       raise;
      end;
}
   end;

   params.Free;
  end;

{
 procedure TVyrobniOperaceController.GetKPsByID(const id: integer);
  begin
    try
      Render(ObjectDict().Add('data', GetVyrobniOperaceService.GetKPsByID(id)))
     except
      on E: EServiceException do
       begin
        raise EMVCException.Create(E.Message, '', 0, 200);
       end
      else
        raise;
    end;
  end;
}

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










{ TKooperacniObjednavkaController }

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




 procedure TKooperacniObjednavkaController.GetAll (rada: string = ''; cisOrgKoop: string = ''; polozky: string='0'; odDatum: string = ''; doDatum: string = '');
  var params: TDictionary<string, string>;
      cOrg: integer;
      d1, d2: TDateTime;
  begin

   params:= TDictionary<string, string>.Create;
   rada:= sanitizeSQLString(rada);
   cisOrgKoop:= sanitizeSQLString(cisOrgKoop);
   polozky:= sanitizeSQLString(polozky);
   odDatum:= sanitizeSQLString(odDatum);
   doDatum:= sanitizeSQLString(doDatum);

   if (rada<>'') and (rada.Length=3) then
    params.Add('rada', rada);

   cOrg:= 0;
   if not(TryStrToInt(cisOrgKoop, cOrg)) then
    cOrg:= 0;
   if (cOrg>0) then
    params.Add('cOrgKoop', cOrg.ToString);

   if (odDatum<>'') then
    if (TryStrToDateTime(odDatum, d1)) then
     params.Add('odDatum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d1));

   if (doDatum<>'') then
    if (TryStrToDateTime(doDatum, d2)) then
     params.Add('doDatum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d2));

   if (polozky='1') then
    params.Add('polozky', '1');


   try
     Render(ObjectDict().Add('data', GetKooperacniObjednavkaService.GetByParams(params, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
 }
    end;

   params.Free;
  end;




 procedure TKooperacniObjednavkaController.GetByID (id: string = '0'; polozky: string = '0');
  var iId, p: Integer;
      bPol: boolean;
  begin

   iId:= 0;
   id:= sanitizeSQLString(id);
   if not(TryStrToInt(id, iId)) then
    iId:= 0;

   p:= 0;
   polozky:= sanitizeSQLString(polozky);
   if not(TryStrToInt(polozky, p)) then
    p:= 0;
   bPol:= (p=1);

   try
     Render(ObjectDict().Add('data', GetKooperacniObjednavkaService.GetByID(iId, bPol, FDM.sqlConn)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
    end;

  end;






{  TTPVPracovisteController }

 procedure TTPVPracovisteController.GetAll;
  begin
   try
    Render(ObjectDict().Add('data', GetTPVPracovisteService.GetAll));  // viz uSvc_Vyroba.pas
    except
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
    end;
  end;



 procedure TTPVPracovisteController.GetMeta;
  begin
    try
      Render(ObjectDict().Add('data', GetTPVPracovisteService.GetMeta));
    except
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
    end;
  end;



 procedure TTPVPracovisteController.GetByID (id: string='0'; sFrontaPrace: string=''; stredisko: string='');
  var iId, iFronta: 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);

   iFronta:= 0;
   sFrontaPrace:= sanitizeSQLString(sFrontaPrace);
   if not(TryStrToInt(sFrontaPrace, iFronta)) then
    iFronta:= 0;
   if (iFronta>0) then
    params.Add('fronta', '1');

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


   try
    if (iFronta=0) then
      Render(ObjectDict().Add('data', GetTPVPracovisteService.GetByID(iId)))
     else
      Render(ObjectDict().Add('data', GetTPVPracovisteService.GetFrontaPrace(iId)));
   except
     on E: EServiceException do
     begin
       raise EMVCException.Create(E.Message, '', 0, 200);
     end
     else
       raise;
   end;

   params.Free;

  end;







{ TTPVStroj }
 procedure TTPVStrojController.GetAll (idprac: string=''; prac: string=''; stredisko: string='');
  var iIdPrac: integer;
      params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;

   iIdPrac:= 0;
   idprac:= sanitizeSQLString(idprac);
   if not(TryStrToInt(idprac, iIdPrac)) then
    iIdPrac:= 0;
   if (iIdPrac>0) then
    params.Add('idprac', iIdPrac.ToString);

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

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

   try
     Render(ObjectDict().Add('data', GetTPVStrojService.GetByParams(params)));
    except
     on E: EServiceException do
     begin
       raise EMVCException.Create(E.Message, '', 0, 200);
     end
     else
       raise;
   end;

   params.Free;

  end;



 procedure TTPVStrojController.GetMeta;
  begin
    try
      Render(ObjectDict().Add('data', GetTPVStrojService.GetMeta));
    except
      on E: EServiceException do
      begin
        raise EMVCException.Create(E.Message, '', 0, 200);
      end
      else
        raise;
    end;
  end;



 procedure TTPVStrojController.GetByID (id: string='0');
  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);

   try
     Render(ObjectDict().Add('data', GetTPVStrojService.GetByParams (params)));
    except
     RenderStatusMessage (200);
    end;

   params.Free;
  end;






{ TTPVOperaceDilceController }

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



 procedure TTPVOperaceDilceController.GetAll (sIdDilce: string = '');
  var idDilce: integer;
      params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;

   idDilce:= 0;
   sIdDilce:= sanitizeSQLString(sIdDilce);
   if not(TryStrToInt(sIdDilce, idDilce)) then
    idDilce:= 0;
   if (idDilce>0) then
     begin
      params.Add('dilec', idDilce.ToString);

      try
        Render(ObjectDict().Add('data', GetTPVOperaceDilceService.GetByParams (params, FDM.sqlConn)));
       except
        RenderStatusMessage (200);
      end;
     end
    else
     RenderStatusMessage (200);

   params.Free;
  end;





{ TTPVKusovnikDilceController }

 procedure TTPVKusovnikDilceController.GetKusovnik (id: string=''; sMnozReq: string='1'; alt: string='');
  var idKZ: integer;
      mnReq: Extended;
      p: TDictionary<string, string>;
  begin
   p:= TDictionary<string, string>.Create;

   alt:= sanitizeSQLString (alt);
   if (alt='1') then
    p.Add ('alt', '1');

   id:= sanitizeSQLString (id);
   if (Pos('&', id)>0) then
    id:= LeftStr(id, Pos('&', id)-1);

   idKZ:= 0;
   if (id<>'') then
    if not(TryStrToInt(id, idKZ)) then
     idKZ:= 0;

   mnReq:= 1;
   if (sMnozReq<>'') then
    if not(TryStrToFloat(sMnozReq, mnReq)) then
     mnReq:= 1;

   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetKusovnik (idKZ, mnReq, true)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
    end;
   p.Free;
  end;




 procedure TTPVKusovnikDilceController.GetByID (id: string = '0');
  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
     begin
      params.Add('id', iId.ToString);

      try
        Render(ObjectDict().Add('data', GetMaterialPrikazuService.GetByParams (params, FDM.sqlConn)));
       except
        RenderStatusMessage (200);
   {
        on E: EServiceException do
        begin
          raise EMVCException.Create(E.Message, '', 0, 200);
        end
        else
          raise;
   }
      end;
     end
    else
     RenderStatusMessage (200);
  end;




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



  procedure TTPVKusovnikDilceController.GetDokumenaciDilce (id: string='0'; jenSeznam: string='1'; operace: string=''; base64: string='0');
  var iId: integer;
      b, b64: Boolean;
  begin

   iId:= 0;
   id:= sanitizeSQLString(id);
   if (id<>'') then
    if not(TryStrToInt(id, iId)) then
     iId:= 0;

   b:= false;
   jenSeznam:= sanitizeSQLString(jenSeznam);
   if (jenSeznam='1') then
    b:= true;

   operace:= sanitizeSQLString(operace);
   base64:= sanitizeSQLString(base64);
   b64:= (base64='1');

   try
     Render(ObjectDict().Add('data', GetVyrobniPrikazService.GetDokumentaci (iId, b, 1, operace, b64)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
}
   end;

   end;






{ TTPVCiselnikZmenController }

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



 procedure TTPVCiselnikZmenController.GetByID (id: string='0'; rada: string= ''; jenPlatne: string=''; datPlatnosti: string='');
  var iId: integer;
  begin
   iId:= 0;
   id:= sanitizeSQLString(id);
   if (id<>'') then
    if not(TryStrToInt(id, iId)) then
     iId:= 0;

   try
     Render(ObjectDict().Add('data', GetTPVCiselnikZmenService.GetByID(iId)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
 }
    end;

  end;



 procedure TTPVCiselnikZmenController.GetAll (rada: string= ''; jenPlatne: string=''; datPlatnosti: string='');
  var params: TDictionary<string,string>;
      d1: TDateTime;
  begin
   params:= TDictionary<string, string>.Create;

   rada:= sanitizeSQLString(rada);
   if (rada<>'') and (rada.Length<11) then
    params.Add('rada', rada);

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

   datPlatnosti:= sanitizeSQLString(datPlatnosti);
   if (datPlatnosti<>'') then
    if (TryStrToDateTime(datPlatnosti, d1)) then
     params.Add('datum', FormatDateTime('dd.mm.yyyy hh:nn:ss', d1));


   try
     Render(ObjectDict().Add('data', GetTPVCiselnikZmenService.GetByParams(params)));
    except
     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
     else
       raise;
 }
    end;


   params.Free;
  end;





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




 procedure TTPVPrednastaveniOperaciController.GetByID (id:string='0');
  var params: TDictionary<string,string>;
      iId: integer;
  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);

   try
     Render(ObjectDict().Add('data', GetTPVPrednastaveniOperaciService.GetByID (iId, params, FDM.sqlConn)));
    except
//     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
}
     on E:Exception do
      begin
       Writeln(E.Message);
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
//      RenderStatusMessage (200); //  raise;
    end;

   params.Free;

  end;




 procedure TTPVPrednastaveniOperaciController.GetAll (minimumDat: string=''
{$IFDEF CUSTOM_CTRL_INCOSystems}; cislo: string=''{$ENDIF}
);
  var params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;

   minimumDat:= sanitizeSQLString(minimumDat);
   if (minimumDat='1') or (minimumDat='0') then
    params.Add ('minimumDat', minimumDat);

{$IFDEF CUSTOM_CTRL_INCOSystems}
   cislo:= sanitizeSQLString (cislo);
   if (cislo<>'') then
    params.Add ('cislo', cislo);
{$ENDIF}

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

   params.Free;
  end;






{ TTPVZakazkoveModifikaceController }

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



 procedure TTPVZakazkoveModifikaceController.GetAll (rada: string='');
  var params: TDictionary<string,string>;
  begin
   params:= TDictionary<string, string>.Create;
   try
     Render(ObjectDict().Add('data', GetTPVZakazkoveModifikaceService.GetByParams (params)));
    except
//     RenderStatusMessage (200);
{
     on E: EServiceException do
      begin
       raise EMVCException.Create(E.Message, '', 0, 200);
      end
}
     on E:Exception do
      begin
       Writeln(E.Message);
       raise EMVCException.Create(E.Message, '', 0, 200);
      end;
//      RenderStatusMessage (200); //  raise;
    end;
   params.Free;
  end;






{ TTPVZakazkoveModifikaceDilceController }

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




 procedure TTPVZakazkoveModifikaceDilceController.GetAll (idkmen: string='');
  var params: TDictionary<string,string>;
      idKZ: integer;
  begin
   params:= TDictionary<string, string>.Create;

   idKZ:= 0;
   idkmen:= sanitizeSQLString(idkmen);
   if not(TryStrToInt(idkmen, idKZ)) then
    idKZ:= 0;

   if (idKZ>0) then
    params.Add('id', idKZ.ToString);


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


end.
