public bool PVLPut(Model.PVLData objPVLData)
        {
            bool isPVLHealthy = false;
            bool success      = false;

            //do
            //{
            try
            {
                isPVLHealthy = CheckPVLHealthy(objPVLData);

                if (!isPVLHealthy)
                {
                    return(false);
                }

                using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                {
                    success = opcd.WriteTag <bool>(objPVLData.machineChannel, objPVLData.machineCode, objPVLData.command, true);
                    Thread.Sleep(500);
                    success = opcd.WriteTag <bool>(objPVLData.machineChannel, objPVLData.machineCode, objPVLData.command, false);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                success = false;
            }


            // } while (!success);
            return(success);
        }
        public bool PSMove(Model.PSData objPSData)
        {
            //Logger.WriteLogger(GlobalValues.PMS_LOG, "Entering PSMove: " + objPSData.machineCode+" >> dest_aisle: "+objPSData.destAisle);
            bool isPSHealthy = false;
            bool success     = false;
            bool isPathClear = false;


            //do
            //{
            try
            {
                isPSHealthy = CheckPSHealthy(objPSData);

                if (!isPSHealthy)
                {
                    return(false);
                }

                using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                {
                    objPSData.dynamicHome = opcd.ReadTag <Int32>(objPSData.machineChannel, objPSData.machineCode, OpcTags.PS_Shuttle_Aisle_Position_for_L2);
                    if (objPSData.dynamicHome != objPSData.destAisle)
                    {
                        isPathClear = ClearPathForPS(objPSData);
                        if (isPathClear)
                        {
                            opcd.WriteTag <int>(objPSData.machineChannel, objPSData.machineCode, OpcTags.PS_L2_Destination_Aisle, objPSData.destAisle);

                            success = opcd.WriteTag <bool>(objPSData.machineChannel, objPSData.machineCode, objPSData.command, true);
                        }
                    }
                    else
                    {
                        success = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.WriteLogger(GlobalValues.PMS_LOG, "Error in PSMove: " + objPSData.machineCode
                                   + " >> dest_aisle: " + objPSData.destAisle + "; error: " + ex.Message);
                success = false;
            }
            finally
            {
                //Logger.WriteLogger(GlobalValues.PMS_LOG, "Exitting PSMove: " + objPSData.machineCode + " >> dest_aisle: " + objPSData.destAisle);
            }


            //} while (!success);

            return(success);
        }
        public bool StartCarWash(Modules.Machines.VLC.Model.VLCData objVLCData)
        {
            bool success = false;

            using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
            {
                if (opcd.IsMachineHealthy(objVLCData.machineChannel + "." + objVLCData.machineCode + "." + OpcTags.WASH_CarWash_Start_Cycle))
                {
                    success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, true);
                    Thread.Sleep(2000);
                    success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, false);
                }
            }
            return(success);
        }
        public bool ExcecuteEESGetCar(EESData objEESData)
        {
            bool success      = false;
            int  printCounter = 0;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }
            using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
            {
                do
                {
                    success = opcd.WriteTag <bool>(objEESData.machineChannel, objEESData.machineCode, objEESData.command, true);
                    System.Threading.Thread.Sleep(1000);

                    printCounter += 1;
                    if (printCounter > 3)
                    {
                        //checking transaction deleted or not
                        objQueueControllerService.CancelIfRequested(objEESData.queueId);
                        Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objEESData.queueId + ":--Failed to excecute get car for EES" + objEESData.machineCode);
                        printCounter = 0;
                    }
                } while (!IsDoneExcecuteEESGetCar(objEESData));
            }
            return(success);
        }
        public bool ExcecutePaymentDone(EESData objEESData)
        {
            bool success = false;

            using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
            {
                success = opcd.WriteTag <bool>(objEESData.machineChannel, objEESData.machineCode, objEESData.command, true);
            }
            return(success);
        }
        public bool PVLMove(Model.PVLData objPVLData)
        {
            bool isPVLHealthy = false;
            bool success      = false;

            //do
            //{
            try
            {
                isPVLHealthy = CheckPVLHealthy(objPVLData);

                if (!isPVLHealthy)
                {
                    return(false);
                }

                using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                {
                    objPVLData.floor = opcd.ReadTag <Int32>(objPVLData.machineChannel, objPVLData.machineCode, OpcTags.PVL_Current_Floor);
                    if (objPVLData.floor != objPVLData.destFloor)
                    {
                        opcd.WriteTag <int>(objPVLData.machineChannel, objPVLData.machineCode, OpcTags.PVL_Request_Floor, objPVLData.destFloor);
                        success = opcd.WriteTag <bool>(objPVLData.machineChannel, objPVLData.machineCode, objPVLData.command, true);
                        Thread.Sleep(500);
                        success = opcd.WriteTag <bool>(objPVLData.machineChannel, objPVLData.machineCode, objPVLData.command, false);
                    }
                    else
                    {
                        success = true;
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                success = false;
            }


            // } while (!success);
            return(success);
        }
        public bool SetHighCarBitForCarWash(VLCData objVLCData, bool bit)
        {
            bool success = false;

            using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
            {
                if (opcd.IsMachineHealthy(objVLCData.machineChannel + "." + objVLCData.machineCode + "." + OpcTags.WASH_CarWash_HighCar))
                {
                    success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.WASH_CarWash_HighCar, bit);
                }
            }
            return(success);
        }
        public bool ChangeMode(EESData objEESData)
        {
            bool success = false;

            if (GetEESMode(objEESData) != objEESData.eesMode)
            {
                using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                {
                    //success = opcd.WriteTag<bool>(objEESData.machineChannel, objEESData.machineCode, OpcTags.EES_Manual_Mode, true);
                    success = opcd.WriteTag <int>(objEESData.machineChannel, objEESData.machineCode, OpcTags.EES_Mode, objEESData.eesMode);
                    //success = success && opcd.WriteTag<bool>(objEESData.machineChannel, objEESData.machineCode, OpcTags.EES_Auto_Mode, true);
                }
            }
            else
            {
                success = true;
            }

            return(success);
        }
        public bool VLCMove(Model.VLCData objVLCData)
        {
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Entering 'VLCMove' ");
            bool isCMHealthy = false;
            bool success     = false;

            if (objQueueControllerService == null)
            {
                objQueueControllerService = new QueueControllerImp();
            }
            if (objErrorDaoService == null)
            {
                objErrorDaoService = new ErrorDaoImp();
            }

            do
            {
                /**checking transaction deleted or not****/
                objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                /******/
                try
                {
                    TriggerData objTriggerData = NeedToShowTrigger(objVLCData);
                    if (objTriggerData.TriggerEnabled)
                    {
                        objErrorDaoService.UpdateTriggerActiveStatus(objTriggerData);
                        break;
                    }
                    isCMHealthy = CheckVLCHealthy(objVLCData);

                    if (!isCMHealthy)
                    {
                        Thread.Sleep(200);
                        continue;
                    }

                    using (OpcOperationsService opcd = new OpcOperationsImp(OpcConnection.GetOPCServerConnection()))
                    {
                        objVLCData.floor = opcd.ReadTag <Int32>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.VLC_At_Floor);
                        if (objVLCData.floor != objVLCData.destFloor)
                        {
                            opcd.WriteTag <int>(objVLCData.machineChannel, objVLCData.machineCode, OpcTags.VLC_DestFloor, objVLCData.destFloor);
                            success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, true);
                        }
                        else
                        {
                            success = opcd.WriteTag <bool>(objVLCData.machineChannel, objVLCData.machineCode, objVLCData.command, true);
                            success = true;
                        }
                    }
                }
                catch (OperationCanceledException errMsg)
                {
                    Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ": CM=" + objVLCData.machineCode + " --TaskCanceledException 'VLCMove':: " + errMsg.Message);
                    throw new OperationCanceledException();
                }
                catch (Exception ex)
                {
                    Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exception 'VLCMove':: " + ex.Message);
                    /**checking transaction deleted or not****/
                    objQueueControllerService.CancelIfRequested(objVLCData.queueId);
                    /******/
                    if (ex is TaskCanceledException)
                    {
                        throw new Exception();
                    }
                    success = false;
                }
            } while (!success);
            Logger.WriteLogger(GlobalValues.PARKING_LOG, "Queue Id:" + objVLCData.queueId + ":--Exitting 'VLCMove' ");
            return(success);
        }