Example #1
0
        public bool ProcessPST100Request(bool isStore)
        {
            // Logger.WriteLogger(GlobalValues.PMS_LOG, "Entered ProcessPVLRequest : PVL=" + objPVLData.machineCode + ", isStore=" + objPVLData.isStore);
            int pathId = 0;

            if (objPSTDaoService == null)
            {
                objPSTDaoService = new PSTDaoImp();
            }

            QueueData objQueueData = new QueueData();

            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            pathId = objPSTDaoService.GetPST100PathId(isStore);
            bool processStatus = false;

            if (pathId != 0)
            {
                objQueueData.pathPkId = pathId;
                objParkingControllerService.ExcecuteCommandsForPMS(objQueueData);
                objPSTDaoService.UpdateAfterPST100Task(pathId);
                processStatus = true;
            }
            //Logger.WriteLogger(GlobalValues.PMS_LOG, "Exitting ProcessPVLRequest : PVL=" + objPVLData.machineCode + ", isStore=" + objPVLData.isStore
            //  + ", processStatus=" + processStatus + ", pathId=" + pathId);
            return(processStatus);
        }
        public bool ProcessPVLRequest(PVLData objPVLData)
        {
            Logger.WriteLogger(GlobalValues.PMS_LOG, "Entered ProcessPVLRequest : PVL=" + objPVLData.machineCode + ", isStore=" + objPVLData.isStore);
            int pathId = 0;

            QueueData objQueueData = new QueueData();

            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            List <PathDetailsData> lstPathDetails = null;

            pathId = InsertQueueForPalletBundle(objPVLData);
            bool processStatus = false;

            if (pathId != 0)
            {
                objPVLData.queueId = pathId;

                lstPathDetails = GetSlotAndPathForPVL(objPVLData.queueId);

                objQueueData.pathPkId = objPVLData.queueId;
                objParkingControllerService.ExcecuteCommandsForPMS(objQueueData);
                TaskAfterPvlProcess(objPVLData);
                processStatus = true;
            }
            Logger.WriteLogger(GlobalValues.PMS_LOG, "Exitting ProcessPVLRequest : PVL=" + objPVLData.machineCode + ", isStore=" + objPVLData.isStore
                               + ", processStatus=" + processStatus + ", pathId=" + pathId);
            return(processStatus);
        }
 public List <PathDetailsData> GetSlotAndPathForPVL(int pathId)
 {
     if (objParkingControllerService == null)
     {
         objParkingControllerService = new ParkingControllerImp();
     }
     return(objParkingControllerService.GetPathDetails(0, pathId));
 }
 public List <PathDetailsData> FindCarWashingPathFirst(int washQId)
 {
     if (objCarWashDaoService == null)
     {
         objCarWashDaoService = new CarWashDaoImp();
     }
     if (objParkingControllerService == null)
     {
         objParkingControllerService = new ParkingControllerImp();
     }
     objCarWashDaoService.FindCarWashingPathFirst(washQId);
     return(objParkingControllerService.GetPathDetails(washQId));
 }
Example #5
0
 public List <PathDetailsData> GetInitialTransferPath(int queueId)
 {
     if (objClickTransferDaoService == null)
     {
         objClickTransferDaoService = new ClickTransferDaoImp();
     }
     if (objParkingControllerService == null)
     {
         objParkingControllerService = new ParkingControllerImp();
     }
     objClickTransferDaoService.GetInitialTransferPath(queueId);
     return(objParkingControllerService.GetPathDetails(queueId));
 }
Example #6
0
        public void ProcessTransfer(QueueData objQueueData)
        {
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }

            List <PathDetailsData> lstPathDetails = null;

            //   lstPathDetails = new List<PathDetailsData>();
            try
            {
                bool needIteration = false;
                do
                {
                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                    /******/
                    do
                    {
                        lstPathDetails = GetAllocatePath(objQueueData.queuePkId);
                        if (lstPathDetails == null)
                        {
                            Thread.Sleep(1500);
                        }
                        /**checking transaction deleted or not****/
                        objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                        /******/
                    } while (lstPathDetails == null);
                    objParkingControllerService.ExcecuteCommands(objQueueData);
                    needIteration = objParkingControllerService.GetIterationStatus(objQueueData.queuePkId);
                } while (needIteration);

                UpdateAfterTransfer(objQueueData.queuePkId);
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + " --TaskCanceledException 'ProcessTransfer':: " + errMsg.Message);
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + ":--Exception 'ProcessTransfer':: " + errMsg.Message);
            }
            finally
            {
            }
        }
        public List <PathDetailsData> FindCarWashingPathSecond(int washQId)
        {
            if (objCarWashDaoService == null)
            {
                objCarWashDaoService = new CarWashDaoImp();
            }
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            int pathId = 0;

            pathId = objCarWashDaoService.FindCarWashingPathSecond(washQId);
            return(pathId > 0?objParkingControllerService.GetPathDetails(washQId, pathId):null);
        }
Example #8
0
        public List <PathDetailsData> GetDynamicTransferPath(int queueId)
        {
            if (objClickTransferDaoService == null)
            {
                objClickTransferDaoService = new ClickTransferDaoImp();
            }
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            int pathId = 0;

            pathId = objClickTransferDaoService.GetDynamicTransferPath(queueId);
            return(objParkingControllerService.GetPathDetails(queueId, pathId));
        }
        public bool ProcessWashPath(QueueData objQueueData)
        {
            if (objParkingControllerService == null)
            {
                objParkingControllerService = new ParkingControllerImp();
            }
            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }

            List <PathDetailsData> lstPathDetails = null;

            // QueueData objQueueData = new QueueData();
            try
            {
                lstPathDetails = new List <PathDetailsData>();
                do
                {
                    lstPathDetails = FindCarWashingPathFirst(objQueueData.queuePkId);
                    if (lstPathDetails == null)
                    {
                        Thread.Sleep(1500);
                    }

                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                    /******/
                } while (lstPathDetails == null);
                //objQueueData.queuePkId = washQId;
                objParkingControllerService.ExcecuteCommands(objQueueData);

                if (!IsSameFloorTravel(lstPathDetails))
                {
                    lstPathDetails = new List <PathDetailsData>();

                    do
                    {
                        lstPathDetails = FindCarWashingPathSecond(objQueueData.queuePkId);
                        if (lstPathDetails == null)
                        {
                            Thread.Sleep(1500);
                        }

                        /**checking transaction deleted or not****/
                        objQueueControllerService.CancelIfRequested(objQueueData.queuePkId);
                        /******/
                    } while (lstPathDetails == null);

                    //  objQueueData.queuePkId = washQId;
                    objParkingControllerService.ExcecuteCommands(objQueueData);
                }
                objCarWashDaoService.updateAfterProcessing(objQueueData.queuePkId);
            }
            catch (OperationCanceledException errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + " --TaskCanceledException 'ProcessWashPath':: " + errMsg.Message);
            }
            catch (Exception errMsg)
            {
                Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objQueueData.queuePkId + ":--Exception 'ProcessWashPath':: " + errMsg.Message);
            }
            finally
            {
            }
            return(true);
        }
        public void DoInitializeEngine(GlobalValues.engineStartMode startMode)
        {
            if (OnToDisplayMessage != null)
            {
                OnToDisplayMessage("Initialization.....", null);
            }


            /**
             * 1. set all global variables(including path of display xml)
             * 2. update machine values to DB
             * 3. update status of car at EES to DB: this included in EES machine value updation
             * 4. call engine reset procedure
             * 5. initiate notification from opc
             * 6. initiate home position
             * 7. initiate mode changing of ees
             * 8. initiate pallet management
             * 9. initiate click transfer listener
             * 10.initiate generator mode listener
             * 11.start machine values updation trigger
             * 12.call queue manager
             */

            try
            {
                //1. set all global variables(including path of display xml)
                SetAllGlobalVariables();

                if (objParkingControllerService == null)
                {
                    objParkingControllerService = new ParkingControllerImp();
                }
                if (objPalletManagerService == null)
                {
                    objPalletManagerService = new PalletManagerImp();
                }
                if (objParkingControllerService == null)
                {
                    objParkingControllerService = new ParkingControllerImp();
                }


                #region OPC and Oracle Initialization
                //checking opc server connection established or not
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Initialization.....", null);
                }
                OpcServer opc = null;
                while (!OpcConnection.IsOpcServerConnectionAvailable())
                {
                    if (OnToDisplayMessage != null)
                    {
                        OnToDisplayMessage("OPC Initialization failed.....", null);
                    }
                    Thread.Sleep(1000);
                }
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("OPC Initialization success.....", null);
                }



                //checking database connection established or not
                OracleConnection con = null;
                do
                {
                    con = new DBConnection().getDBConnection();
                    if (con.State == ConnectionState.Closed)
                    {
                        if (OnToDisplayMessage != null)
                        {
                            OnToDisplayMessage("Oracle Initialization failed.....", null);
                        }
                    }
                    Thread.Sleep(1000);
                }while(con.State == ConnectionState.Closed);
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Oracle Initialization success.....", null);
                }
                #endregion



                //2. update machine values to DB //11.start machine values updation trigger
                #region Synchind OPC data and reset or resume engine
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Synching data.....", null);
                }
                UpdateMachineValues();
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Synching data finished.....", null);
                }
                Thread threadUpdateMachineStatus = new Thread(delegate()
                {
                    updateMachineValuesTimer();
                });
                threadUpdateMachineStatus.IsBackground = true;
                threadUpdateMachineStatus.Start();

                //4. call engine reset procedure

                if (startMode == GlobalValues.engineStartMode.restart)
                {
                    objParkingControllerService.CallResetProcedure();
                }
                else
                {
                    objParkingControllerService.CallResumeProcedure();
                }
                #endregion


                //5. initiate notification from opc
                #region OPC Notification
                CommonServicesForMachines objCommonService;

                objCommonService = new CMControllerImp();
                objCommonService.AsynchReadSettings();



                objCommonService = new EESControllerImp();
                objCommonService.AsynchReadSettings();

                objCommonService = new PSControllerImp();
                objCommonService.AsynchReadSettings();

                ////objCommonService = new PSTControllerImp();
                ////objCommonService.AsynchReadSettings();

                ////objCommonService = new PVLControllerImp();
                ////objCommonService.AsynchReadSettings();

                objCommonService = new VLCControllerImp();
                objCommonService.AsynchReadSettings();
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("initialized OPC notifications.....", null);
                }
                #endregion

                //6. initiate home position
                if (GlobalValues.PARKING_ENABLED)
                {
                    #region Home Position
                    MoveIdealCMToHomePosition = new Thread(delegate()
                    {
                        objParkingControllerService.HomePositionMoveTrigger();
                    });
                    MoveIdealCMToHomePosition.IsBackground = true;
                    MoveIdealCMToHomePosition.Start();
                    #endregion
                }

                //  * 7. initiate mode changing of ees //* 8. initiate pallet management
                if (GlobalValues.PMS_ENABLED)
                {
                    #region PMS



                    triggerESSModeChange = new Thread(delegate()
                    {
                        objPalletManagerService.StartModeScanning();
                    });
                    triggerESSModeChange.IsBackground = true;
                    triggerESSModeChange.Start();


                    triggerGetPalletForESS = new Thread(delegate()
                    {
                        objPalletManagerService.StartPMSProcessing();
                    });
                    triggerGetPalletForESS.IsBackground = true;
                    triggerGetPalletForESS.Start();
                    #endregion
                }
                // * 9. initiate click transfer listener
                // * 10.initiate generator mode listener

                #region Listening new parking request
                // * 12.call queue manager

                objQueueControllerService = new QueueControllerImp();
                if (startMode == GlobalValues.engineStartMode.resume)
                {
                    objQueueControllerService.DoResumeEngine();
                }

                objQueueControllerService.CreateDispalyXML();
                objQueueControllerService.RequestListener();
                #endregion

                //13. iterate queueEntries
                if (GlobalValues.PARKING_ENABLED)
                {
                    InitializeParkingQueue();
                }

                //Delete all old images
                #region Delete all old images


                Thread threadForDeleteImages = new Thread(delegate()
                {
                    DeleteOldRecords();
                });
                threadForDeleteImages.IsBackground = true;
                threadForDeleteImages.Name         = "DeleteImages";
                threadForDeleteImages.Start();

                #endregion
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("initialization completed succesfully.....", null);
                }
                //MessageBox.Show("Car type checking disabled");
            }
            catch (Exception errMsg)
            {
                if (OnToDisplayMessage != null)
                {
                    OnToDisplayMessage("Error....." + errMsg.Message, null);
                }
                MessageBox.Show(errMsg.Message);
            }
            finally
            {
            }
        }
        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();
            }
        }