unit ProductsAgent; interface uses SysUtils, ObserverPattern, ApplicationContext, SelectService; // Resource strings are stored as resources and linked into the executable or // library so that they can be modified without recompiling the program. resourcestring PROD_SERVER_URL = 'http://cacheaccept2010:57772/csp/dev1/WS.Prod.Select.CLS'; KORTTEKST_FORMAT_COMPACT = 'KortTekst;IdentNr;StockType'; KORTTEKST_FORMAT_EXPAND = 'KortTekst;IdentNr;StockType;LangTekstN'; type TProductsAgent = class private FProdSelectServerSoap: SelectService.ProdSelectServerSoap; procedure RegistreerZoekresultaten(ProductsContext: TProductsContext; DataSet: anyType); procedure RegistreerMislukteOpzoeking(ProductsContext: TProductsContext; pxStatusObj: pxStatus); public Constructor Create(); procedure ZoekOpMetKortTekst(Zoek: string; KLNr: string; At: string; UserContext: TUserContext; ProductsContext: TProductsContext); end; implementation constructor TProductsAgent.Create(); begin FProdSelectServerSoap := SelectService.GetProdSelectServerSoap(false, PROD_SERVER_URL, nil); end; procedure TProductsAgent.ZoekOpMetKortTekst(Zoek: string; KLNr: string; At: string; UserContext: TUserContext; ProductsContext: TProductsContext); var ZoekData: SelectService.Select; ZoekCriteria: SelectService.pxSelectCriteria; // Property van ZoekData SelectResponseObj: SelectService.SelectResponse; begin ZoekData := nil; SelectResponseObj := nil; try // Request ZoekData := SelectService.Select.Create(); ZoekCriteria := SelectService.pxSelectCriteria.Create(); ZoekData.SessionKey := UserContext.SessionKey; ZoekCriteria.KLNr := KLNr; ZoekCriteria.Zoek := Zoek; ZoekCriteria.At := At; ZoekCriteria.FormatCompact := KORTTEKST_FORMAT_COMPACT; ZoekCriteria.FormatExpand := KORTTEKST_FORMAT_EXPAND; ZoekData.Criteria := ZoekCriteria; SelectResponseObj := FProdSelectServerSoap.Select(ZoekData); // Response if SelectResponseObj.SelectResult = nil then begin // Gelukt RegistreerZoekresultaten(ProductsContext, SelectResponseObj.varDataSet); end else begin // Mislukt RegistreerMislukteOpzoeking(ProductsContext, SelectResponseObj.SelectResult); end; finally ZoekData.Free(); SelectResponseObj.Free(); end; end; procedure TProductsAgent.RegistreerZoekresultaten(ProductsContext: TProductsContext; DataSet: anyType); begin // Andere velden juist zetten ProductsContext.IsOK := True; ProductsContext.ErrorMessage := ''; ProductsContext.InternalErrorMessage := ''; ProductsContext.DataSet := DataSet; ProductsContext.NotifyChanged(); end; procedure TProductsAgent.RegistreerMislukteOpzoeking(ProductsContext: TProductsContext; pxStatusObj: pxStatus); begin // Ander velden leegmaken ProductsContext.DataSet := nil; ProductsContext.IsOK := pxStatusObj.IsOK; ProductsContext.ErrorMessage := pxStatusObj.Message_; ProductsContext.InternalErrorMessage := pxStatusObj.InternalMessage; ProductsContext.NotifyChanged(); end; end.