public void ReadQueueCancelData() { // Model.QueueData objQueueData = new Model.QueueData(); if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } List <int> abortedList = new List <int>(); try { queueCancelReader.Stop(); abortedList = objQueueDaoService.GetCancelledQueueId(); foreach (int queueId in abortedList) { if (queueId != 0) { GlobalValues.threadsDictionary[queueId].Cancel(); //once thread will catch the cancellation request, then it will call the delete or complete transaction procedrue and remove //the entry from threadsDictionary } } } catch (Exception errMsg) { //Console.WriteLine(errMsg.Message); } finally { queueCancelReader.Interval = 3000; queueCancelReader.Start(); } }
public void CreateDispalyXML() { Logger.WriteLogger(GlobalValues.PARKING_LOG, "Entering CreateDispalyXML"); if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } List <DisplayData> displayList = null; // string releasePath = "D:\\Nizar\\PROJECTS\\Ibn Battuta\\Code\\engine\\Live Engine\\engine on 12nov14\\ARCPMS ENGINE\\ARCPMS ENGINE\\bin\\Release\\ibm_config\\test.xml"; try { displayList = objQueueDaoService.GetDisplayData(); string pXMLDataFileName = GlobalValues.GLOBAL_DISPLAY_XML_PATH; using (FileStream fs = new FileStream(@pXMLDataFileName, FileMode.Create)) { using (XmlTextWriter w = new XmlTextWriter(fs, null)) { w.Formatting = Formatting.Indented; w.Indentation = 5; w.WriteStartDocument(); w.WriteStartElement("ODBCXMLData"); foreach (DisplayData objDisplayData in displayList) { w.WriteStartElement("ODBCTagRow"); w.WriteAttributeString("Car_ID", objDisplayData.cardId); w.WriteAttributeString("Patron_Name", objDisplayData.patronName); if (objDisplayData.gateNumber != 0) { w.WriteAttributeString("REES_Num", Convert.ToString(objDisplayData.gateNumber)); } else { w.WriteAttributeString("REES_Num", ""); } w.WriteAttributeString("EntryTime", objDisplayData.EntryTime.ToString("dd/MMM/yy hh:mm")); w.WriteAttributeString("ExitTime", objDisplayData.ExitTime.ToString("dd/MMM/yy hh:mm")); w.WriteAttributeString("CWStatus", objDisplayData.CarWashStatus); w.WriteEndElement(); //ODBCTagRow } w.WriteEndElement(); //ODBCXMLData // w.Close(); } } } catch (Exception errMsg) { Logger.WriteLogger(GlobalValues.PARKING_LOG, "Error in CreateDispalyXML: " + errMsg.Message); } Logger.WriteLogger(GlobalValues.PARKING_LOG, "Exitting CreateDispalyXML"); }
public bool SetReallocateData(decimal queueId, string machineCode, int reallocateFlag) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.SetReallocateData(queueId, machineCode, reallocateFlag)); }
/// <summary> /// get status of holding flag /// </summary> /// <param name="queueId"></param> /// <returns></returns> public bool GetHoldFlagStatus(int queueId) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.GetHoldFlagStatus(queueId)); }
/// <summary> /// setting flag for holding transactions /// </summary> /// <param name="queueId"></param> /// <param name="holdStatus"></param> public void SetHoldFlagStatus(int queueId, bool holdStatus) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } objQueueDaoService.SetHoldFlagStatus(queueId, holdStatus); }
public void SetTransactionAbortStatus(int queueId, int abortStatus) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } objQueueDaoService.SetTransactionAbortStatus(queueId, abortStatus); }
public bool NeedToOptimizePath(int queueId) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.NeedToOptimizePath(queueId)); }
public Model.QueueData GetQueueData(int queueId) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.GetQueueData(queueId)); }
public bool UpdateEESCarData(int queueId, ARCPMS_ENGINE.src.mrs.Global.GlobalValues.CAR_TYPE carType) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.UpdateEESCarData(queueId, carType)); }
public bool UpdateAbortedStatus(int queueId) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } return(objQueueDaoService.UpdateAbortedStatus(queueId)); }
public void CancelIfRequested(int queueId) { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } try { if (GlobalValues.threadsDictionary[queueId].Token.IsCancellationRequested) { GlobalValues.threadsDictionary[queueId].Token.ThrowIfCancellationRequested(); } //hold & resume logic block if (objQueueDaoService.GetHoldRequestFlagStatus(queueId)) { objQueueDaoService.SetHoldFlagStatus(queueId, true); Logger.WriteLogger(GlobalValues.PARKING_LOG, "CancelIfRequested(): Queue Id:" + queueId + ":--transaction Paused"); do { if (GlobalValues.threadsDictionary[queueId].Token.IsCancellationRequested) { GlobalValues.threadsDictionary[queueId].Token.ThrowIfCancellationRequested(); } if (!objQueueDaoService.GetHoldRequestFlagStatus(queueId)) { objQueueDaoService.SetHoldFlagStatus(queueId, false); } Thread.Sleep(1000); } while (objQueueDaoService.GetHoldFlagStatus(queueId)); Logger.WriteLogger(GlobalValues.PARKING_LOG, "CancelIfRequested(): Queue Id:" + queueId + ":--transaction Resumed"); } } catch (OperationCanceledException errMsg) { Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + queueId + " --TaskCanceledException 'CancelIfRequested':: " + errMsg.Message); objQueueDaoService.UpdateAbortedStatus(queueId); // if this called first before cancel the thread // there is a chance to remove this queue id from // threadsDictionary CreateDispalyXML(); throw new OperationCanceledException(); } catch (KeyNotFoundException ex) { Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + queueId + "KeyNotFoundException CancelIfRequested: " + ex.Message); } catch (Exception ex) { Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + queueId + " Exception CancelIfRequested: " + ex.Message); } }
public void DoResumeEngine() { List <QueueData> processingQList = null; if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } if (objCMControllerService == null) { objCMControllerService = new CMControllerImp(); } if (objVLCControllerService == null) { objVLCControllerService = new VLCControllerImp(); } if (objEESDaoService == null) { objEESDaoService = new EESDaoImp(); } //get all request in status 0 or 2 processingQList = objQueueDaoService.GetAllProcessingQId(); //take one request foreach (QueueData objQueueData in processingQList) { string carMachine = null; //get queue id //get all cms blocked by this queue id CMData objCMData = objCMControllerService.GetBlockedCMDetails(objQueueData.queuePkId); //get all vlcs blocked by this queue id VLCData objVLCData = objVLCControllerService.GetVLCDetails(objQueueData.queuePkId); EESData objEESData = objEESDaoService.GetBlockedEESDetails(objQueueData.queuePkId); if (objCMData != null && objVLCData != null) { //check pallet present of blocked machine GlobalValues.palletStatus palletStatus = objCMControllerService.GetPalletOnCMStatus(objCMData); if (palletStatus == GlobalValues.palletStatus.present) { carMachine = objCMData.machineCode; } else { carMachine = objVLCData.machineCode; } } else if (objCMData != null) { carMachine = objCMData.machineCode; } else if (objCMData != null) { carMachine = objVLCData.machineCode; } else if (objEESData != null) { carMachine = objEESData.machineCode; } //call SetReallocateData with pallet present machine if (!string.IsNullOrEmpty(carMachine)) { SetReallocateData(objQueueData.queuePkId, carMachine, 3); } else { SetReallocateData(objQueueData.queuePkId, "SLOT", 3);// entry or exit which had no initial path } UpdateAbortedStatus(objQueueData.queuePkId); } }
public void ReadQueueEntryData() { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } if (objParkingControllerService == null) { objParkingControllerService = new ParkingControllerImp(); } if (objClickTransferService == null) { objClickTransferService = new ClickTransferImp(); } if (objCarWashControllerService == null) { objCarWashControllerService = new CarWashControllerImp(); } int queueId = 0; try { queueEntryReader.Stop(); queueId = objQueueDaoService.GetPendingQueueDataForProcessing(); if (queueId != 0) { Model.QueueData objQueueData = new Model.QueueData(); objQueueData = objQueueDaoService.GetQueueData(queueId); CancellationTokenSource tokenSource = new CancellationTokenSource(); if (objQueueData.requestType == 1) { Task.Factory.StartNew(() => objParkingControllerService.EntryCarProcessing(objQueueData), tokenSource.Token); } else if (objQueueData.requestType == 0) { Task.Factory.StartNew(() => objParkingControllerService.ExitCarProcessing(objQueueData), tokenSource.Token); } else if (objQueueData.requestType == 3 || objQueueData.requestType == 4 || objQueueData.requestType == 5 || objQueueData.requestType == 6 || objQueueData.requestType == 7 || objQueueData.requestType == 8) { objParkingControllerService.AddRequestIntoQueue(objQueueData); } objQueueDaoService.SetQueueStatus(queueId, 2); } } catch (Exception errMsg) { Logger.WriteLogger(GlobalValues.PARKING_LOG, ":--Exception 'ReadQueueEntryData ':: " + errMsg.Message); } finally { removeFinishedThread(); queueEntryReader.Interval = 3000; queueEntryReader.Start(); } }
public void ReadExitKioskData() { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } if (objParkingControllerService == null) { objParkingControllerService = new ParkingControllerImp(); } try { exitKioskReader.Stop(); if (Directory.Exists(GlobalValues.GLOBAL_EXIT_XML_PATH) == false) { return; } string[] xmlfiles = Directory.GetFiles(GlobalValues.GLOBAL_EXIT_XML_PATH + @"\", "*.xml"); XmlDocument xml = new XmlDocument(); string xmlFile = ""; //if no input kiosk found return. if (xmlfiles == null || xmlfiles.Length < 1) { return; } for (int i = 0; i < xmlfiles.Length; i++) { xmlFile = xmlfiles[i]; FileInfo f = new FileInfo(xmlFile); if (f.IsReadOnly) { continue; } string newFileName = "Exit_" + System.DateTime.Now.ToFileTime().ToString(); if (Directory.Exists(GlobalValues.GLOBAL_BACKUP_XML_PATH + @"\")) { f.CopyTo(GlobalValues.GLOBAL_BACKUP_XML_PATH + @"\" + newFileName + ".xml"); } xml.Load(xmlFile); XmlNodeList xnList = xml.SelectNodes("/OPCXMLData/OPCTagNode"); //Iterate OPC XML file (come from the kiosk) foreach (XmlNode xn in xnList) { QueueData objQueueData = null; objQueueData = new QueueData(); objQueueData.customerId = Convert.ToString(xn["Card_ID"].InnerText); objQueueData.isEntry = false; objQueueData.requestType = objQueueData.isEntry ? 1 : 0; if (xn["Location"] != null) { objQueueData.kioskId = Convert.ToString(xn["Location"].InnerText); } else { objQueueData.kioskId = "SMS"; objQueueData.retrievalType = 1; } objQueueData.procStartTime = System.DateTime.Now; objQueueData = objQueueDaoService.InsertQueue(objQueueData); if (OnToDisplayMessage != null) { OnToDisplayMessage("Exit request received with card ID " + objQueueData.customerId, null); } if (File.Exists(xmlFile) == true) { File.Delete(xmlFile); } //if (objQueueData.queuePkId != 0) //{ // CancellationTokenSource tokenSource = new CancellationTokenSource(); // GlobalValues.threadsDictionary.Add(objQueueData.queuePkId, tokenSource); // if (OnToDisplayMessage != null) // OnToDisplayMessage("Exit request recieved with card ID " + objQueueData.customerId, null); // Task.Factory.StartNew(() => objParkingControllerService.ExitCarProcessing(objQueueData), GlobalValues.threadsDictionary[objQueueData.queuePkId].Token); //} } }// for loop end } catch (Exception errMsg) { Logger.WriteLogger(GlobalValues.PARKING_LOG, ":--Exception 'ReadExitKioskData ':: " + errMsg.Message); } finally { exitKioskReader.Interval = 2000; exitKioskReader.Start(); } }
public void ReadEntryKioskData() { if (objQueueDaoService == null) { objQueueDaoService = new QueueDaoImp(); } if (objParkingControllerService == null) { objParkingControllerService = new ParkingControllerImp(); } try { entryKioskReader.Stop(); if (Directory.Exists(GlobalValues.GLOBAL_ENTRY_XML_PATH) == false) { return; } string[] xmlfiles = Directory.GetFiles(GlobalValues.GLOBAL_ENTRY_XML_PATH + @"\", "*.xml"); XmlDocument xml = new XmlDocument(); string xmlFile = ""; //if no input kiosk found return. if (xmlfiles == null || xmlfiles.Length < 1) { return; } for (int i = 0; i < xmlfiles.Length; i++) { xmlFile = xmlfiles[i]; FileInfo f = new FileInfo(xmlFile); if (f.IsReadOnly) { continue; } string newFileName = "Entry_" + System.DateTime.Now.ToFileTime().ToString(); if (Directory.Exists(GlobalValues.GLOBAL_BACKUP_XML_PATH + @"\")) { f.CopyTo(GlobalValues.GLOBAL_BACKUP_XML_PATH + @"\" + newFileName + ".xml"); } xml.Load(xmlFile); XmlNodeList xnList = xml.SelectNodes("/Patron"); //Iterate OPC XML file (come from the kiosk) foreach (XmlNode xn in xnList) { QueueData objQueueData = null; objQueueData = new QueueData(); objQueueData.customerId = Convert.ToString(xn["card_ID"].InnerText); int eesNumber = 0; int.TryParse(xn["EES"].InnerText.ToString(), out eesNumber); objQueueData.eesNumber = eesNumber; objQueueData.patronName = Convert.ToString(xn["Name"].InnerText); objQueueData.plateNumber = Convert.ToString(xn["Car_ID"].InnerText); objQueueData.needWash = Convert.ToString(xn["Carwash"].InnerText) == "True" ? true :false; // objEESControllerService = new EESControllerImp(); // objQueueData.isHighCar = objEESControllerService.IsHighCar(objQueueData.eesNumber) ? 2 : 1; objQueueData.carType = GlobalValues.CAR_TYPE.low; objQueueData.isEntry = true; objQueueData.requestType = objQueueData.isEntry ? 1:2; objQueueData.procStartTime = System.DateTime.Now; objQueueData = objQueueDaoService.InsertQueue(objQueueData); if (OnToDisplayMessage != null) { OnToDisplayMessage("Entry request received from " + objQueueData.eesNumber + " with card ID " + objQueueData.customerId, null); } if (File.Exists(xmlFile) == true) { File.Delete(xmlFile); } //CancellationTokenSource tokenSource = new CancellationTokenSource(); //GlobalValues.threadsDictionary.Add(objQueueData.queuePkId, tokenSource); //if (OnToDisplayMessage != null) // OnToDisplayMessage("Entry request recieved from EES" + objQueueData.eesNumber + " with card ID " + objQueueData.customerId, null); //Task.Factory.StartNew(() => objParkingControllerService.EntryCarProcessing(objQueueData), GlobalValues.threadsDictionary[objQueueData.queuePkId].Token); } // } //if (File.Exists(filePath) == true) // File.Delete(filePath); }// for loop end } catch (Exception errMsg) { Logger.WriteLogger(GlobalValues.PARKING_LOG, ":--Exception 'ReadEntryKioskData ':: " + errMsg.Message); //Console.WriteLine(errMsg.Message); } finally { entryKioskReader.Interval = 2000; entryKioskReader.Start(); } }