DataIO
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
eidslogic.h
Go to the documentation of this file.
1 #ifndef EIDSLOGIC_H
2 #define EIDSLOGIC_H
3 
4 #include "core/common/ESingleton.h"
5 #include "core/common/eplatform.h"
6 #include "dataio/DataIODefines.h"
7 #include <list>
8 #include <vector>
9 
10 namespace EM
11 {
12  namespace Strojcek
13  {
14  namespace VstupneUdaje
15  {
16  namespace TarifnySystem
17  {
18  class ETarifnaSkupina;
19  }
20  namespace CestovnePoriadky
21  {
22  class EZastavka;
23  class EZona;
24  }
25  }
26  }
27 }
28 
31 
32 class DATAIO_API EIDSLogic : public ESingleton <EIDSLogic>
33 {
34 public:
35  enum Actions
36  {
37  ActionNoAction = 0,
38  ActionEnableZoneIssueTicketCash = 1,
39  ActionEnableZoneIssueTicketCard = 2,
40  ActionPrintZonesToTicket = 3,
41  ActionPrintSeparateTickets = 4, // deprecated
42  ActionInterchangeTimeActual = 5, // deprecated
43  ActionInterchangeTimeBusStop = 6,
44  ActionEnableZoneInfoPanel = 7,
45  ActionEnableOrderInfoPanel = 8,
46  ActionIssueKordisTicket = 9,
47  ActionShowZonesBetweenBS = 10,
48  ActionCheckPrepaidTicketValidityOnCheckinBusStop = 11, // deprecated
49  ActionCheckPrepaidTicketValidityOnCheckinAndCheckoutBusStop = 12,
50  ActionCheckPrepaidTicketValidityOnWholeTrip = 13,
51  ActionFindAndSetCheckOutBusStopByBestTimeTicket = 14,
52  ActionSetCheckOutBusStopByValidOneWayTicket = 15,
53  ActionCalculateNextTicketCounterValueFromAllTickets = 16,
54  // it depend on ids that is on card
55  ActionWriteFellowTravellersOnCard = 17,
56  // extend check out buss stop based on valid time ticled
57  ActionExtendJourneyByValidTimeTicket = 18,
58  ActionIgnoreManualSelectedCheckOutBusStopInAutoIssue = 19,
59  ActionShowCustomerProfileOnTimeTicketExtend = 20,
60  ActionAllowManualIssueForOwner = 21,
61  ActionForceLoadingSubstituteTariffGroup = 22,
62 
63  /*
64  * Funkcion check tariffNetworkID and cardNetworkID. Feaute is supported fo IDS IDOL and IREDO
65  *
66  * NOTE: Old emtest mifare card dont have networkID => issue on this card is for this IDS disabled
67  */
68  ActionCheckCardNetworkWithTariffNetworkID = 23,
69 
70  /*
71  * Recalculate interchange price by previous urban one way ticket zones. Check checkinOWTZone/checkoutOWTZone witch zones from configuration file InputData_IDSNumber_ZP.xml
72  * This is special feature is enabled - IDS IDOL
73  */
74  ActionRecalculateInterchangePriceByPreviousUrbanTicket = 24, // deprecated
75  /*
76  * Accept one way ticket with time validity.
77 
78  * This is IDS IDOL feature
79  */
80  ActionAcceptTimeValidTicket = 25, // deprecated
81  /*
82  * Default behavior for acceptance time valid one way ticket is price 0. In this case calculate and use interchange price.
83  * This is IDS IDOL feature
84  */
85  ActionRecalculateInterchangePriceForTimeValidTicket = 26, // deprecated
86  /*
87  * Default behavior acceptance time-valid ticket is that it is searching for last location valid bus stop. If this featrue enabled, so checks only selected bus stop in issue
88  */
89  ActionUseSelectedBusStopsForAcceptTimeValidTicket = 27, // deprecated
90 
91  /*
92  * Some IDS support same zones combination, some not. Current supports this feature IDS IDOL
93  */
94  ActionValidSameZoneRelationCombination = 28, // deprecated
95 
96  /*
97  * For IDOL IDS some trips have suburban sections between CI/CO busStops which should be ignored
98  */
99  ActionGetTariffGroupTypeByCheckInCheckOutBusStop = 29,
100 
101  /*
102  * Priprava zastavok pre trip sekcie na zaklade zonacie (primarne implementovane pre IDS BID).
103  *
104  *
105  * Priklad 1:
106  * - Platne CL na zony: 215,220
107  *
108  * Trasa: 100 101 215 220
109  * |----------|----------|----------|
110  *
111  * Vyparsovane trip sekcie:
112  * JL: |----------|
113  * CL: |----------|----------|
114  *
115  * V pripade:
116  * - Kilometrickych cennikov je taketo rozdelenie v poriadku, pretoze ak by platena sekcia zacinala az od zastavky so zonou 215, cestujuci by nezaplatil za kilometre medzi zastavkou 101 a 215.
117  * - Zonovych cennikov taketo delenie sekcii nie je vhodne, pretoze pre JL by sa zaratala aj zona 101, co neodzrkladuje realny stav( platena sekcia by mala o jednu zonu naviac )
118  *
119  * Pre IDS BID sa zaplne IDS logic a vysledne sekcie po parsovani spoja bude vyzerat nasledovne:
120  * Vyparsovane trip sekcie:
121  * JL: |----------|
122  * CL: |----------|
123  */
124  ActionSetBusStopForTripSectionByZones = 30,
125 
126  /*
127  * Nastavenie IDS momentalne podporovane pre IDS BID
128  *
129  * Podla zadania projektu BID:
130  * - sa v pripade jazdy z hranicnej zony IDS system do ne-IDS systemu nema platit za hranicnu zonu. Teda plati sa len za kilometre
131  * - sa v pripade jazdy z ne-IDs systemu do prvej zastavky IDS systemu za prvu zastavku IDS systemu nema platit. Teda plati sa len za kilometre
132  *
133  * V pripade, ze je prva alebo posledna vyparsovana sekcia zonova, maju sa vyhodit a ne-IDS useky, ktore na tieto jednozastavkove sekcia navazuju sa maju rozsirit napriklad:
134  *
135  * Trasa: 101 0 0
136  * |----------|----------|
137  *
138  * Vyparsovane trip sekcie:
139  * CL: |
140  * JL: |----------|
141  *
142  * V tomto pripade sa ma prva jednozastavkova sekcia odstranit a zastavky kilometrickeho useku sa upravia nasledovne:
143  * |---------------------|
144  *
145  * Kilometricky usek vlastne pokryje celu trasu
146  */
147  ActionRemoveOnBusStopSectionsAndAdjustBusStopForNoIDSSection = 31,
148 
149  /*
150  * Nastavenie IDS momentalne implementovane pre IDS BID, pre III.B etapu
151  *
152  * Navazny redmine task 1890
153  *
154  * Listky z oznacovaca v primestskom sete sa nemaju zaratavat do poctu cestujucich zobrazovanych na palubnom pocitaci vo vydaji pretoze cestujuci ma povinnost po zakupeni listka na oznacovaci prist k
155  * vodicovi a poziadat o vydaj registracneho listka. Dovod je taky, ze listok na citacke nenesie informaciu o adresnosti, teda odkial kam cestujuci cestuje. PReto je cestujuci povinny prist k vodicovi,
156  * zadat vodicovi zastavky a poziadat o vydaj registracneho CL.
157  */
158  ActionDisablePassengerCounterForTicketsBoughtOnSlave = 32,
159 
160  /*
161  * Nastavenie IDS momentalne implementovane pre IDS BID, pre III.B etapu
162  *
163  * Standardne spravanie vyhodnocovania listkov z predchadzajuceho spoja je vydaj listka po poslednu zastaku do kedy je este listok platny.
164  * V IDS BID je potrebne sa cestujuceho spytat, ci sa ma listok prepisat a tym padom sa listok nema skracovat.
165  */
166  ActionQuestionOverrideTimeValidTicketsFronPreviousTrip = 33,
167 
168  /*
169  * Nastavenie IDS je momentalne podporovane/zapnute pre neIDS projekty.
170  *
171  * Casova akceptacia jednorazovych listkov je zapnuta v projektoch DPMK(neIDS) a BID(IDS):
172  * - V projekte BID sa akceptuju jednorazove listky spolucestujucich az po interakcii s cestujucim a potvrdenim ze si cestujuci zela prestup aj pre spolucestujucich
173  * - V projekte DPMK sa akceptuju listky spolucestujucich vzdy pri kazdej akceptacii jednorazoveho listka majitela
174  */
175  ActionAcceptAllFellowTravellerTicketsWithTimeValidity = 34,
176 
177  /*
178  * Nastavenie pre zobrazovanie JL v infe o karte
179  *
180  * Hovori o tom ci v CardInfo sa maju zobrazit vsetky jednorazove listky, ktore su casovo platne.
181  * Skontroluje sa casova platnost JL a ak este nevyprsala jeho platnost, tak je zobrazny v infe.
182  * Kontroluje sa JL majitela a kedze jazda na CL za beznych okolnosti nema casovu platnost ale ma byt zobrazeny, tak jazda na CL je zobrazena vzdy (a v pripade ze ma aj dokupene JL tak ich zobrazi aj ked uz vyprsali)
183  *
184  * Ak nastavenie nie je podporovane/zapnute, tak sa zobrazuju JL podla standardnych podmienok => listok musi byt platny na aktualnej zastavke (teda linka, spoj, kontrolne cislo, zastavka) - klasicke CheckTicketValidity
185  */
186  ActionCardInfoDisplayAllNotExpiredOWT = 35,
187 
188  /*
189  * Nastavenie pre tlac poctu zon a casu na prestupny listok.
190  *
191  * Ak je nastavenie zapnute, na prestupne listky sa netlaci pocet zon a casova platnost (v SL BID cast listka "SingleTicketOwner").
192  * Tieto udaje sa tlacia v inej casti listka (v SL BID "OneWayTicketTimeValidityData").
193  *
194  * Ak nastavenie nie je zapnute, pocet zon a casova platnost sa tlacia standardne.
195  */
196  ActionPrintZonesAndTimeToTransferTickets = 36,
197 
198  /*
199  * Nastavi, ci sa maju uznavat casove listky z karty pocas manualneho vydaja (OBC-CardIssue, Slave-ManualIssue)
200  *
201  * Ak je nastavenie zapnute, casove listky z karty sa maju uznavat.
202  *
203  * Ak nastavenie nie je zapnute, casove listky sa maju ignorovat.
204  */
205  ActionAcceptTimeTicketsInManualIssue = 37,
206 
207  /*
208  * Nastavenie typu jednorazoveho listka ZoneAmount pri kilometrickom cenniku ( IDS ZSK a network na mifare classic kartach )
209  */
210  ActionForceUseOfOWTZoneAmount = 38,
211 
212  /*
213  * Vynimka pre ids 21 (TTSK) pre mifare classic karty - nemaju zapisany network
214  */
215  ActionIgnoreOneWayTicketNetworkCode = 39,
216 
217  /*
218  * Specialita pre IDS TN/PD suvisiaca s kilometrickymi PCL
219  */
220  ActionKilometricalTimeTicketSectioning = 40,
221 
222  /*
223  * Nastavenie, ci sa pouziva popri zonach este aj system podzon (zavedene v ramci IDS Vychod)
224  */
225  ActionUseSubZones = 41,
226 
227  /*
228  * Nastavenie, ktore urcuje, ze cas platnosti jednorazoveho listka sa pocita ako sucet platnosti vsetkych sekcii (IDS Vychod)
229  */
230  ActionOneWayTicketValidityTimeCumulative = 42,
231 
232  /*
233  * Nastavenie, ktore povoli prestup iba pre listky vydane do cielovej tarifnej obce (IDS Vychod)
234  */
235  ActionOneWayTicketInterchangeOnlyForTicketsToDestinationZone = 43,
236 
237  /*
238  * Nastavenie, ktore zapne kontrolu prestupnej a cielovej zastavky pre jednorazove listky vydane do cielovej (pod)zony
239  */
240  ActionStrictInterchangeBusStopsChecking = 44, // OBSOLETE
241 
242  /*
243  * Nastavenie, ktore znemozni hotovostny doplatok pre listky vydane do cielovej zony v pripade, ze nie je dostatok prostriedkov na karte (IDS Vychod)
244  */
245  ActionDisableCashSurchargeForTicketToDestinationZone = 45,
246 
247  /*
248  * Nastavenie, ktore znemozni vydaj listka do cielovej tarifnej obce na mifare classic karty (IDS Vychod)
249  */
250  ActionProhibitUseOfMifareClassicCardForTicketsToDestinationZone = 46,
251 
252  /*
253  * Nastavenie, ktore urcuje, ci sa ma prepinat tarifna skupina podla statu zastavky (ak je zastavka zahranicna, tak sa vo vydaji pouzije jej tarifna skupina).
254  * Zavedene kvoli linke do Hainburgu v BID
255  */
256  ActionGetTariffGroupByForeignBusStop = 47,
257 
258  /*
259  * Nastavenie, ktore urcuje, ci sa pri rozdelovani trasy do tripSekcii ma kontrolovat v akom state sa nachadzaju zastavky.
260  * Zavedene kvoli linke do Hainburgu v BID
261  */
262  ActionCheckIfAllBusStopsAreInSameState = 48,
263 
264  /*
265  * Nastavenie, ktore zapne rezim rozdelovania do trip sekcii pre dopravne systemy, ktore kombinuju zonove casove listky a kilometricke jednorazove listky
266  */
267  ActionTripSectioningForZoneTTAndKilometricOWT = 49,
268 
269  /*
270  * Nastavenie, ktore urcuje, ci sa zapne zastavkovy vydaj na medzinarodnej linke
271  */
272  ActionShowBusStopListOnInternationalLine = 50,
273 
274  /*
275  * Nastavenie, ktore umozni povolit iba jeden prestup s jednorazovym listkom s casovou platnostou (Zavedene pre IDSV)
276  */
277  ActionOnlyOneInterchangeForOneWayTicketWithTimeValidity = 51,
278 
279  /*
280  * Nastavenie, ktore zakaze vydaj prestupneho listka na zahranicnej zastavke (Zavedene pre IDSV)
281  */
282  ActionInterchangeTicketFromAbroadIsProhibited = 52,
283 
284  /*
285  * Nastavenie, ktore hovori o tom, ze na zahranicnych zastavkach sa neuznavaju casove listky (Zavedene pre IDSV)
286  */
287  ActionTimeTicketsProhibitedOnBusStopsAbroad = 53,
288 
289  /*
290  * Nastavenie, ktore umozni zakazat platbu EMV kartou za listky vydane do cielovej obce (Zavedene pre IDSV)
291  */
292  ActionDisableEmvPaymentForTicketsToDestinationBusstop = 54,
293 
294  /*
295  * Nastavenie, ktore umozni nezobrazovat otazku, ci chcem prepisat ciastocne platny prestupny listok na karte
296  * Ciastocne platny = je platny, ale nepokryva celu trasu az po zvolenu vystupnu zastavku
297  * Zavedene pre IDS Vychod
298  */
299  ActionDontShowQuestionForPartiallyValidTicketsFromPreviousTrip = 55,
300 
301  /*
302  * Nastavenie, ktore pri prestupnom listku vynuti zapis druheho listka do statistiky, aj ked neobsahuje nijake dalsie zony
303  * Normalne sa do druheho listka zapisuju zony, ktore boli doplatene navyse. Moze sa ale stat, ze aj prestupna cast je v ramci tej istej zony (zon),
304  * ale druhy listok je tam potrebny kvoli konverzii a zuctovaniu
305  * (Zavedene pre IDSV)
306  */
307  ActionAlwaysWriteAdditionalZones = 56
308  };
309 
311  {
312  IDSUndefined = 0,
313  IDSPID = 1,
314  IDSSID = 2,
315  IDSCB = 3,
316  IDSTabor = 4,
317  IDSJIKORD = 5,
318  IDSIDP = 6,
319  IDSIDOK = 7,
320  IDSUK = 8,
321  IDSIDOL = 9,
322  IDSJARIS = 10,
323  IDSVYDIS = 11,
324  IDSIREDO = 12,
325  IDSPK = 13,
326  IDSJMK = 14,
327  IDSIDSOK = 15,
328  IDSZID = 16,
329  IDSODIS = 17,
330  IDS_BID = 20, //Bratislavska integrovana doprava
331  IDS_TTSK = 21, //Trnavsky samospravny kraj
332  IDS_TN = 22, //Trencin
333  IDS_NSK = 23, //Nitra
334  IDS_ZSK = 24, //Zilinsky samospravny kraj
335  IDS_BBSK = 25, //Banska Bystrica
336  IDS_PSK = 26, //Presov
337  IDS_VYCHOD = 27, //IDS Vychod
338  IDSVSB = 30,
339  IDSMetropolitanCard = 201,
340  IDS_ALTERNATE_OFFSET = 1000, // values greater than 1000 are reserved as alternate IDS values (IDS 1001 is alternate IDS value for IDS 1, and so on)
341  IDS_ALTERNATE_MAX_VALUE = 1999
342  };
343 
344  EIDSLogic();
345  ~EIDSLogic();
346 
347  bool CheckAction( Actions action, long ids );
348  bool CheckIDSonTG( ETarifnaSkupina *tg, Actions action );
349  EZona *GetZoneByBusStop( EZastavka *busStop, Actions action );
350 
362  bool GetNetworkWideZone( const long ids, long &networkWideZone ) const;
363  bool GetNetworkWideZoneAmount( const long ids, long &networkWideZoneAmount ) const;
364  void GetNetworkIDByIDS( unsigned short ids, unsigned long &networkID ) const;
365  void GetIdsByNetworkID( unsigned long networkID, unsigned short &ids ) const;
366 
373  void GetMaxZonesCountForNonNetworkWideTicket( const long ids, std::list<unsigned long> zoneList, long &maxZonesCount, unsigned char ticketTypeID = 0 ) const;
374 
379  void GetMaxZonesCountForNonNetworkWideTicket( const long ids, std::vector<short> zoneList, long &maxZonesCount, unsigned char ticketTypeID = 0 ) const;
380 };
381 
382 #endif // EIDSLOGIC_H
IDSNumber
Definition: eidslogic.h:310
Actions
Definition: eidslogic.h:35
Definition: ECasPrestupu.h:13
Definition: eidslogic.h:32
Class ECol : Objekt je predok pre vsetky nasledujuce kolekcie
Definition: ColReader.h:15
#define DATAIO_API
Definition: DataIODefines.h:10