示例#1
0
        public void ApplyPollAction(string id, PollAction pollAction)
        {
            var closablePoll = GetPollWithId(id);

            switch (pollAction)
            {
            case PollAction.Close:
                closablePoll.IsClosed = true;
                break;

            case PollAction.Open:
                closablePoll.IsClosed = false;
                break;

            case PollAction.Delete:
                Delete(closablePoll);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            PollDbContext.SaveChanges();
        }
示例#2
0
 public PollResult(string operation, PollAction action, string metadata)
 {
     Operation = operation;
     Action    = action;
     Metadata  = metadata;
 }
示例#3
0
        /// <summary>
        /// Envia el comando al ASP que sera transmitido al ASP
        /// </summary>
        /// <param name="startTime"></param>
        /// <param name="minutes">El periodo del reporte en minutos</param>
        /// <param name="ship"></param>
        /// <param name="poll"></param>
        public void CreatePollMessage(DateTime startTime, int minutes, Ship ship, PollAction poll)
        {
            //Only for satamatics
            if (ship.issata != 0)
            {
                var msg2 = new DataCenterLogic.DCASP.PollMessageSata();
                msg2.equipmentId = ship.Mobile;

                if (poll == PollAction.Reprogram)
                {
                    msg2.reprog  = true;
                    msg2.minutes = minutes;
                    log.Info("CreatePollMessage: enviando PollAction.Reprogram al ASP");
                }
                else if (poll == PollAction.Stop)
                {
                    msg2.reprog  = true;
                    msg2.minutes = 0;
                    log.Info("CreatePollMessage: enviando PollAction.Stop al ASP");
                }
                else if (poll == PollAction.Report)
                {
                    msg2.reprog  = false;
                    msg2.minutes = 0;
                    log.Info("CreatePollMessage: enviando PollAction.Report al ASP");
                }

                var cc2 = new DataCenterLogic.DCASP.LRITDCASPServiceSoapClient();
                if (System.Configuration.ConfigurationManager.AppSettings["send2servers"] != "False")
                {
                    cc2.PollShipSata(msg2);
                }
                return;
            }

            var msg   = new DataCenterLogic.DCASP.PollMessage();
            var spman = new ShipPositionManager();

            var pos = spman.GetLastShipPosition(ship.IMONum);

            if (pos != null)
            {
                msg.OceanRegion = (DCASP.EOceanRegion)pos.Region;
            }
            else
            {
                msg.OceanRegion = DCASP.EOceanRegion.AORW;
            }
            msg.DNID         = ship.DNID;
            msg.PollType     = DCASP.EPollType.IndividualPoll;
            msg.ResponseType = DCASP.EResponseType.DataReport;
            msg.SubAddress   = DCASP.ESubAddress.Others;
            msg.Address      = ship.Mobile;
            msg.MemberNumber = ship.Member;


            switch (poll)
            {
            case PollAction.Report:
            {
                msg.CommandType     = DCASP.ECommandType.DataReport;
                msg.StartFrame      = 0;
                msg.NumberOfReports = 0;
                ShipManager.ChangeShipStatus(ShipStatus.Polling, ship);
                log.Info("Enviando Solicitud de report a ASP");
                break;
            }

            case PollAction.Reprogram:
            {
                msg.CommandType     = DCASP.ECommandType.ProgramDataReporting;
                msg.StartFrame      = TimeToFrame(startTime.TimeOfDay);
                msg.NumberOfReports = MinutesToTimesPerDay(minutes);
                ShipManager.ChangeShipStatus(ShipStatus.Polling, ship);
                log.Info("Enviando Solicitud de report periodico a ASP");
                break;
            }

            case PollAction.Stop:
            {
                msg.CommandType     = DCASP.ECommandType.StopDataReserving;
                msg.StartFrame      = 0;
                msg.NumberOfReports = 0;
                ShipManager.ChangeShipStatus(ShipStatus.Polling, ship);
                log.Info("Enviando Solicitud de Stop a ASP");
                break;
            }
            }
            //UNCOMMENT!
            var cc = new DataCenterLogic.DCASP.LRITDCASPServiceSoapClient();

            if (System.Configuration.ConfigurationManager.AppSettings["send2servers"] != "False")
            {
                cc.PollShip(msg);
            }
        }