FUSIONConfig.cs 109 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288
  1. using System;
  2. using System.Collections.Generic;
  3. using Wayne.FDCPOSLibrary;
  4. using Wayne.FDCPOSLibrary.Configuration;
  5. using Wayne.Lib.Log;
  6. namespace Wayne.ForecourtControl.Fusion
  7. {
  8. public class FUSIONConfig
  9. {
  10. #region Fields
  11. private FUSIONForecourtControl forecourtControl;
  12. private IFSFSockets clientSocket;
  13. protected Dictionary<string, ServiceRequest> serviceRequestClientList;
  14. private readonly DebugLogger debugLogger;
  15. #endregion
  16. #region Construction
  17. public FUSIONConfig(int deviceId)
  18. {
  19. if (FUSIONFactory.fusionForecourtControlList.ContainsKey(deviceId))
  20. {
  21. this.forecourtControl = (FUSIONForecourtControl)(FUSIONFactory.fusionForecourtControlList[deviceId]);
  22. clientSocket = this.forecourtControl.manager.ifsfManager.clientSocket;
  23. debugLogger = forecourtControl.manager.ifsfManager.DebugLogger;
  24. serviceRequestClientList = new Dictionary<string, ServiceRequest>();
  25. }
  26. }
  27. #endregion
  28. private void DebugLog(string s)
  29. {
  30. if (debugLogger.IsActive())
  31. debugLogger.Add(s);
  32. }
  33. #region Events
  34. public event EventHandler OnConfigurationChanged;
  35. internal void FireOnConfigurationChanged()
  36. {
  37. if (this.OnConfigurationChanged != null)
  38. {
  39. this.OnConfigurationChanged(this, EventArgs.Empty);
  40. }
  41. }
  42. #endregion
  43. #region Config Start
  44. public void ConfigStart(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  45. {
  46. try
  47. {
  48. // create XML ServiceRequest object
  49. ServiceRequestConfigStart SvRes = new ServiceRequestConfigStart();
  50. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  51. SvRes.WorkstationID = this.clientSocket.workstationID;
  52. ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart posDataElem = new ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart();
  53. posDataElem.POSTimeStamp = DateTime.Now.ToString(FDCConvert.DateFormat);
  54. if (FDCGlobal.ConfigVersion >= FDCConfigVersion.V0200)
  55. posDataElem.InterfaceVersion = FDCGlobal.ConfigVersionToString();
  56. ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart[] posDataArray = { posDataElem };
  57. SvRes.POSdata = posDataArray;
  58. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  59. }
  60. catch (Exception ex)
  61. {
  62. DebugLog("ConfigStart Exception! " + ex.ToString());
  63. }
  64. }
  65. public void ConfigStartResp(int requestId, string sOverallResult, ServiceResponseConfigStart sr)
  66. {
  67. try
  68. {
  69. string errorCode = sr.FDCdata[0].FDCStatus;
  70. DebugLog(string.Format("ConfigStartResp errorCode={0}", errorCode));
  71. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  72. }
  73. catch (Exception ex)
  74. {
  75. DebugLog("ConfigStartResp Exception! " + ex.ToString());
  76. }
  77. }
  78. #endregion
  79. #region Config End
  80. public void ConfigEnd(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  81. {
  82. try
  83. {
  84. // create XML ServiceRequest object
  85. ServiceRequestConfigEnd SvRes = new ServiceRequestConfigEnd();
  86. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  87. SvRes.WorkstationID = this.clientSocket.workstationID;
  88. ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd posDataElem = new ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd();
  89. posDataElem.POSTimeStamp = DateTime.Now.ToString(FDCConvert.DateFormat);
  90. ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd[] posDataArray = { posDataElem };
  91. SvRes.POSdata = posDataArray;
  92. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 60000);
  93. }
  94. catch (Exception ex)
  95. {
  96. DebugLog("ConfigEnd Exception! " + ex.ToString());
  97. }
  98. }
  99. public void ConfigEndResp(int requestId, string sOverallResult, ServiceResponseConfigEnd sr)
  100. {
  101. try
  102. {
  103. string errorCode = sr.FDCdata[0].FDCStatus;
  104. DebugLog(string.Format("ConfigEndResp errorCode={0}", errorCode));
  105. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  106. }
  107. catch (Exception ex)
  108. {
  109. DebugLog("ConfigEndResp Exception! " + ex.ToString());
  110. }
  111. }
  112. #endregion
  113. #region Products
  114. public bool AddProduct(int productId, string name)
  115. {
  116. try
  117. {
  118. DebugLog("AddProduct init");
  119. ServiceRequestDefProducts SvRes = null;
  120. string key = "DefProducts";
  121. if (serviceRequestClientList.ContainsKey(key))
  122. SvRes = (ServiceRequestDefProducts)(serviceRequestClientList[key]);
  123. if (SvRes == null)
  124. {
  125. SvRes = new ServiceRequestDefProducts();
  126. SvRes.WorkstationID = this.clientSocket.workstationID;
  127. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  128. serviceRequestClientList.Add(key, SvRes);
  129. }
  130. else
  131. {
  132. if (SvRes.RequestType != "DefProducts")
  133. {
  134. DebugLog(string.Format("SvRes.RequestType={0} != DefProducts", SvRes.RequestType));
  135. return false;
  136. }
  137. }
  138. ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts POSDataElem = null;
  139. if (SvRes.POSdata != null)
  140. POSDataElem = SvRes.POSdata[0];
  141. else
  142. {
  143. ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts[] POSDataArray = null;
  144. POSDataElem = new ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts();
  145. IFSFManager.ArrayResize<ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  146. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  147. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  148. SvRes.POSdata = POSDataArray;
  149. }
  150. ServiceRequestDefProducts.DefProductsProduct product = null;
  151. if (POSDataElem.Product != null)
  152. {
  153. foreach (ServiceRequestDefProducts.DefProductsProduct productTemp in POSDataElem.Product)
  154. if (productTemp.Id == Convert.ToString(productId))
  155. product = productTemp;
  156. }
  157. if (product == null && productId > 0)
  158. {
  159. product = new ServiceRequestDefProducts.DefProductsProduct();
  160. product.Id = Convert.ToString(productId);
  161. product.Name = name;
  162. ServiceRequestDefProducts.DefProductsProduct[] productArray = POSDataElem.Product;
  163. IFSFManager.ArrayResize<ServiceRequestDefProducts.DefProductsProduct>(ref productArray, (productArray != null) ? productArray.Length + 1 : 1);
  164. productArray[productArray.Length - 1] = product;
  165. POSDataElem.Product = productArray;
  166. }
  167. DebugLog("AddProduct end");
  168. return true;
  169. }
  170. catch (Exception ex)
  171. {
  172. DebugLog("AddProduct Exception! " + ex.ToString());
  173. }
  174. return false;
  175. }
  176. public bool AddProductSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  177. {
  178. try
  179. {
  180. DebugLog("AddProductSend init");
  181. ServiceRequestDefProducts SvRes = null;
  182. string key = "DefProducts";
  183. if (serviceRequestClientList.ContainsKey(key))
  184. SvRes = (ServiceRequestDefProducts)(serviceRequestClientList[key]);
  185. if (SvRes != null)
  186. {
  187. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  188. serviceRequestClientList.Remove(key);
  189. DebugLog("AddProductSend end");
  190. return true;
  191. }
  192. }
  193. catch (Exception ex)
  194. {
  195. DebugLog("AddProductSend Exception! " + ex.ToString());
  196. }
  197. return false;
  198. }
  199. public void DefProductsResp(int requestId, string sOverallResult, ServiceResponseDefProducts sr)
  200. {
  201. try
  202. {
  203. string errorCode = sr.FDCdata[0].FDCStatus;
  204. DebugLog(string.Format("DefProductsResp errorCode={0}", errorCode));
  205. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  206. }
  207. catch (Exception ex)
  208. {
  209. DebugLog("DefProductsResp Exception! " + ex.ToString());
  210. }
  211. }
  212. #endregion
  213. #region Grades
  214. public bool AddGrade(int gradeId, string name)
  215. {
  216. return InternalAddGrade(gradeId, name, null, null, null, null, null);
  217. }
  218. public bool AddGrade(int gradeId, string name, string unitOfMeasure)
  219. {
  220. return InternalAddGrade(gradeId, name, null, null, null, null, unitOfMeasure);
  221. }
  222. public bool AddGrade(int gradeId, string name, int productHighId, int productHighPerc, int productLowId, int productLowPerc, string unitOfMeasure)
  223. {
  224. return InternalAddGrade(gradeId, name, productHighId, productHighPerc, productLowId, productLowPerc, unitOfMeasure);
  225. }
  226. private bool InternalAddGrade(int gradeId, string name, int? productHighId, int? productHighPerc, int? productLowId, int? productLowPerc, string unitOfMeasure)
  227. {
  228. try
  229. {
  230. DebugLog("InternalAddGrade init");
  231. ServiceRequestDefGrades SvRes = null;
  232. string key = "DefGrades";
  233. if (serviceRequestClientList.ContainsKey(key))
  234. SvRes = (ServiceRequestDefGrades)(serviceRequestClientList[key]);
  235. if (SvRes == null)
  236. {
  237. SvRes = new ServiceRequestDefGrades();
  238. SvRes.WorkstationID = this.clientSocket.workstationID;
  239. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  240. serviceRequestClientList.Add(key, SvRes);
  241. }
  242. else
  243. {
  244. if (SvRes.RequestType != "DefGrades" && SvRes.RequestType != "DefGrade")
  245. {
  246. DebugLog(string.Format("SvRes.RequestType={0} != DefGrades", SvRes.RequestType));
  247. return false;
  248. }
  249. }
  250. ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades POSDataElem = null;
  251. if (SvRes.POSdata != null)
  252. POSDataElem = SvRes.POSdata[0];
  253. else
  254. {
  255. ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades[] POSDataArray = null;
  256. POSDataElem = new ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades();
  257. IFSFManager.ArrayResize<ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  258. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  259. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  260. SvRes.POSdata = POSDataArray;
  261. }
  262. ServiceRequestDefGrades.DefGradesGrade grade = null;
  263. if (POSDataElem.Grade != null)
  264. {
  265. foreach (ServiceRequestDefGrades.DefGradesGrade gradeTemp in POSDataElem.Grade)
  266. if (gradeTemp.Id == Convert.ToString(gradeId))
  267. grade = gradeTemp;
  268. }
  269. if (grade == null && gradeId > 0)
  270. {
  271. grade = new ServiceRequestDefGrades.DefGradesGrade();
  272. grade.Id = Convert.ToString(gradeId);
  273. if (name != null)
  274. grade.Name = name;
  275. if (productHighId != null)
  276. grade.ProductHighId = Convert.ToString((int)productHighId);
  277. if (productHighPerc != null)
  278. grade.ProductHighPerc = Convert.ToString((int)productHighPerc);
  279. if (productLowId != null)
  280. grade.ProductLowId = Convert.ToString((int)productLowId);
  281. if (productLowPerc != null)
  282. grade.ProductLowPerc = Convert.ToString((int)productLowPerc);
  283. if (!String.IsNullOrEmpty(unitOfMeasure))
  284. {
  285. var upperCaseUnitName = unitOfMeasure.ToUpper();
  286. // Fusion only allows the following units
  287. // TODO: Change this to be more flexible
  288. if (upperCaseUnitName == "KG")
  289. grade.UnitOfMeasure = "kg";
  290. else if (upperCaseUnitName.StartsWith("LIT") ||
  291. upperCaseUnitName.StartsWith("LTR"))
  292. grade.UnitOfMeasure = "liters";
  293. else if (upperCaseUnitName == "M3")
  294. grade.UnitOfMeasure = "M3";
  295. else if (upperCaseUnitName.StartsWith("GAL"))
  296. grade.UnitOfMeasure = "gallons";
  297. }
  298. ServiceRequestDefGrades.DefGradesGrade[] gradeArray = POSDataElem.Grade;
  299. IFSFManager.ArrayResize<ServiceRequestDefGrades.DefGradesGrade>(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1);
  300. gradeArray[gradeArray.Length - 1] = grade;
  301. POSDataElem.Grade = gradeArray;
  302. }
  303. DebugLog("InternalAddGrade end");
  304. return true;
  305. }
  306. catch (Exception ex)
  307. {
  308. DebugLog("InternalAddGrade Exception! " + ex.ToString());
  309. }
  310. return false;
  311. }
  312. public bool AddGradeSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  313. {
  314. try
  315. {
  316. DebugLog("AddGradeSend init");
  317. ServiceRequestDefGrades SvRes = null;
  318. string key = "DefGrades";
  319. if (serviceRequestClientList.ContainsKey(key))
  320. SvRes = (ServiceRequestDefGrades)(serviceRequestClientList[key]);
  321. if (SvRes != null)
  322. {
  323. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  324. serviceRequestClientList.Remove(key);
  325. DebugLog("AddGradeSend end");
  326. return true;
  327. }
  328. }
  329. catch (Exception ex)
  330. {
  331. DebugLog("AddGradeSend Exception! " + ex.ToString());
  332. }
  333. return false;
  334. }
  335. public bool AddAssignGradePar(int gradeId, string gradeName)
  336. {
  337. try
  338. {
  339. DebugLog("AddAssignGradePar init");
  340. ServiceRequestAssignGradePars SvRes = null;
  341. string key = "AssignGradePars";
  342. if (serviceRequestClientList.ContainsKey(key))
  343. SvRes = (ServiceRequestAssignGradePars)(serviceRequestClientList[key]);
  344. if (SvRes == null)
  345. {
  346. SvRes = new ServiceRequestAssignGradePars();
  347. SvRes.WorkstationID = this.clientSocket.workstationID;
  348. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  349. serviceRequestClientList.Add(key, SvRes);
  350. }
  351. else
  352. {
  353. if (SvRes.RequestType != "AssignGradePars")
  354. {
  355. DebugLog(string.Format("SvRes.RequestType={0} != AssignGradePars", SvRes.RequestType));
  356. return false;
  357. }
  358. }
  359. ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars POSDataElem = null;
  360. if (SvRes.POSdata != null)
  361. POSDataElem = SvRes.POSdata[0];
  362. else
  363. {
  364. ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars[] POSDataArray = null;
  365. POSDataElem = new ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars();
  366. IFSFManager.ArrayResize<ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  367. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  368. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  369. SvRes.POSdata = POSDataArray;
  370. }
  371. ServiceRequestAssignGradePars.AssignGradeParsGrade grade = null;
  372. if (POSDataElem.Grade != null)
  373. {
  374. foreach (ServiceRequestAssignGradePars.AssignGradeParsGrade gradeTemp in POSDataElem.Grade)
  375. if (gradeTemp.Id == Convert.ToString(gradeId))
  376. grade = gradeTemp;
  377. }
  378. if (grade == null && gradeId > 0)
  379. {
  380. grade = new ServiceRequestAssignGradePars.AssignGradeParsGrade();
  381. grade.Id = Convert.ToString(gradeId);
  382. grade.Name = gradeName;
  383. ServiceRequestAssignGradePars.AssignGradeParsGrade[] gradeArray = POSDataElem.Grade;
  384. IFSFManager.ArrayResize<ServiceRequestAssignGradePars.AssignGradeParsGrade>(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1);
  385. gradeArray[gradeArray.Length - 1] = grade;
  386. POSDataElem.Grade = gradeArray;
  387. }
  388. DebugLog("AddAssignGradePar end");
  389. return true;
  390. }
  391. catch (Exception ex)
  392. {
  393. DebugLog("AddAssignGradePar Exception! " + ex.ToString());
  394. }
  395. return false;
  396. }
  397. public bool AddAssignGradeParsSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  398. {
  399. try
  400. {
  401. DebugLog("AddAssignGradeParsSend init");
  402. ServiceRequestAssignGradePars SvRes = null;
  403. string key = "AssignGradePars";
  404. if (serviceRequestClientList.ContainsKey(key))
  405. SvRes = (ServiceRequestAssignGradePars)(serviceRequestClientList[key]);
  406. if (SvRes != null)
  407. {
  408. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  409. serviceRequestClientList.Remove(key);
  410. DebugLog("AddAssignGradeParsSend end");
  411. return true;
  412. }
  413. }
  414. catch (Exception ex)
  415. {
  416. DebugLog("AddAssignGradeParsSend Exception! " + ex.ToString());
  417. }
  418. return false;
  419. }
  420. public void DefGradesResp(int requestId, string sOverallResult, ServiceResponseDefGrades sr)
  421. {
  422. try
  423. {
  424. string errorCode = sr.FDCdata[0].FDCStatus;
  425. DebugLog(string.Format("DefGradesResp errorCode={0}", errorCode));
  426. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  427. }
  428. catch (Exception ex)
  429. {
  430. DebugLog("DefGradesResp Exception! " + ex.ToString());
  431. }
  432. }
  433. #endregion
  434. #region Tanks
  435. public bool AddTank(int tankId, int gradeId, int capacity, int overflowLimit, int productHighLimit,
  436. int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit,
  437. int temperatureLowLimit, int leakMinimumElapsedTime, double leakVolumeTrigger)
  438. {
  439. return InternalAddTank(tankId, gradeId, null, capacity, overflowLimit, productHighLimit, productLowLimit,
  440. suctionLimit, waterHighLimit, temperatureHighLimit, temperatureLowLimit,
  441. leakMinimumElapsedTime, leakVolumeTrigger);
  442. }
  443. public bool AddTank(int tankId, int productId, int capacity, int overflowLimit, int productHighLimit,
  444. int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit,
  445. int temperatureLowLimit)
  446. {
  447. return InternalAddTank(tankId, null, productId, capacity, overflowLimit, productHighLimit, productLowLimit,
  448. suctionLimit, waterHighLimit, temperatureHighLimit, temperatureLowLimit,
  449. null, null);
  450. }
  451. private bool InternalAddTank(int tankId, int? gradeId, int? productId, int capacity, int overflowLimit, int productHighLimit, int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit, int temperatureLowLimit, int? leakMinimumElapsedTime, double? leakVolumeTrigger)
  452. {
  453. try
  454. {
  455. DebugLog("InternalAddTank init");
  456. ServiceRequestDefTanks SvRes = null;
  457. string key = "DefTanks";
  458. if (serviceRequestClientList.ContainsKey(key))
  459. SvRes = (ServiceRequestDefTanks)(serviceRequestClientList[key]);
  460. if (SvRes == null)
  461. {
  462. SvRes = new ServiceRequestDefTanks();
  463. SvRes.WorkstationID = this.clientSocket.workstationID;
  464. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  465. serviceRequestClientList.Add(key, SvRes);
  466. }
  467. else
  468. {
  469. if (SvRes.RequestType != "DefTanks")
  470. {
  471. DebugLog(string.Format("SvRes.RequestType={0} != DefTanks", SvRes.RequestType));
  472. return false;
  473. }
  474. }
  475. ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks POSDataElem = null;
  476. if (SvRes.POSdata != null)
  477. POSDataElem = SvRes.POSdata[0];
  478. else
  479. {
  480. ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks[] POSDataArray = null;
  481. POSDataElem = new ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks();
  482. IFSFManager.ArrayResize<ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  483. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  484. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  485. SvRes.POSdata = POSDataArray;
  486. }
  487. ServiceRequestDefTanks.DefTanksTank tank = null;
  488. if (POSDataElem.Tank != null)
  489. {
  490. foreach (ServiceRequestDefTanks.DefTanksTank tankTemp in POSDataElem.Tank)
  491. if (tankTemp.Id == Convert.ToString(tankId))
  492. tank = tankTemp;
  493. }
  494. if (tank == null && tankId > 0)
  495. {
  496. tank = new ServiceRequestDefTanks.DefTanksTank();
  497. tank.Id = Convert.ToString(tankId);
  498. if (gradeId != null)
  499. tank.GradeId = Convert.ToString((int)gradeId);
  500. if (productId != null)
  501. tank.ProductId = Convert.ToString((int)productId);
  502. tank.Capacity = Convert.ToString(capacity);
  503. tank.OverflowLimit = Convert.ToString(overflowLimit);
  504. tank.ProductHighLimit = Convert.ToString(productHighLimit);
  505. tank.ProductLowLimit = Convert.ToString(productLowLimit);
  506. tank.SuctionLimit = Convert.ToString(suctionLimit);
  507. tank.WaterHighLimit = FDCConvert.ToString(waterHighLimit);
  508. tank.TemperatureHighLimit = Convert.ToString(temperatureHighLimit);
  509. tank.TemperatureLowLimit = Convert.ToString(temperatureLowLimit);
  510. if (leakMinimumElapsedTime != null)
  511. tank.LeakMinimumElapsedTime = Convert.ToString((int)leakMinimumElapsedTime);
  512. if (leakVolumeTrigger != null)
  513. tank.LeakVolumeTrigger = FDCConvert.ToString((double)leakVolumeTrigger);
  514. ServiceRequestDefTanks.DefTanksTank[] tankArray = POSDataElem.Tank;
  515. IFSFManager.ArrayResize<ServiceRequestDefTanks.DefTanksTank>(ref tankArray, (tankArray != null) ? tankArray.Length + 1 : 1);
  516. tankArray[tankArray.Length - 1] = tank;
  517. POSDataElem.Tank = tankArray;
  518. }
  519. DebugLog("InternalAddTank end");
  520. return true;
  521. }
  522. catch (Exception ex)
  523. {
  524. DebugLog("InternalAddTank Exception! " + ex.ToString());
  525. }
  526. return false;
  527. }
  528. public bool AddTanksSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  529. {
  530. try
  531. {
  532. DebugLog("AddTanksSend init");
  533. ServiceRequestDefTanks SvRes = null;
  534. string key = "DefTanks";
  535. if (serviceRequestClientList.ContainsKey(key))
  536. SvRes = (ServiceRequestDefTanks)(serviceRequestClientList[key]);
  537. if (SvRes != null)
  538. {
  539. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  540. serviceRequestClientList.Remove(key);
  541. DebugLog("AddTanksSend end");
  542. return true;
  543. }
  544. }
  545. catch (Exception ex)
  546. {
  547. DebugLog("AddTanksSend Exception! " + ex.ToString());
  548. }
  549. return false;
  550. }
  551. public void DefTanksResp(int requestId, string sOverallResult, ServiceResponseDefTanks sr)
  552. {
  553. try
  554. {
  555. string errorCode = sr.FDCdata[0].FDCStatus;
  556. DebugLog(string.Format("DefTanksResp errorCode={0}", errorCode));
  557. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  558. }
  559. catch (Exception ex)
  560. {
  561. DebugLog("DefTanksResp Exception! " + ex.ToString());
  562. }
  563. }
  564. #endregion
  565. #region Tank Suctions
  566. public bool AddTankSuction(string tankSuctionId, TankSuctionType type)
  567. {
  568. try
  569. {
  570. DebugLog("AddTankSuction init");
  571. ServiceRequestDefTankSuctions SvRes = null;
  572. string key = "DefTankSuctions";
  573. if (serviceRequestClientList.ContainsKey(key))
  574. SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]);
  575. if (SvRes == null)
  576. {
  577. SvRes = new ServiceRequestDefTankSuctions();
  578. SvRes.WorkstationID = this.clientSocket.workstationID;
  579. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  580. serviceRequestClientList.Add(key, SvRes);
  581. }
  582. else
  583. {
  584. if (SvRes.RequestType != "DefTankSuctions")
  585. {
  586. DebugLog(string.Format("SvRes.RequestType={0} != DefTankSuctions", SvRes.RequestType));
  587. return false;
  588. }
  589. }
  590. ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions POSDataElem = null;
  591. if (SvRes.POSdata != null)
  592. POSDataElem = SvRes.POSdata[0];
  593. else
  594. {
  595. ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions[] POSDataArray = null;
  596. POSDataElem = new ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions();
  597. IFSFManager.ArrayResize<ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  598. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  599. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  600. SvRes.POSdata = POSDataArray;
  601. }
  602. ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuction = null;
  603. if (POSDataElem.TankSuction != null)
  604. {
  605. foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuctionTemp in POSDataElem.TankSuction)
  606. if (tankSuctionTemp.Id == tankSuctionId)
  607. tankSuction = tankSuctionTemp;
  608. }
  609. if (tankSuction == null && !string.IsNullOrEmpty(tankSuctionId))
  610. {
  611. tankSuction = new ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction();
  612. tankSuction.Id = tankSuctionId;
  613. tankSuction.Type = Convert.ToString(type);
  614. ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction[] tankSuctionArray = POSDataElem.TankSuction;
  615. IFSFManager.ArrayResize<ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction>(ref tankSuctionArray, (tankSuctionArray != null) ? tankSuctionArray.Length + 1 : 1);
  616. tankSuctionArray[tankSuctionArray.Length - 1] = tankSuction;
  617. POSDataElem.TankSuction = tankSuctionArray;
  618. }
  619. DebugLog("AddTankSuction end");
  620. return true;
  621. }
  622. catch (Exception ex)
  623. {
  624. DebugLog("AddTankSuction Exception! " + ex.ToString());
  625. }
  626. return false;
  627. }
  628. public bool AddTankSuctionTank(string tankSuctionId, int tankId)
  629. {
  630. try
  631. {
  632. DebugLog("AddTankSuctionTank init");
  633. ServiceRequestDefTankSuctions SvRes = null;
  634. string key = "DefTankSuctions";
  635. if (serviceRequestClientList.ContainsKey(key))
  636. SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]);
  637. if (SvRes == null)
  638. {
  639. DebugLog("RequestType DefTankSuctions NOT found!!! return FALSE");
  640. return false;
  641. }
  642. ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions POSDataElem = null;
  643. if (SvRes.POSdata != null)
  644. POSDataElem = SvRes.POSdata[0];
  645. else
  646. {
  647. ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions[] POSDataArray = null;
  648. POSDataElem = new ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions();
  649. IFSFManager.ArrayResize<ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  650. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  651. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  652. SvRes.POSdata = POSDataArray;
  653. }
  654. ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuction = null;
  655. if (POSDataElem.TankSuction != null)
  656. {
  657. foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuctionTemp in POSDataElem.TankSuction)
  658. if (tankSuctionTemp.Id == tankSuctionId)
  659. tankSuction = tankSuctionTemp;
  660. }
  661. if (tankSuction == null && !string.IsNullOrEmpty(tankSuctionId))
  662. {
  663. DebugLog(string.Format("tank suction id={0} NOT found!!! return FALSE", tankSuctionId));
  664. return false;
  665. }
  666. else
  667. {
  668. ServiceRequestDefTankSuctions.DefTankSuctionsTank tank = null;
  669. if (tankSuction.Tank != null)
  670. {
  671. foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTank tankTemp in tankSuction.Tank)
  672. if (tankTemp.Id == Convert.ToString(tankId))
  673. tank = tankTemp;
  674. }
  675. if (tank == null)
  676. {
  677. tank = new ServiceRequestDefTankSuctions.DefTankSuctionsTank();
  678. tank.Id = Convert.ToString(tankId);
  679. ServiceRequestDefTankSuctions.DefTankSuctionsTank[] tankArray = tankSuction.Tank;
  680. IFSFManager.ArrayResize<ServiceRequestDefTankSuctions.DefTankSuctionsTank>(ref tankArray, (tankArray != null) ? tankArray.Length + 1 : 1);
  681. tankArray[tankArray.Length - 1] = tank;
  682. tankSuction.Tank = tankArray;
  683. }
  684. }
  685. DebugLog("AddTankSuctionTank end");
  686. return true;
  687. }
  688. catch (Exception ex)
  689. {
  690. DebugLog("AddTankSuctionTank Exception! " + ex.ToString());
  691. }
  692. return false;
  693. }
  694. public bool AddTankSuctionsSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  695. {
  696. try
  697. {
  698. DebugLog("AddTankSuctionsSend init");
  699. ServiceRequestDefTankSuctions SvRes = null;
  700. string key = "DefTankSuctions";
  701. if (serviceRequestClientList.ContainsKey(key))
  702. SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]);
  703. if (SvRes != null)
  704. {
  705. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  706. serviceRequestClientList.Remove(key);
  707. DebugLog("AddTankSuctionsSend end");
  708. return true;
  709. }
  710. }
  711. catch (Exception ex)
  712. {
  713. DebugLog("AddTankSuctionsSend Exception! " + ex.ToString());
  714. }
  715. return false;
  716. }
  717. public void DefTankSuctionsResp(int requestId, string sOverallResult, ServiceResponseDefTankSuctions sr)
  718. {
  719. try
  720. {
  721. string errorCode = sr.FDCdata[0].FDCStatus;
  722. DebugLog(string.Format("DefTankSuctionsResp errorCode={0}", errorCode));
  723. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  724. }
  725. catch (Exception ex)
  726. {
  727. DebugLog("DefTankSuctionsResp Exception! " + ex.ToString());
  728. }
  729. }
  730. #endregion
  731. #region Fuel modes for fuel points
  732. public bool AddFuelMode(int id, string name, int authType, int maxAuthTime, int nozzleLayDownTime, int minGuardTime, int paymentType, double minVolume, double minMoney, int SupTransBufSize)
  733. {
  734. try
  735. {
  736. DebugLog("AddFuelMode init");
  737. ServiceRequestDefFuelMode SvRes = null;
  738. string key = "DefFuelMode";
  739. if (serviceRequestClientList.ContainsKey(key))
  740. SvRes = (ServiceRequestDefFuelMode)(serviceRequestClientList[key]);
  741. if (SvRes == null)
  742. {
  743. SvRes = new ServiceRequestDefFuelMode();
  744. SvRes.WorkstationID = this.clientSocket.workstationID;
  745. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  746. serviceRequestClientList.Add(key, SvRes);
  747. }
  748. else
  749. {
  750. if (SvRes.RequestType != "DefFuelMode" && SvRes.RequestType != "DefFPFuelModes")
  751. {
  752. DebugLog(string.Format("SvRes.RequestType={0} != DefFuelMode", SvRes.RequestType));
  753. return false;
  754. }
  755. }
  756. ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode POSDataElem = null;
  757. if (SvRes.POSdata != null)
  758. POSDataElem = SvRes.POSdata[0];
  759. else
  760. {
  761. ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode[] POSDataArray = null;
  762. POSDataElem = new ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode();
  763. IFSFManager.ArrayResize<ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  764. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  765. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  766. SvRes.POSdata = POSDataArray;
  767. }
  768. ServiceRequestDefFuelMode.DefFuelModeFuelMode fuelMode = null;
  769. if (POSDataElem.FuelMode != null)
  770. {
  771. foreach (ServiceRequestDefFuelMode.DefFuelModeFuelMode fuelModeTemp in POSDataElem.FuelMode)
  772. if (fuelModeTemp.Id == Convert.ToString(id))
  773. fuelMode = fuelModeTemp;
  774. }
  775. if (fuelMode == null && id > 0)
  776. {
  777. fuelMode = new ServiceRequestDefFuelMode.DefFuelModeFuelMode();
  778. fuelMode.Id = Convert.ToString(id);
  779. fuelMode.MaxAuthTime = Convert.ToString(maxAuthTime);
  780. fuelMode.MinGuardTime = Convert.ToString(minGuardTime);
  781. fuelMode.MinMoney = Convert.ToString(minMoney);
  782. fuelMode.MinVolume = Convert.ToString(minVolume);
  783. fuelMode.Name = Convert.ToString(name);
  784. fuelMode.NozzleLayDownTime = Convert.ToString(nozzleLayDownTime);
  785. fuelMode.PaymentType = Convert.ToString(paymentType);
  786. fuelMode.SupTransBufSize = Convert.ToString(SupTransBufSize);
  787. fuelMode.AuthType = Convert.ToString(authType);
  788. ServiceRequestDefFuelMode.DefFuelModeFuelMode[] fuelModeArray = POSDataElem.FuelMode;
  789. IFSFManager.ArrayResize<ServiceRequestDefFuelMode.DefFuelModeFuelMode>(ref fuelModeArray, (fuelModeArray != null) ? fuelModeArray.Length + 1 : 1);
  790. fuelModeArray[fuelModeArray.Length - 1] = fuelMode;
  791. POSDataElem.FuelMode = fuelModeArray;
  792. }
  793. DebugLog("AddFuelMode end");
  794. return true;
  795. }
  796. catch (Exception ex)
  797. {
  798. DebugLog("AddFuelMode Exception! " + ex.ToString());
  799. }
  800. return false;
  801. }
  802. public bool AddFuelModeSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  803. {
  804. try
  805. {
  806. DebugLog("AddFuelModeSend init");
  807. ServiceRequestDefFuelMode SvRes = null;
  808. string key = "DefFuelMode";
  809. if (serviceRequestClientList.ContainsKey(key))
  810. SvRes = (ServiceRequestDefFuelMode)(serviceRequestClientList[key]);
  811. if (SvRes != null)
  812. {
  813. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  814. serviceRequestClientList.Remove(key);
  815. DebugLog("AddFuelModeSend end");
  816. return true;
  817. }
  818. }
  819. catch (Exception ex)
  820. {
  821. DebugLog("AddFuelModeSend Exception! " + ex.ToString());
  822. }
  823. return false;
  824. }
  825. public void DefFuelModeResp(int requestId, string sOverallResult, ServiceResponseDefFuelMode sr)
  826. {
  827. try
  828. {
  829. string errorCode = sr.FDCdata[0].FDCStatus;
  830. DebugLog(string.Format("DefFuelModeResp errorCode={0}", errorCode));
  831. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  832. }
  833. catch (Exception ex)
  834. {
  835. DebugLog("DefFuelModeResp Exception! " + ex.ToString());
  836. }
  837. }
  838. #endregion
  839. #region Forecourt fuel mode
  840. public bool AddFCFuelMode(int fuellingType, double maxVolume, double maxMoney, int maxFuellingTime,
  841. int maxTimeNoProgress, int maxTimeToMinLimit, int presetOverrunLimit,
  842. int volumeDecimals, int amountDecimals, int priceDecimals)
  843. {
  844. try
  845. {
  846. DebugLog("AddFCFuelMode init");
  847. ServiceRequestDefFuellingMode SvRes = null;
  848. string key = "DefFuellingMode";
  849. if (serviceRequestClientList.ContainsKey(key))
  850. SvRes = (ServiceRequestDefFuellingMode)(serviceRequestClientList[key]);
  851. if (SvRes == null)
  852. {
  853. SvRes = new ServiceRequestDefFuellingMode();
  854. SvRes.WorkstationID = this.clientSocket.workstationID;
  855. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  856. serviceRequestClientList.Add(key, SvRes);
  857. }
  858. else
  859. {
  860. if (SvRes.RequestType != "DefFuellingMode" && SvRes.RequestType != "DefFCFuelMode")
  861. {
  862. DebugLog(string.Format("SvRes.RequestType={0} != DefFuellingMode", SvRes.RequestType));
  863. return false;
  864. }
  865. }
  866. ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode POSDataElem = null;
  867. if (SvRes.POSdata != null)
  868. POSDataElem = SvRes.POSdata[0];
  869. else
  870. {
  871. ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode[] POSDataArray = null;
  872. POSDataElem = new ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode();
  873. IFSFManager.ArrayResize<ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  874. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  875. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  876. SvRes.POSdata = POSDataArray;
  877. }
  878. POSDataElem.FuellingType = Convert.ToString(fuellingType);
  879. POSDataElem.MaxVolume = Convert.ToString(maxVolume);
  880. POSDataElem.MaxMoney = Convert.ToString(maxMoney);
  881. POSDataElem.MaxFuellingTime = Convert.ToString(maxFuellingTime);
  882. POSDataElem.MaxTimeNoProgress = Convert.ToString(maxTimeNoProgress);
  883. POSDataElem.MaxTimeToMinLimit = Convert.ToString(maxTimeToMinLimit);
  884. POSDataElem.PresetOverrunLimit = Convert.ToString(presetOverrunLimit);
  885. POSDataElem.VolumeDecimals = Convert.ToString(volumeDecimals);
  886. POSDataElem.AmountDecimals = Convert.ToString(amountDecimals);
  887. POSDataElem.PriceDecimals = Convert.ToString(priceDecimals);
  888. DebugLog("AddFCFuelMode end");
  889. return true;
  890. }
  891. catch (Exception ex)
  892. {
  893. DebugLog("AddFCFuelMode Exception! " + ex.ToString());
  894. }
  895. return false;
  896. }
  897. public bool AddFCFuelModeSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  898. {
  899. try
  900. {
  901. DebugLog("AddFCFuelModeSend init");
  902. ServiceRequestDefFuellingMode SvRes = null;
  903. string key = "DefFuellingMode";
  904. if (serviceRequestClientList.ContainsKey(key))
  905. SvRes = (ServiceRequestDefFuellingMode)(serviceRequestClientList[key]);
  906. if (SvRes != null)
  907. {
  908. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  909. serviceRequestClientList.Remove(key);
  910. DebugLog("AddFCFuelModeSend end");
  911. return true;
  912. }
  913. }
  914. catch (Exception ex)
  915. {
  916. DebugLog("AddFCFuelModeSend Exception! " + ex.ToString());
  917. }
  918. return false;
  919. }
  920. public void DefFuellingModeResp(int requestId, string sOverallResult, ServiceResponseDefFuellingMode sr)
  921. {
  922. try
  923. {
  924. string errorCode = sr.FDCdata[0].FDCStatus;
  925. DebugLog(string.Format("DefFuellingModeResp errorCode={0}", errorCode));
  926. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  927. }
  928. catch (Exception ex)
  929. {
  930. DebugLog("DefFuellingModeResp Exception! " + ex.ToString());
  931. }
  932. }
  933. #endregion
  934. #region Fuel points
  935. public bool AddFuelPoint(int id, int pumpType, string comChannelId, string IPAddress, int IPPort, int physicalAddress, int internalAddress)
  936. {
  937. try
  938. {
  939. DebugLog("AddFuelPoint init");
  940. ServiceRequestDefFuelPoint SvRes = null;
  941. string key = "DefFuelPoint";
  942. if (serviceRequestClientList.ContainsKey(key))
  943. SvRes = (ServiceRequestDefFuelPoint)(serviceRequestClientList[key]);
  944. if (SvRes == null)
  945. {
  946. SvRes = new ServiceRequestDefFuelPoint();
  947. SvRes.WorkstationID = this.clientSocket.workstationID;
  948. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  949. serviceRequestClientList.Add(key, SvRes);
  950. }
  951. else
  952. {
  953. if (SvRes.RequestType != "DefFuelPoint")
  954. {
  955. DebugLog(string.Format("SvRes.RequestType={0} != DefFuelPoint", SvRes.RequestType));
  956. return false;
  957. }
  958. }
  959. ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint POSDataElem = null;
  960. if (SvRes.POSdata != null)
  961. POSDataElem = SvRes.POSdata[0];
  962. else
  963. {
  964. ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint[] POSDataArray = null;
  965. POSDataElem = new ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint();
  966. IFSFManager.ArrayResize<ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  967. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  968. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  969. SvRes.POSdata = POSDataArray;
  970. }
  971. ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpoint = null;
  972. if (POSDataElem.FuelPoint != null)
  973. {
  974. foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpointTemp in POSDataElem.FuelPoint)
  975. if (fuelpointTemp.Id == Convert.ToString(id))
  976. fuelpoint = fuelpointTemp;
  977. }
  978. if (fuelpoint == null && id > 0)
  979. {
  980. fuelpoint = new ServiceRequestDefFuelPoint.DefFuelPointFuelPoint();
  981. fuelpoint.Id = Convert.ToString(id);
  982. fuelpoint.ComChannelId = comChannelId;
  983. fuelpoint.InternalAddress = Convert.ToString(internalAddress);
  984. fuelpoint.IPAddress = IPAddress;
  985. fuelpoint.IPPort = Convert.ToString(IPPort);
  986. fuelpoint.PhysicalAddress = Convert.ToString(physicalAddress);
  987. fuelpoint.PumpType = Convert.ToString(pumpType);
  988. ServiceRequestDefFuelPoint.DefFuelPointFuelPoint[] fuelpointArray = POSDataElem.FuelPoint;
  989. IFSFManager.ArrayResize<ServiceRequestDefFuelPoint.DefFuelPointFuelPoint>(ref fuelpointArray, (fuelpointArray != null) ? fuelpointArray.Length + 1 : 1);
  990. fuelpointArray[fuelpointArray.Length - 1] = fuelpoint;
  991. POSDataElem.FuelPoint = fuelpointArray;
  992. }
  993. DebugLog("AddFuelPoint end");
  994. return true;
  995. }
  996. catch (Exception ex)
  997. {
  998. DebugLog("AddFuelPoint Exception! " + ex.ToString());
  999. }
  1000. return false;
  1001. }
  1002. public bool AddFuelPoint(int id, int pumpProtocol, int pumpType, string comChannelId, string IPAddress,
  1003. int IPPort, int baudRate, int physicalAddress, int internalAddress)
  1004. {
  1005. try
  1006. {
  1007. DebugLog("AddFuelPoint init");
  1008. ServiceRequestDefFuelPoints SvRes = null;
  1009. string key = "DefFuelPoints";
  1010. if (serviceRequestClientList.ContainsKey(key))
  1011. SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]);
  1012. if (SvRes == null)
  1013. {
  1014. SvRes = new ServiceRequestDefFuelPoints();
  1015. SvRes.WorkstationID = this.clientSocket.workstationID;
  1016. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1017. serviceRequestClientList.Add(key, SvRes);
  1018. }
  1019. else
  1020. {
  1021. if (SvRes.RequestType != "DefFuelPoints")
  1022. {
  1023. DebugLog(string.Format("SvRes.RequestType={0} != DefFuelPoints", SvRes.RequestType));
  1024. return false;
  1025. }
  1026. }
  1027. ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints POSDataElem = null;
  1028. if (SvRes.POSdata != null)
  1029. POSDataElem = SvRes.POSdata[0];
  1030. else
  1031. {
  1032. ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints[] POSDataArray = null;
  1033. POSDataElem = new ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints();
  1034. IFSFManager.ArrayResize<ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1035. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1036. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1037. SvRes.POSdata = POSDataArray;
  1038. }
  1039. ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpoint = null;
  1040. if (POSDataElem.FuelPoint != null)
  1041. {
  1042. foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpointTemp in POSDataElem.FuelPoint)
  1043. if (fuelpointTemp.Id == Convert.ToString(id))
  1044. fuelpoint = fuelpointTemp;
  1045. }
  1046. if (fuelpoint == null && id > 0)
  1047. {
  1048. fuelpoint = new ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint();
  1049. fuelpoint.Id = Convert.ToString(id);
  1050. fuelpoint.PumpProtocol = Convert.ToString(pumpProtocol);
  1051. fuelpoint.PumpType = Convert.ToString(pumpType);
  1052. fuelpoint.ComChannelId = comChannelId;
  1053. fuelpoint.IPAddress = IPAddress;
  1054. fuelpoint.IPPort = Convert.ToString(IPPort);
  1055. fuelpoint.BaudRate = Convert.ToString(baudRate);
  1056. fuelpoint.PhysicalAddress = Convert.ToString(physicalAddress);
  1057. fuelpoint.InternalAddress = Convert.ToString(internalAddress);
  1058. ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint[] fuelpointArray = POSDataElem.FuelPoint;
  1059. IFSFManager.ArrayResize<ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint>(ref fuelpointArray, (fuelpointArray != null) ? fuelpointArray.Length + 1 : 1);
  1060. fuelpointArray[fuelpointArray.Length - 1] = fuelpoint;
  1061. POSDataElem.FuelPoint = fuelpointArray;
  1062. }
  1063. DebugLog("AddFuelPoint end");
  1064. return true;
  1065. }
  1066. catch (Exception ex)
  1067. {
  1068. DebugLog("AddFuelPoint Exception! " + ex.ToString());
  1069. }
  1070. return false;
  1071. }
  1072. public bool AddNozzle(int pumpId, int nozzleId)
  1073. {
  1074. try
  1075. {
  1076. DebugLog("AddNozzle init");
  1077. ServiceRequestDefFuelPoint SvRes = null;
  1078. string key = "DefFuelPoint";
  1079. if (serviceRequestClientList.ContainsKey(key))
  1080. SvRes = (ServiceRequestDefFuelPoint)(serviceRequestClientList[key]);
  1081. if (SvRes == null)
  1082. {
  1083. DebugLog("RequestType DefFuelPoint NOT found!!! return FALSE");
  1084. return false;
  1085. }
  1086. ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint POSDataElem = null;
  1087. if (SvRes.POSdata != null)
  1088. POSDataElem = SvRes.POSdata[0];
  1089. else
  1090. {
  1091. ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint[] POSDataArray = null;
  1092. POSDataElem = new ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint();
  1093. IFSFManager.ArrayResize<ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1094. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1095. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1096. SvRes.POSdata = POSDataArray;
  1097. }
  1098. ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpoint = null;
  1099. if (POSDataElem.FuelPoint != null)
  1100. {
  1101. foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpointTemp in POSDataElem.FuelPoint)
  1102. if (fuelpointTemp.Id == Convert.ToString(pumpId))
  1103. fuelpoint = fuelpointTemp;
  1104. }
  1105. if (fuelpoint == null && pumpId > 0)
  1106. {
  1107. DebugLog(string.Format("fuel point id={0} NOT found!!! return FALSE", pumpId));
  1108. return false;
  1109. }
  1110. else
  1111. {
  1112. ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle nozzle = null;
  1113. if (fuelpoint.Nozzle != null)
  1114. {
  1115. foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle nozzleTemp in fuelpoint.Nozzle)
  1116. if (nozzleTemp.Id == Convert.ToString(nozzleId))
  1117. nozzle = nozzleTemp;
  1118. }
  1119. if (nozzle == null)
  1120. {
  1121. nozzle = new ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle();
  1122. nozzle.Id = Convert.ToString(nozzleId);
  1123. ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle[] nozzleArray = fuelpoint.Nozzle;
  1124. IFSFManager.ArrayResize<ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle>(ref nozzleArray, (nozzleArray != null) ? nozzleArray.Length + 1 : 1);
  1125. nozzleArray[nozzleArray.Length - 1] = nozzle;
  1126. fuelpoint.Nozzle = nozzleArray;
  1127. }
  1128. }
  1129. DebugLog("AddNozzle end");
  1130. return true;
  1131. }
  1132. catch (Exception ex)
  1133. {
  1134. DebugLog("AddNozzle Exception! " + ex.ToString());
  1135. }
  1136. return false;
  1137. }
  1138. public bool AddNozzle(int pumpId, int nozzleId, int gradeId, string tankSuctionId)
  1139. {
  1140. return AddNozzle(pumpId, nozzleId, gradeId, tankSuctionId, null);
  1141. }
  1142. public bool AddNozzle(int pumpId, int nozzleId, int gradeId, string tankSuctionHighId, string tankSuctionLowId)
  1143. {
  1144. try
  1145. {
  1146. DebugLog("AddNozzle init");
  1147. ServiceRequestDefFuelPoints SvRes = null;
  1148. string key = "DefFuelPoints";
  1149. if (serviceRequestClientList.ContainsKey(key))
  1150. SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]);
  1151. if (SvRes == null)
  1152. {
  1153. DebugLog("RequestType DefFuelPoints NOT found!!! return FALSE");
  1154. return false;
  1155. }
  1156. ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints POSDataElem = null;
  1157. if (SvRes.POSdata != null)
  1158. POSDataElem = SvRes.POSdata[0];
  1159. else
  1160. {
  1161. ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints[] POSDataArray = null;
  1162. POSDataElem = new ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints();
  1163. IFSFManager.ArrayResize<ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1164. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1165. SvRes.POSdata = POSDataArray;
  1166. }
  1167. ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpoint = null;
  1168. if (POSDataElem.FuelPoint != null)
  1169. {
  1170. foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpointTemp in POSDataElem.FuelPoint)
  1171. if (fuelpointTemp.Id == Convert.ToString(pumpId))
  1172. fuelpoint = fuelpointTemp;
  1173. }
  1174. if (fuelpoint == null && pumpId > 0)
  1175. {
  1176. DebugLog(string.Format("fuel point id={0} NOT found!!! return FALSE", pumpId));
  1177. return false;
  1178. }
  1179. else
  1180. {
  1181. ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle nozzle = null;
  1182. if (fuelpoint.Nozzle != null)
  1183. {
  1184. foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle nozzleTemp in fuelpoint.Nozzle)
  1185. if (nozzleTemp.Id == Convert.ToString(nozzleId))
  1186. nozzle = nozzleTemp;
  1187. }
  1188. if (nozzle == null)
  1189. {
  1190. nozzle = new ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle();
  1191. nozzle.Id = Convert.ToString(nozzleId);
  1192. nozzle.GradeId = Convert.ToString(gradeId);
  1193. nozzle.TankSuctionId = tankSuctionHighId;
  1194. if (!string.IsNullOrEmpty(tankSuctionLowId))
  1195. nozzle.TankSuctionLowId = tankSuctionLowId;
  1196. ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle[] nozzleArray = fuelpoint.Nozzle;
  1197. IFSFManager.ArrayResize<ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle>(ref nozzleArray, (nozzleArray != null) ? nozzleArray.Length + 1 : 1);
  1198. nozzleArray[nozzleArray.Length - 1] = nozzle;
  1199. fuelpoint.Nozzle = nozzleArray;
  1200. }
  1201. }
  1202. DebugLog("AddNozzle end");
  1203. return true;
  1204. }
  1205. catch (Exception ex)
  1206. {
  1207. DebugLog("AddNozzle Exception! " + ex.ToString());
  1208. }
  1209. return false;
  1210. }
  1211. public bool AddFuelPointsSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1212. {
  1213. try
  1214. {
  1215. DebugLog("AddFuelPointsSend init");
  1216. ServiceRequestDefFuelPoints SvRes = null;
  1217. string key = "DefFuelPoints";
  1218. if (serviceRequestClientList.ContainsKey(key))
  1219. SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]);
  1220. if (SvRes != null)
  1221. {
  1222. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1223. serviceRequestClientList.Remove(key);
  1224. DebugLog("AddFuelPointsSend end");
  1225. return true;
  1226. }
  1227. }
  1228. catch (Exception ex)
  1229. {
  1230. DebugLog("AddFuelPointsSend Exception! " + ex.ToString());
  1231. }
  1232. return false;
  1233. }
  1234. public void DefFuelPointsResp(int requestId, string sOverallResult, ServiceResponseDefFuelPoints sr)
  1235. {
  1236. try
  1237. {
  1238. string errorCode = sr.FDCdata[0].FDCStatus;
  1239. DebugLog(string.Format("DefFuelPointsResp errorCode={0}", errorCode));
  1240. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  1241. }
  1242. catch (Exception ex)
  1243. {
  1244. DebugLog("DefFuelPointsResp Exception! " + ex.ToString());
  1245. }
  1246. }
  1247. #endregion
  1248. #region Assign grades to nozzles
  1249. public bool AssignGrade(int pumpId, int nozzleId, int gradeId)
  1250. {
  1251. try
  1252. {
  1253. DebugLog("AssignGrade init");
  1254. ServiceRequestAssignGrades SvRes = null;
  1255. string key = "AssignGrades";
  1256. if (serviceRequestClientList.ContainsKey(key))
  1257. SvRes = (ServiceRequestAssignGrades)(serviceRequestClientList[key]);
  1258. if (SvRes == null)
  1259. {
  1260. SvRes = new ServiceRequestAssignGrades();
  1261. SvRes.WorkstationID = this.clientSocket.workstationID;
  1262. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1263. serviceRequestClientList.Add(key, SvRes);
  1264. }
  1265. else
  1266. {
  1267. if (SvRes.RequestType != "AssignGrades")
  1268. {
  1269. DebugLog(string.Format("SvRes.RequestType={0} != AssignGrades", SvRes.RequestType));
  1270. return false;
  1271. }
  1272. }
  1273. ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades POSDataElem = null;
  1274. if (SvRes.POSdata != null)
  1275. POSDataElem = SvRes.POSdata[0];
  1276. else
  1277. {
  1278. ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades[] POSDataArray = null;
  1279. POSDataElem = new ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades();
  1280. IFSFManager.ArrayResize<ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1281. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1282. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1283. SvRes.POSdata = POSDataArray;
  1284. }
  1285. ServiceRequestAssignGrades.AssignGradesFuelPoint gradeFP = null;
  1286. if (POSDataElem.FuelPoint != null)
  1287. {
  1288. foreach (ServiceRequestAssignGrades.AssignGradesFuelPoint gradeFPTemp in POSDataElem.FuelPoint)
  1289. if (gradeFPTemp.Id == Convert.ToString(pumpId))
  1290. gradeFP = gradeFPTemp;
  1291. }
  1292. if (gradeFP == null && pumpId > 0)
  1293. {
  1294. gradeFP = new ServiceRequestAssignGrades.AssignGradesFuelPoint();
  1295. gradeFP.Id = Convert.ToString(pumpId);
  1296. ServiceRequestAssignGrades.AssignGradesFuelPoint[] gradeFPArray = POSDataElem.FuelPoint;
  1297. IFSFManager.ArrayResize<ServiceRequestAssignGrades.AssignGradesFuelPoint>(ref gradeFPArray, (gradeFPArray != null) ? gradeFPArray.Length + 1 : 1);
  1298. gradeFPArray[gradeFPArray.Length - 1] = gradeFP;
  1299. POSDataElem.FuelPoint = gradeFPArray;
  1300. }
  1301. ServiceRequestAssignGrades.AssignGradesFuelPointNozzle gradeNozzle = null;
  1302. if (gradeFP.Nozzle != null)
  1303. {
  1304. foreach (ServiceRequestAssignGrades.AssignGradesFuelPointNozzle gradeNozzleTemp in gradeFP.Nozzle)
  1305. if (gradeNozzleTemp.Id == Convert.ToString(nozzleId))
  1306. gradeNozzle = gradeNozzleTemp;
  1307. }
  1308. if (gradeNozzle == null && nozzleId > 0)
  1309. {
  1310. gradeNozzle = new ServiceRequestAssignGrades.AssignGradesFuelPointNozzle();
  1311. gradeNozzle.Id = Convert.ToString(nozzleId);
  1312. gradeNozzle.GradeId = Convert.ToString(gradeId);
  1313. ServiceRequestAssignGrades.AssignGradesFuelPointNozzle[] gradeNozzleArray = gradeFP.Nozzle;
  1314. IFSFManager.ArrayResize<ServiceRequestAssignGrades.AssignGradesFuelPointNozzle>(ref gradeNozzleArray, (gradeNozzleArray != null) ? gradeNozzleArray.Length + 1 : 1);
  1315. gradeNozzleArray[gradeNozzleArray.Length - 1] = gradeNozzle;
  1316. gradeFP.Nozzle = gradeNozzleArray;
  1317. }
  1318. DebugLog("AssignGrade end");
  1319. return true;
  1320. }
  1321. catch (Exception ex)
  1322. {
  1323. DebugLog("AssignGrade Exception! " + ex.ToString());
  1324. }
  1325. return false;
  1326. }
  1327. public bool AssignGradesSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1328. {
  1329. try
  1330. {
  1331. DebugLog("AssignGradesSend init");
  1332. ServiceRequestAssignGrades SvRes = null;
  1333. string key = "AssignGrades";
  1334. if (serviceRequestClientList.ContainsKey(key))
  1335. SvRes = (ServiceRequestAssignGrades)(serviceRequestClientList[key]);
  1336. if (SvRes != null)
  1337. {
  1338. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1339. serviceRequestClientList.Remove(key);
  1340. DebugLog("AssignGradesSend end");
  1341. return true;
  1342. }
  1343. }
  1344. catch (Exception ex)
  1345. {
  1346. DebugLog("AssignGradesSend Exception! " + ex.ToString());
  1347. }
  1348. return false;
  1349. }
  1350. #endregion
  1351. #region Assign meters to fuel points
  1352. public bool AssignMeter(int pumpId, int gradeId, int meterId, int part)
  1353. {
  1354. try
  1355. {
  1356. DebugLog("AssignMeter init");
  1357. ServiceRequestAssignMeters SvRes = null;
  1358. string key = "AssignMeters";
  1359. if (serviceRequestClientList.ContainsKey(key))
  1360. SvRes = (ServiceRequestAssignMeters)(serviceRequestClientList[key]);
  1361. if (SvRes == null)
  1362. {
  1363. SvRes = new ServiceRequestAssignMeters();
  1364. SvRes.WorkstationID = this.clientSocket.workstationID;
  1365. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1366. serviceRequestClientList.Add(key, SvRes);
  1367. }
  1368. else
  1369. {
  1370. if (SvRes.RequestType != "AssignMeters")
  1371. {
  1372. DebugLog(string.Format("SvRes.RequestType={0} != AssignMeters", SvRes.RequestType));
  1373. return false;
  1374. }
  1375. }
  1376. ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters POSDataElem = null;
  1377. if (SvRes.POSdata != null)
  1378. POSDataElem = SvRes.POSdata[0];
  1379. else
  1380. {
  1381. ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters[] POSDataArray = null;
  1382. POSDataElem = new ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters();
  1383. IFSFManager.ArrayResize<ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1384. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1385. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1386. SvRes.POSdata = POSDataArray;
  1387. }
  1388. ServiceRequestAssignMeters.AssignMetersFuelPoint meterFP = null;
  1389. if (POSDataElem.FuelPoint != null)
  1390. {
  1391. foreach (ServiceRequestAssignMeters.AssignMetersFuelPoint meterFPTemp in POSDataElem.FuelPoint)
  1392. if (meterFPTemp.Id == Convert.ToString(pumpId))
  1393. meterFP = meterFPTemp;
  1394. }
  1395. if (meterFP == null && pumpId > 0)
  1396. {
  1397. meterFP = new ServiceRequestAssignMeters.AssignMetersFuelPoint();
  1398. meterFP.Id = Convert.ToString(pumpId);
  1399. ServiceRequestAssignMeters.AssignMetersFuelPoint[] meterFPArray = POSDataElem.FuelPoint;
  1400. IFSFManager.ArrayResize<ServiceRequestAssignMeters.AssignMetersFuelPoint>(ref meterFPArray, (meterFPArray != null) ? meterFPArray.Length + 1 : 1);
  1401. meterFPArray[meterFPArray.Length - 1] = meterFP;
  1402. POSDataElem.FuelPoint = meterFPArray;
  1403. }
  1404. ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption gradeOption = null;
  1405. if (meterFP.GradeOption != null)
  1406. {
  1407. foreach (ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption gradeOptionTemp in meterFP.GradeOption)
  1408. if (gradeOptionTemp.Id == Convert.ToString(gradeId))
  1409. gradeOption = gradeOptionTemp;
  1410. }
  1411. if (gradeOption == null && gradeId > 0)
  1412. {
  1413. gradeOption = new ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption();
  1414. gradeOption.Id = Convert.ToString(gradeId);
  1415. ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption[] gradeOptionArray = meterFP.GradeOption;
  1416. IFSFManager.ArrayResize<ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption>(ref gradeOptionArray, (gradeOptionArray != null) ? gradeOptionArray.Length + 1 : 1);
  1417. gradeOptionArray[gradeOptionArray.Length - 1] = gradeOption;
  1418. meterFP.GradeOption = gradeOptionArray;
  1419. }
  1420. ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter gradeOptionMeter = null;
  1421. if (gradeOption.Meter != null)
  1422. {
  1423. foreach (ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter gradeOptionMeterTemp in gradeOption.Meter)
  1424. if (gradeOptionMeterTemp.Id == Convert.ToString(meterId))
  1425. gradeOptionMeter = gradeOptionMeterTemp;
  1426. }
  1427. if (gradeOptionMeter == null && meterId > 0)
  1428. {
  1429. gradeOptionMeter = new ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter();
  1430. gradeOptionMeter.Id = Convert.ToString(meterId);
  1431. gradeOptionMeter.Part = Convert.ToString(part);
  1432. ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter[] gradeOptionMeterArray = gradeOption.Meter;
  1433. IFSFManager.ArrayResize<ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter>(ref gradeOptionMeterArray, (gradeOptionMeterArray != null) ? gradeOptionMeterArray.Length + 1 : 1);
  1434. gradeOptionMeterArray[gradeOptionMeterArray.Length - 1] = gradeOptionMeter;
  1435. gradeOption.Meter = gradeOptionMeterArray;
  1436. }
  1437. DebugLog("AssignMeter end");
  1438. return true;
  1439. }
  1440. catch (Exception ex)
  1441. {
  1442. DebugLog("AssignMeter Exception! " + ex.ToString());
  1443. }
  1444. return false;
  1445. }
  1446. public bool AssignMetersSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1447. {
  1448. try
  1449. {
  1450. DebugLog("AssignMetersSend init");
  1451. ServiceRequestAssignMeters SvRes = null;
  1452. string key = "AssignMeters";
  1453. if (serviceRequestClientList.ContainsKey(key))
  1454. SvRes = (ServiceRequestAssignMeters)(serviceRequestClientList[key]);
  1455. if (SvRes != null)
  1456. {
  1457. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1458. serviceRequestClientList.Remove(key);
  1459. DebugLog("AssignMetersSend end");
  1460. return true;
  1461. }
  1462. }
  1463. catch (Exception ex)
  1464. {
  1465. DebugLog("AssignMetersSend Exception! " + ex.ToString());
  1466. }
  1467. return false;
  1468. }
  1469. #endregion
  1470. #region Assign tanks to fuel points
  1471. public bool AssignTank(int pumpId, int meterId, int tankId)
  1472. {
  1473. try
  1474. {
  1475. DebugLog("AssignTank init");
  1476. ServiceRequestAssignTanks SvRes = null;
  1477. string key = "AssignTanks";
  1478. if (serviceRequestClientList.ContainsKey(key))
  1479. SvRes = (ServiceRequestAssignTanks)(serviceRequestClientList[key]);
  1480. if (SvRes == null)
  1481. {
  1482. SvRes = new ServiceRequestAssignTanks();
  1483. SvRes.WorkstationID = this.clientSocket.workstationID;
  1484. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1485. serviceRequestClientList.Add(key, SvRes);
  1486. }
  1487. else
  1488. {
  1489. if (SvRes.RequestType != "AssignTanks")
  1490. {
  1491. DebugLog(string.Format("SvRes.RequestType={0} != AssignTanks", SvRes.RequestType));
  1492. return false;
  1493. }
  1494. }
  1495. ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks POSDataElem = null;
  1496. if (SvRes.POSdata != null)
  1497. POSDataElem = SvRes.POSdata[0];
  1498. else
  1499. {
  1500. ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks[] POSDataArray = null;
  1501. POSDataElem = new ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks();
  1502. IFSFManager.ArrayResize<ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1503. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1504. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1505. SvRes.POSdata = POSDataArray;
  1506. }
  1507. ServiceRequestAssignTanks.AssignTanksFuelPoint tankFP = null;
  1508. if (POSDataElem.FuelPoint != null)
  1509. {
  1510. foreach (ServiceRequestAssignTanks.AssignTanksFuelPoint tankFPTemp in POSDataElem.FuelPoint)
  1511. if (tankFPTemp.Id == Convert.ToString(pumpId))
  1512. tankFP = tankFPTemp;
  1513. }
  1514. if (tankFP == null && pumpId > 0)
  1515. {
  1516. tankFP = new ServiceRequestAssignTanks.AssignTanksFuelPoint();
  1517. tankFP.Id = Convert.ToString(pumpId);
  1518. ServiceRequestAssignTanks.AssignTanksFuelPoint[] tankFPArray = POSDataElem.FuelPoint;
  1519. IFSFManager.ArrayResize<ServiceRequestAssignTanks.AssignTanksFuelPoint>(ref tankFPArray, (tankFPArray != null) ? tankFPArray.Length + 1 : 1);
  1520. tankFPArray[tankFPArray.Length - 1] = tankFP;
  1521. POSDataElem.FuelPoint = tankFPArray;
  1522. }
  1523. ServiceRequestAssignTanks.AssignTanksFuelPointMeter tankMeter = null;
  1524. if (tankFP.Meter != null)
  1525. {
  1526. foreach (ServiceRequestAssignTanks.AssignTanksFuelPointMeter tankMeterTemp in tankFP.Meter)
  1527. if (tankMeterTemp.Id == Convert.ToString(meterId))
  1528. tankMeter = tankMeterTemp;
  1529. }
  1530. if (tankMeter == null && meterId > 0)
  1531. {
  1532. tankMeter = new ServiceRequestAssignTanks.AssignTanksFuelPointMeter();
  1533. tankMeter.Id = Convert.ToString(meterId);
  1534. tankMeter.Tank = Convert.ToString(tankId);
  1535. ServiceRequestAssignTanks.AssignTanksFuelPointMeter[] tankMeterArray = tankFP.Meter;
  1536. IFSFManager.ArrayResize<ServiceRequestAssignTanks.AssignTanksFuelPointMeter>(ref tankMeterArray, (tankMeterArray != null) ? tankMeterArray.Length + 1 : 1);
  1537. tankMeterArray[tankMeterArray.Length - 1] = tankMeter;
  1538. tankFP.Meter = tankMeterArray;
  1539. }
  1540. DebugLog("AssignTank end");
  1541. return true;
  1542. }
  1543. catch (Exception ex)
  1544. {
  1545. DebugLog("AssignTank Exception! " + ex.ToString());
  1546. }
  1547. return false;
  1548. }
  1549. public bool AssignTanksSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1550. {
  1551. try
  1552. {
  1553. DebugLog("AssignTanksSend init");
  1554. ServiceRequestAssignTanks SvRes = null;
  1555. string key = "AssignTanks";
  1556. if (serviceRequestClientList.ContainsKey(key))
  1557. SvRes = (ServiceRequestAssignTanks)(serviceRequestClientList[key]);
  1558. if (SvRes != null)
  1559. {
  1560. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1561. serviceRequestClientList.Remove(key);
  1562. DebugLog("AssignTanksSend end");
  1563. return true;
  1564. }
  1565. }
  1566. catch (Exception ex)
  1567. {
  1568. DebugLog("AssignTanksSend Exception! " + ex.ToString());
  1569. }
  1570. return false;
  1571. }
  1572. #endregion
  1573. #region Price poles
  1574. public bool AddPricePole(string id, int type, int physicalAddress, int internalAddress, string COMPort, int refreshTime)
  1575. {
  1576. try
  1577. {
  1578. DebugLog(string.Format("AddPricePole init: id={0}, type={1}, physicalAddress={2}, internalAddress={3}, COMPort={4}, refreshTime={5}", id, type, physicalAddress, internalAddress, COMPort, refreshTime));
  1579. ServiceRequestDefPricePole SvRes = null;
  1580. string key = "DefPricePole";
  1581. if (serviceRequestClientList.ContainsKey(key))
  1582. SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]);
  1583. if (SvRes == null)
  1584. {
  1585. SvRes = new ServiceRequestDefPricePole();
  1586. SvRes.WorkstationID = this.clientSocket.workstationID;
  1587. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1588. serviceRequestClientList.Add(key, SvRes);
  1589. }
  1590. else
  1591. {
  1592. if (SvRes.RequestType != "DefPricePole" && SvRes.RequestType != "DefPricePoles")
  1593. {
  1594. DebugLog(string.Format("SvRes.RequestType={0} != DefPricePole", SvRes.RequestType));
  1595. return false;
  1596. }
  1597. }
  1598. ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole POSDataElem = null;
  1599. if (SvRes.POSdata != null)
  1600. POSDataElem = SvRes.POSdata[0];
  1601. else
  1602. {
  1603. ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole[] POSDataArray = null;
  1604. POSDataElem = new ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole();
  1605. IFSFManager.ArrayResize<ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1606. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1607. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1608. SvRes.POSdata = POSDataArray;
  1609. }
  1610. ServiceRequestDefPricePole.DefPricePolePricePole pricePole = null;
  1611. if (POSDataElem.PricePole != null)
  1612. {
  1613. foreach (ServiceRequestDefPricePole.DefPricePolePricePole pricePoleTemp in POSDataElem.PricePole)
  1614. if (pricePoleTemp.Id == Convert.ToString(id))
  1615. pricePole = pricePoleTemp;
  1616. }
  1617. if (pricePole == null && !string.IsNullOrEmpty(id))
  1618. {
  1619. pricePole = new ServiceRequestDefPricePole.DefPricePolePricePole();
  1620. pricePole.Id = id;
  1621. pricePole.Type = Convert.ToString(type);
  1622. if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0100)
  1623. pricePole.COMPort = COMPort;
  1624. else
  1625. pricePole.ComChannelId = COMPort;
  1626. pricePole.PhysicalAddress = Convert.ToString(physicalAddress);
  1627. pricePole.InternalAddress = Convert.ToString(internalAddress);
  1628. pricePole.RefreshTime = Convert.ToString(refreshTime);
  1629. ServiceRequestDefPricePole.DefPricePolePricePole[] pricePoleArray = POSDataElem.PricePole;
  1630. IFSFManager.ArrayResize<ServiceRequestDefPricePole.DefPricePolePricePole>(ref pricePoleArray, (pricePoleArray != null) ? pricePoleArray.Length + 1 : 1);
  1631. pricePoleArray[pricePoleArray.Length - 1] = pricePole;
  1632. POSDataElem.PricePole = pricePoleArray;
  1633. }
  1634. DebugLog("AddPricePole end");
  1635. return true;
  1636. }
  1637. catch (Exception ex)
  1638. {
  1639. DebugLog("AddPricePole Exception! " + ex.ToString());
  1640. }
  1641. return false;
  1642. }
  1643. public bool AddPricePoleRow(string id, int gradeId, int fuelMode, int position)
  1644. {
  1645. try
  1646. {
  1647. DebugLog(string.Format("AddPricePoleRow init: pricePoleId={0}, gradeId={1}, fuelMode={2}, position={3}", id, gradeId, fuelMode, position));
  1648. ServiceRequestDefPricePole SvRes = null;
  1649. string key = "DefPricePole";
  1650. if (serviceRequestClientList.ContainsKey(key))
  1651. SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]);
  1652. if (SvRes == null)
  1653. {
  1654. DebugLog("RequestType DefPricePole NOT found!!! return FALSE");
  1655. return false;
  1656. }
  1657. ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole POSDataElem = null;
  1658. if (SvRes.POSdata != null)
  1659. POSDataElem = SvRes.POSdata[0];
  1660. else
  1661. {
  1662. ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole[] POSDataArray = null;
  1663. POSDataElem = new ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole();
  1664. IFSFManager.ArrayResize<ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1665. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1666. SvRes.POSdata = POSDataArray;
  1667. }
  1668. ServiceRequestDefPricePole.DefPricePolePricePole pricePole = null;
  1669. if (POSDataElem.PricePole != null)
  1670. {
  1671. foreach (ServiceRequestDefPricePole.DefPricePolePricePole pricePoleTemp in POSDataElem.PricePole)
  1672. if (pricePoleTemp.Id == id)
  1673. pricePole = pricePoleTemp;
  1674. }
  1675. if (pricePole == null)
  1676. {
  1677. DebugLog(string.Format("PricePole id={0} NOT found!!! return FALSE", id));
  1678. return false;
  1679. }
  1680. else
  1681. {
  1682. ServiceRequestDefPricePole.DefPricePolePricePoleGrade grade = null;
  1683. if (pricePole.Grade != null)
  1684. {
  1685. foreach (ServiceRequestDefPricePole.DefPricePolePricePoleGrade gradeTemp in pricePole.Grade)
  1686. if (gradeTemp.Position == Convert.ToString(position))
  1687. grade = gradeTemp;
  1688. }
  1689. if (grade == null)
  1690. {
  1691. grade = new ServiceRequestDefPricePole.DefPricePolePricePoleGrade();
  1692. grade.Id = Convert.ToString(gradeId);
  1693. grade.FuelMode = Convert.ToString(fuelMode);
  1694. grade.Position = Convert.ToString(position);
  1695. ServiceRequestDefPricePole.DefPricePolePricePoleGrade[] gradeArray = pricePole.Grade;
  1696. IFSFManager.ArrayResize<ServiceRequestDefPricePole.DefPricePolePricePoleGrade>(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1);
  1697. gradeArray[gradeArray.Length - 1] = grade;
  1698. pricePole.Grade = gradeArray;
  1699. }
  1700. }
  1701. DebugLog("AddPricePoleRow end");
  1702. return true;
  1703. }
  1704. catch (Exception ex)
  1705. {
  1706. DebugLog("AddPricePoleRow Exception! " + ex.ToString());
  1707. }
  1708. return false;
  1709. }
  1710. public bool AddPricePoleSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1711. {
  1712. try
  1713. {
  1714. DebugLog("AddPricePoleSend init");
  1715. ServiceRequestDefPricePole SvRes = null;
  1716. string key = "DefPricePole";
  1717. if (serviceRequestClientList.ContainsKey(key))
  1718. SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]);
  1719. if (SvRes != null)
  1720. {
  1721. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1722. serviceRequestClientList.Remove(key);
  1723. DebugLog("AddPricePoleSend end");
  1724. return true;
  1725. }
  1726. }
  1727. catch (Exception ex)
  1728. {
  1729. DebugLog("AddPricePoleSend Exception! " + ex.ToString());
  1730. }
  1731. return false;
  1732. }
  1733. public void DefPricePoleResp(int requestId, string sOverallResult, ServiceResponseDefPricePole sr)
  1734. {
  1735. try
  1736. {
  1737. string errorCode = sr.FDCdata[0].FDCStatus;
  1738. DebugLog(string.Format("DefPricePoleResp errorCode={0}", errorCode));
  1739. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  1740. }
  1741. catch (Exception ex)
  1742. {
  1743. DebugLog("DefPricePoleResp Exception! " + ex.ToString());
  1744. }
  1745. }
  1746. #endregion
  1747. #region Price sets
  1748. public bool LoadPriceset(int id, int gradeId, double price)
  1749. {
  1750. return false;
  1751. }
  1752. public bool LoadPricesetSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1753. {
  1754. return false;
  1755. }
  1756. #endregion
  1757. #region Tank monitors
  1758. public bool AddTankMonitor(int id, int type, string COMPort, int timeBetweenRead, int sendTransactions, int messageSentUnsolicited, int deliverySource)
  1759. {
  1760. try
  1761. {
  1762. DebugLog(string.Format("AddTankMonitor init: id={0}, type={1}, COMPort={2}, timeBetweenRead={3}, sendTransactions={4}, messageSentUnsolicited={5}, deliverySource={6}", id, type, COMPort, timeBetweenRead, sendTransactions, messageSentUnsolicited, deliverySource));
  1763. ServiceRequestDefTankMonitor SvRes = null;
  1764. string key = "DefTankMonitor";
  1765. if (serviceRequestClientList.ContainsKey(key))
  1766. SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]);
  1767. if (SvRes == null)
  1768. {
  1769. SvRes = new ServiceRequestDefTankMonitor();
  1770. SvRes.WorkstationID = this.clientSocket.workstationID;
  1771. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1772. serviceRequestClientList.Add(key, SvRes);
  1773. }
  1774. else
  1775. {
  1776. if (SvRes.RequestType != "DefTankMonitor" && SvRes.RequestType != "DefTankMonitors")
  1777. {
  1778. DebugLog(string.Format("SvRes.RequestType={0} != DefTankMonitor", SvRes.RequestType));
  1779. return false;
  1780. }
  1781. }
  1782. ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor POSDataElem = null;
  1783. if (SvRes.POSdata != null)
  1784. POSDataElem = SvRes.POSdata[0];
  1785. else
  1786. {
  1787. ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor[] POSDataArray = null;
  1788. POSDataElem = new ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor();
  1789. IFSFManager.ArrayResize<ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1790. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1791. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1792. SvRes.POSdata = POSDataArray;
  1793. }
  1794. ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitor = null;
  1795. if (POSDataElem.TankMonitor != null)
  1796. {
  1797. foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitorTemp in POSDataElem.TankMonitor)
  1798. if (tankMonitorTemp.Id == Convert.ToString(id))
  1799. tankMonitor = tankMonitorTemp;
  1800. }
  1801. if (tankMonitor == null && id > 0)
  1802. {
  1803. tankMonitor = new ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor();
  1804. tankMonitor.Id = Convert.ToString(id);
  1805. tankMonitor.Type = Convert.ToString(type);
  1806. if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0100)
  1807. tankMonitor.COMPort = COMPort;
  1808. else
  1809. tankMonitor.ComChannelId = COMPort;
  1810. tankMonitor.TimeBetweenRead = Convert.ToString(timeBetweenRead);
  1811. tankMonitor.SendTransactions = Convert.ToString(sendTransactions);
  1812. tankMonitor.MessageSentUnsolicited = Convert.ToString(messageSentUnsolicited);
  1813. if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0200 && deliverySource <= 2)
  1814. tankMonitor.DeliverySource = Convert.ToString(deliverySource);
  1815. ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor[] tankMonitorArray = POSDataElem.TankMonitor;
  1816. IFSFManager.ArrayResize<ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor>(ref tankMonitorArray, (tankMonitorArray != null) ? tankMonitorArray.Length + 1 : 1);
  1817. tankMonitorArray[tankMonitorArray.Length - 1] = tankMonitor;
  1818. POSDataElem.TankMonitor = tankMonitorArray;
  1819. }
  1820. DebugLog("AddTankMonitor end");
  1821. return true;
  1822. }
  1823. catch (Exception ex)
  1824. {
  1825. DebugLog("AddTankMonitor Exception! " + ex.ToString());
  1826. }
  1827. return false;
  1828. }
  1829. public bool AddTankProbe(int tankMonitorId, string probeSN, int tankId, double floatOffset, double minimumHeight, int boardNumber, int connector)
  1830. {
  1831. try
  1832. {
  1833. DebugLog(string.Format("AddTankProbe init: tankMonitorId={0}, probeSN={1}, tankId={2}, boardNumber={3}, connector={4}", tankMonitorId, probeSN, tankId, boardNumber, connector));
  1834. ServiceRequestDefTankMonitor SvRes = null;
  1835. string key = "DefTankMonitor";
  1836. if (serviceRequestClientList.ContainsKey(key))
  1837. SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]);
  1838. if (SvRes == null)
  1839. {
  1840. DebugLog("RequestType DefTankMonitor NOT found!!! return FALSE");
  1841. return false;
  1842. }
  1843. ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor POSDataElem = null;
  1844. if (SvRes.POSdata != null)
  1845. POSDataElem = SvRes.POSdata[0];
  1846. else
  1847. {
  1848. ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor[] POSDataArray = null;
  1849. POSDataElem = new ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor();
  1850. IFSFManager.ArrayResize<ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1851. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1852. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1853. SvRes.POSdata = POSDataArray;
  1854. }
  1855. ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitor = null;
  1856. if (POSDataElem.TankMonitor != null)
  1857. {
  1858. foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitorTemp in POSDataElem.TankMonitor)
  1859. if (tankMonitorTemp.Id == Convert.ToString(tankMonitorId))
  1860. tankMonitor = tankMonitorTemp;
  1861. }
  1862. if (tankMonitor == null)
  1863. {
  1864. DebugLog(string.Format("TankMonitor id={0} NOT found!!! return FALSE", tankMonitorId));
  1865. return false;
  1866. }
  1867. else
  1868. {
  1869. ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe probe = null;
  1870. if (tankMonitor.Probe != null)
  1871. {
  1872. foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe probeTemp in tankMonitor.Probe)
  1873. if (probeTemp.Id == probeSN)
  1874. probe = probeTemp;
  1875. }
  1876. if (probe == null)
  1877. {
  1878. probe = new ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe();
  1879. probe.Id = probeSN;
  1880. probe.TankId = Convert.ToString(tankId);
  1881. probe.FloatOffset = FDCConvert.ToString(floatOffset);
  1882. probe.MinimumHeight = FDCConvert.ToString(minimumHeight);
  1883. probe.BoardNumber = Convert.ToString(boardNumber);
  1884. probe.Connector = Convert.ToString(connector);
  1885. ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe[] probeArray = tankMonitor.Probe;
  1886. IFSFManager.ArrayResize<ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe>(ref probeArray, (probeArray != null) ? probeArray.Length + 1 : 1);
  1887. probeArray[probeArray.Length - 1] = probe;
  1888. tankMonitor.Probe = probeArray;
  1889. }
  1890. }
  1891. DebugLog("AddTankProbe end");
  1892. return true;
  1893. }
  1894. catch (Exception ex)
  1895. {
  1896. DebugLog("AddTankProbe Exception! " + ex.ToString());
  1897. }
  1898. return false;
  1899. }
  1900. public bool AddTankMonitorSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  1901. {
  1902. try
  1903. {
  1904. DebugLog("AddTankMonitorSend init");
  1905. ServiceRequestDefTankMonitor SvRes = null;
  1906. string key = "DefTankMonitor";
  1907. if (serviceRequestClientList.ContainsKey(key))
  1908. SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]);
  1909. if (SvRes != null)
  1910. {
  1911. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  1912. serviceRequestClientList.Remove(key);
  1913. DebugLog("AddTankMonitorSend end");
  1914. return true;
  1915. }
  1916. }
  1917. catch (Exception ex)
  1918. {
  1919. DebugLog("AddTankMonitorSend Exception! " + ex.ToString());
  1920. }
  1921. return false;
  1922. }
  1923. public void DefTankMonitorResp(int requestId, string sOverallResult, ServiceResponseDefTankMonitor sr)
  1924. {
  1925. try
  1926. {
  1927. string errorCode = sr.FDCdata[0].FDCStatus;
  1928. DebugLog(string.Format("DefTankMonitorResp errorCode={0}", errorCode));
  1929. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  1930. }
  1931. catch (Exception ex)
  1932. {
  1933. DebugLog("DefTankMonitorResp Exception! " + ex.ToString());
  1934. }
  1935. }
  1936. #endregion
  1937. #region Fuel opration modes
  1938. public bool AddFPOperationsMode(int id, string name)
  1939. {
  1940. try
  1941. {
  1942. DebugLog(string.Format("AddFPOperationsMode init: id={0}", id));
  1943. ServiceRequestDefFPOperationModes SvRes = null;
  1944. string key = "DefFPOperationModes";
  1945. if (serviceRequestClientList.ContainsKey(key))
  1946. SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]);
  1947. if (SvRes == null)
  1948. {
  1949. SvRes = new ServiceRequestDefFPOperationModes();
  1950. SvRes.WorkstationID = this.clientSocket.workstationID;
  1951. SvRes.ApplicationSender = this.clientSocket.applicationSender;
  1952. serviceRequestClientList.Add(key, SvRes);
  1953. }
  1954. else
  1955. {
  1956. if (SvRes.RequestType != "DefFPOperationModes")
  1957. {
  1958. DebugLog(string.Format("SvRes.RequestType={0} != DefFPOperationModes", SvRes.RequestType));
  1959. return false;
  1960. }
  1961. }
  1962. ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes POSDataElem = null;
  1963. if (SvRes.POSdata != null)
  1964. POSDataElem = SvRes.POSdata[0];
  1965. else
  1966. {
  1967. ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes[] POSDataArray = null;
  1968. POSDataElem = new ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes();
  1969. IFSFManager.ArrayResize<ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  1970. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  1971. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  1972. SvRes.POSdata = POSDataArray;
  1973. }
  1974. ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationMode = null;
  1975. if (POSDataElem.OperationMode != null)
  1976. {
  1977. foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationModeTemp in POSDataElem.OperationMode)
  1978. if (operationModeTemp.Id == Convert.ToString(id))
  1979. operationMode = operationModeTemp;
  1980. }
  1981. if (operationMode == null)
  1982. {
  1983. operationMode = new ServiceRequestDefFPOperationModes.DefFPOperationModesMode();
  1984. operationMode.Id = Convert.ToString(id);
  1985. operationMode.Name = name;
  1986. ServiceRequestDefFPOperationModes.DefFPOperationModesMode[] operationModeArray = POSDataElem.OperationMode;
  1987. IFSFManager.ArrayResize<ServiceRequestDefFPOperationModes.DefFPOperationModesMode>(ref operationModeArray, (operationModeArray != null) ? operationModeArray.Length + 1 : 1);
  1988. operationModeArray[operationModeArray.Length - 1] = operationMode;
  1989. POSDataElem.OperationMode = operationModeArray;
  1990. }
  1991. DebugLog("AddFPOperationsMode end");
  1992. return true;
  1993. }
  1994. catch (Exception ex)
  1995. {
  1996. DebugLog("AddFPOperationsMode Exception! " + ex.ToString());
  1997. }
  1998. return false;
  1999. }
  2000. public bool AddFPOperationsModeGrade(int modeId, int gradeId, int volume)
  2001. {
  2002. try
  2003. {
  2004. DebugLog(string.Format("AddFPOperationsModeGrade init: modeId={0}, gradeId={1}, maxVolume={2}", modeId, gradeId, volume));
  2005. ServiceRequestDefFPOperationModes SvRes = null;
  2006. string key = "DefFPOperationModes";
  2007. if (serviceRequestClientList.ContainsKey(key))
  2008. SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]);
  2009. if (SvRes == null)
  2010. {
  2011. DebugLog("RequestType DefFPOperationModes NOT found!!! return FALSE");
  2012. return false;
  2013. }
  2014. ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes POSDataElem = null;
  2015. if (SvRes.POSdata != null)
  2016. POSDataElem = SvRes.POSdata[0];
  2017. else
  2018. {
  2019. ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes[] POSDataArray = null;
  2020. POSDataElem = new ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes();
  2021. IFSFManager.ArrayResize<ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes>(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1);
  2022. POSDataArray[POSDataArray.Length - 1] = POSDataElem;
  2023. POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now);
  2024. SvRes.POSdata = POSDataArray;
  2025. }
  2026. ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationMode = null;
  2027. if (POSDataElem.OperationMode != null)
  2028. {
  2029. foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationModeTemp in POSDataElem.OperationMode)
  2030. if (operationModeTemp.Id == Convert.ToString(modeId))
  2031. operationMode = operationModeTemp;
  2032. }
  2033. if (operationMode == null)
  2034. {
  2035. DebugLog(string.Format("OperationMode id={0} NOT found!!! return FALSE", modeId));
  2036. return false;
  2037. }
  2038. else
  2039. {
  2040. ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade grade = null;
  2041. if (operationMode.Grade != null)
  2042. {
  2043. foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade gradeTemp in operationMode.Grade)
  2044. if (gradeTemp.Id == Convert.ToString(gradeId))
  2045. grade = gradeTemp;
  2046. }
  2047. if (grade == null)
  2048. {
  2049. grade = new ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade();
  2050. grade.Id = Convert.ToString(gradeId);
  2051. grade.MaxVolume = Convert.ToString(volume);
  2052. ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade[] gradeArray = operationMode.Grade;
  2053. IFSFManager.ArrayResize<ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade>(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1);
  2054. gradeArray[gradeArray.Length - 1] = grade;
  2055. operationMode.Grade = gradeArray;
  2056. }
  2057. DebugLog("AddFPOperationsModeGrade end");
  2058. return true;
  2059. }
  2060. }
  2061. catch (Exception ex)
  2062. {
  2063. DebugLog("AddFPOperationsModeGrade Exception! " + ex.ToString());
  2064. }
  2065. return false;
  2066. }
  2067. public bool AddFPOperationModesSend(EventHandler<Wayne.Lib.AsyncCompletedEventArgs> requestCompleted, object userToken, object src)
  2068. {
  2069. try
  2070. {
  2071. DebugLog("AddFPOperationModesSend init");
  2072. ServiceRequestDefFPOperationModes SvRes = null;
  2073. string key = "DefFPOperationModes";
  2074. if (serviceRequestClientList.ContainsKey(key))
  2075. SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]);
  2076. if (SvRes != null)
  2077. {
  2078. clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000);
  2079. serviceRequestClientList.Remove(key);
  2080. DebugLog("AddFPOperationModesSend end");
  2081. return true;
  2082. }
  2083. }
  2084. catch (Exception ex)
  2085. {
  2086. DebugLog("AddFPOperationModesSend Exception! " + ex.ToString());
  2087. }
  2088. return false;
  2089. }
  2090. public void DefFPOperationModesResp(int requestId, string sOverallResult, ServiceResponseDefFPOperationModes sr)
  2091. {
  2092. try
  2093. {
  2094. string errorCode = sr.FDCdata[0].FDCStatus;
  2095. DebugLog(string.Format("DefFuelModesResp errorCode={0}", errorCode));
  2096. clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString());
  2097. }
  2098. catch (Exception ex)
  2099. {
  2100. DebugLog("DefFuelModesResp Exception! " + ex.ToString());
  2101. }
  2102. }
  2103. #endregion
  2104. }
  2105. }