コード例 #1
0
        //Update according at the CAD from thr adhoc Incident Coding Query
        public void RcvIncidentCodingStatusResponse(CADIncidentAck codingstatusresponse)
        {
            SendOrPostCallback callback =
                delegate(object state)
            {
                Log("Update response from ad hoc request");
                //for each station in the tracking
                foreach (Tracking station in codingstatusresponse.AckTracking)
                {
                    //for each unit in the station
                    foreach (string unitcallsign in station.Unit)
                    {
                        IncidentCodingStatus newincidentcodingsttaus = new IncidentCodingStatus();
                        newincidentcodingsttaus.CodingID     = codingstatusresponse.CodingID;
                        newincidentcodingsttaus.TrackStation = station.Station;
                        newincidentcodingsttaus.TrackStatus  = station.Status;
                        newincidentcodingsttaus.TrackUnit    = unitcallsign;
                        newincidentcodingsttaus.AckFrom      = "";
                        newincidentcodingsttaus.AckStatus    = "";
                        newincidentcodingsttaus.AckTimeStamp = String.Format("{0:g}", codingstatusresponse.AckTimeStamp);
                        newincidentcodingsttaus.AckNo        = codingstatusresponse.AckNo.ToString();
                        newincidentcodingsttaus.AckTotal     = codingstatusresponse.AckTotal.ToString();

                        _IncidentCodingStatusList.Add(newincidentcodingsttaus);
                    }
                }
            };

            _uiSyncContext.Post(callback, "update incident coding status responese");
        }
コード例 #2
0
        //Receive Ack from gateway and update according at the CAD
        public void UpdateCADIncidentAck(CADIncidentAck CADincidentack)
        {
            SendOrPostCallback callback =
                delegate(object state)
            {
                Log("Update CAD Incident Acknowledge from Gateway");
                //for each station in the tracking
                foreach (Tracking station in CADincidentack.AckTracking)
                {
                    //for each unit in the station
                    foreach (string unitcallsign in station.Unit)
                    {
                        IncidentCodingStatus newincidentcodingsttaus = new IncidentCodingStatus();
                        newincidentcodingsttaus.CodingID     = CADincidentack.CodingID;
                        newincidentcodingsttaus.TrackStation = station.Station;
                        newincidentcodingsttaus.TrackStatus  = station.Status;
                        newincidentcodingsttaus.TrackUnit    = unitcallsign;
                        newincidentcodingsttaus.AckFrom      = "";
                        newincidentcodingsttaus.AckStatus    = "";
                        newincidentcodingsttaus.AckTimeStamp = String.Format("{0:g}", CADincidentack.AckTimeStamp);
                        newincidentcodingsttaus.AckNo        = CADincidentack.AckNo.ToString();
                        newincidentcodingsttaus.AckTotal     = CADincidentack.AckTotal.ToString();

                        _IncidentCodingStatusList.Add(newincidentcodingsttaus);
                    }
                }
            };

            _uiSyncContext.Post(callback, "update CAD Incident Ack");
        }
コード例 #3
0
 public void IncidentCodingStatusResponse(CADIncidentAck codingstatusresponse)
 {
     _CADCallbackList.ForEach(
         delegate(IMessageServiceCallback cadcallback)
     {
         cadcallback.RcvIncidentCodingStatusResponse(codingstatusresponse);
     });
 }
コード例 #4
0
 public void AckCADIncidentMsg(CADIncidentAck CADincidentack)
 {
     _CADCallbackList.ForEach(
         delegate(IMessageServiceCallback cadcallback)
     {
         cadcallback.UpdateCADIncidentAck(CADincidentack);
     });
 }
コード例 #5
0
        private void btnStationBroadcast_Click(object sender, EventArgs e)
        {
            //Find Station that is connected
            List<string> connectedConsole = new List<string>();
            foreach (string console in _CallOut_CodingService.GetConnectedConsole())
            {
                connectedConsole.Add(console);
            }
            string[] addressList = connectedConsole.ToArray();

            CodingIncidentMessage testIncidentMsg = TestMessageTemplate2();
            ConvertCodingtoTracker(addressList, testIncidentMsg); //Add to gateway tracker
            Log("Send broadcast test message");
            _CallOut_CodingService.TargetMsg(addressList, testIncidentMsg);

            List<Tracking> trackingList = new List<Tracking>();
            //Only take out the stations on the Current Station
            foreach (string station in connectedConsole)
            {
                Tracking newstation = new Tracking();
                newstation.Station = station;
                newstation.Status = "Pending";

                List<string> unitcallsign = new List<string>();

                //To give relevant station units callsign
                foreach (CodingUnits unit in testIncidentMsg.DispatchUnits)
                {
                    if (unit.UnitCurrentStation.Equals(station))
                    {
                        unitcallsign.Add(unit.Callsign);
                    }

                    //For test message
                    if (unit.UnitCurrentStation.Equals("Test"))
                    {
                        unitcallsign.Add(unit.Callsign);
                    }
                }
                newstation.Unit = unitcallsign.ToArray();
                trackingList.Add(newstation); //Add into tracking list
            }

            //Send ack back to CAD
            CADIncidentAck cadincidentack = new CADIncidentAck();
            cadincidentack.CodingID = testIncidentMsg.CodingID;
            cadincidentack.AckTracking = trackingList.ToArray();
            DateTime currentdt = DateTime.Now;
            cadincidentack.AckTimeStamp = currentdt;
            cadincidentack.AckNo = 0;
            cadincidentack.AckTotal = connectedConsole.Count;

            Log("Send Ack to CAD for broadcast test message");
            _CallOut_CADService.AckCADIncidentMsg(cadincidentack);

            //Set Coding Entry
            CreateTestCodingEntry(testIncidentMsg, connectedConsole.Count.ToString());
            //Set Message Entry
            CreateMessageEntry(testIncidentMsg, connectedConsole.Count.ToString());
        }
コード例 #6
0
        private void btnStationTarget_Click(object sender, EventArgs e)
        {
            //Find Station that is been checked
            List<string> tmpstationList = new List<string>();
            foreach (DataGridViewRow row in dgvStation.Rows)
            {
                if (dgvStation.Rows[row.Index].Cells[3].Value != null)
                {
                    if ((bool)dgvStation.Rows[row.Index].Cells[3].Value)
                    {
                        tmpstationList.Add(dgvStation.Rows[row.Index].Cells[1].Value.ToString()); //add station name
                    }
                }
            }
            string[] addressList = tmpstationList.ToArray();

            CodingIncidentMessage testIncidentMsg = TestMessageTemplate();
            ConvertCodingtoTracker(addressList, testIncidentMsg); //Add to gateway tracker
            Log("Send target test message");
            _CallOut_CodingService.TargetMsg(addressList, testIncidentMsg);

            List<Tracking> trackingList = new List<Tracking>();
            //Only take out the stations on the Current Station
            foreach (string station in tmpstationList)
            {
                Tracking newstation = new Tracking();
                newstation.Station = station;
                newstation.Status = "Pending";

                List<string> unitcallsign = new List<string>();

                //To give relevant station units callsign
                foreach (CodingUnits unit in testIncidentMsg.DispatchUnits)
                {
                    if (unit.UnitCurrentStation.Equals(station))
                    {
                        unitcallsign.Add(unit.Callsign);
                    }

                    //For test message
                    if (unit.UnitCurrentStation.Equals("Test"))
                    {
                        unitcallsign.Add(unit.Callsign);
                    }
                }
                newstation.Unit = unitcallsign.ToArray();
                trackingList.Add(newstation); //Add into tracking list
            }

            //Send ack back to CAD
            CADIncidentAck cadincidentack = new CADIncidentAck();
            cadincidentack.CodingID = testIncidentMsg.CodingID;
            cadincidentack.AckTracking = trackingList.ToArray();
            DateTime currentdt = DateTime.Now;
            cadincidentack.AckTimeStamp = currentdt;
            cadincidentack.AckNo = 0;
            cadincidentack.AckTotal = tmpstationList.Count;

            Log("Send Ack to CAD for target test message");
            _CallOut_CADService.AckCADIncidentMsg(cadincidentack);

            //Set Coding Entry
            CreateTestCodingEntry(testIncidentMsg, tmpstationList.Count.ToString());
            //Set Message Entry
            CreateMessageEntry(testIncidentMsg, tmpstationList.Count.ToString());
        }
コード例 #7
0
 public void RcvIncidentCodingStatusResponse(CADIncidentAck codingstatusresponse)
 { }
コード例 #8
0
 public void UpdateCADIncidentAck(CADIncidentAck CADincidentack)
 { }
コード例 #9
0
        //Retrieve Incident Coding Status base on Query
        public void IncidentCodingStatus(string querycodingID)
        {
            SendOrPostCallback callback =
                delegate (object state)
                {
                    //Gather incident coding status base on coding ID
                    int acktotal = 0;
                    int pendingno = 0;
                    DateTime currentdt = DateTime.Now;
                    bool validCodingID = false;

                    //Update coding status (received time)
                    foreach (CodingStatus codingstatus in _CodingStatusList)
                    {
                        if (codingstatus.CodingID.Equals(querycodingID))
                        {
                            //There is such codingID exist
                            validCodingID = true;

                            //Update the updated timestamp from Console
                            codingstatus.Updated = String.Format("{0:g}", currentdt);
                            acktotal = Int32.Parse(codingstatus.Pending) + Int32.Parse(codingstatus.Acknowledged)
                                + Int32.Parse(codingstatus.Rejected) + Int32.Parse(codingstatus.Failed);
                            pendingno = Int32.Parse(codingstatus.Pending);
                        }
                    }

                    if (validCodingID)
                    {
                        //Update message status (-1 in ack No)
                        //Create new entry base on the coding ack message
                        MessageStatus newMsgStatus = new MessageStatus();
                        newMsgStatus.CodingID = querycodingID;
                        newMsgStatus.AckTimeStamp = String.Format("{0:g}", currentdt);
                        newMsgStatus.AckFrom = "Gateway";
                        if (pendingno == 0)
                        {
                            newMsgStatus.AckStatus = "Completed";
                        }
                        else
                        {
                            newMsgStatus.AckStatus = "Pending";
                        }
                        newMsgStatus.AckNo = "-1";
                        newMsgStatus.AckTotal = acktotal.ToString();

                        _MessageStatusList.Add(newMsgStatus);

                        //Response back to CAD 
                        
                        List<Tracking> trackingList = new List<Tracking>();

                        foreach (GatewayTracker gatewaytrack in _GatewayTrackerList)
                        {
                            if (gatewaytrack.CodingID.Equals(querycodingID))
                            {
                                //Only take out the stations on the Current Station
                                foreach (KeyValuePair<string, string> station in gatewaytrack.StationStatus)
                                {
                                    Tracking newstation = new Tracking();
                                    newstation.Station = station.Key;
                                    newstation.Status = station.Value;

                                    List<string> unitcallsign = new List<string>();

                                    //To give relevant station units callsign
                                    foreach (CodingUnits unit in gatewaytrack.DispatchUnits)
                                    {
                                        if (unit.UnitCurrentStation.Equals(station.Key))
                                        {
                                            unitcallsign.Add(unit.Callsign);
                                        }
                                        
                                        //For Test message
                                        if (unit.UnitCurrentStation.Equals("Test"))
                                        {
                                            unitcallsign.Add(unit.Callsign);
                                        }
                                    }

                                    newstation.Unit = unitcallsign.ToArray();
                                    trackingList.Add(newstation); //Add into tracking list
                                }
                            }
                        }

                        CADIncidentAck codingQueryRsponse = new CADIncidentAck();
                        codingQueryRsponse.CodingID = newMsgStatus.CodingID;
                        codingQueryRsponse.AckTracking = trackingList.ToArray();
                        codingQueryRsponse.AckTimeStamp = currentdt;
                        codingQueryRsponse.AckNo = Int32.Parse(newMsgStatus.AckNo);
                        codingQueryRsponse.AckTotal = Int32.Parse(newMsgStatus.AckTotal);
                        Log("Respond to requested ad hoc request from simulate CAD");
                        _CallOut_CADService.IncidentCodingStatusResponse(codingQueryRsponse);
                    }
                };

            _uiSyncContext.Post(callback, "Request incident coding status");
        }
コード例 #10
0
        /* 
         * 1) Convert from incident message into coding message
         * 2) Send the coding message to relevant console 
         * 3) Send Ack back to CAD in order to update mainly codingID
         */
        public void RcvCADIncidentMsg(ServiceReference2.DispatchedIncident CADincidentMsg)
        {
            SendOrPostCallback callback =
                delegate (object state)
                {
                    List<string> tmpstationList = new List<string>();
                    List<Tracking> trackingList = new List<Tracking>();
                    //Only take out the stations on the Current Station
                    foreach (ServiceReference2.DispatchedUnit uniqueunit in CADincidentMsg.ListOfUnits)
                    {
                        //Avoid duplicate station name in the list
                        if (!tmpstationList.Contains(uniqueunit.CurrentStation))
                        {
                            tmpstationList.Add(uniqueunit.CurrentStation);
                            Tracking newstation = new Tracking();
                            newstation.Station = uniqueunit.CurrentStation;
                            newstation.Status = "Pending";

                            List<string> unitcallsign = new List<string>();

                            //To give relevant station units callsign
                            foreach (ServiceReference2.DispatchedUnit unit in CADincidentMsg.ListOfUnits)
                            {
                                if (unit.CurrentStation.Equals(uniqueunit.CurrentStation))
                                {
                                    unitcallsign.Add(unit.CallSign);
                                }
                            }

                            newstation.Unit = unitcallsign.ToArray();
                            trackingList.Add(newstation); //Add into tracking list
                        }
                    }

                    string[] addressList = tmpstationList.ToArray();

                    //Convert Incident to Coding Message and send to respective console
                    CodingIncidentMessage codingincidentmsg = ConvertIncidentToCoding(CADincidentMsg);
                    ConvertCodingtoTracker(addressList, codingincidentmsg); //Add to gateway tracker
                    Log("Forward message from simulate CAD to respective console");
                    _CallOut_CodingService.TargetMsg(addressList, codingincidentmsg);

                    //Send ack back to CAD
                    CADIncidentAck cadincidentack = new CADIncidentAck();
                    cadincidentack.CodingID = codingincidentmsg.CodingID;
                    cadincidentack.AckTracking = trackingList.ToArray();
                    DateTime currentdt = DateTime.Now;
                    cadincidentack.AckTimeStamp = currentdt;
                    cadincidentack.AckNo = 0;
                    cadincidentack.AckTotal = tmpstationList.Count;
                    Log("Send ack to simulate CAD for forward message to console");
                    _CallOut_CADService.AckCADIncidentMsg(cadincidentack);


                    //Set Coding Entry
                    CreateCodingEntry(codingincidentmsg, tmpstationList.Count.ToString());
                    //Set Message Entry
                    CreateMessageEntry(codingincidentmsg, tmpstationList.Count.ToString());

                };

            _uiSyncContext.Post(callback, "Rcv Incident Message");
        }
コード例 #11
0
        //Update according at the CAD from thr adhoc Incident Coding Query
        public void RcvIncidentCodingStatusResponse(CADIncidentAck codingstatusresponse)
        {
            SendOrPostCallback callback =
                delegate(object state)
                {
                    Log("Update response from ad hoc request");
                    //for each station in the tracking
                    foreach (Tracking station in codingstatusresponse.AckTracking)
                    {
                        //for each unit in the station
                        foreach (string unitcallsign in station.Unit)
                        {
                            IncidentCodingStatus newincidentcodingsttaus = new IncidentCodingStatus();
                            newincidentcodingsttaus.CodingID = codingstatusresponse.CodingID;
                            newincidentcodingsttaus.TrackStation = station.Station;
                            newincidentcodingsttaus.TrackStatus = station.Status;
                            newincidentcodingsttaus.TrackUnit = unitcallsign;
                            newincidentcodingsttaus.AckFrom = "";
                            newincidentcodingsttaus.AckStatus = "";
                            newincidentcodingsttaus.AckTimeStamp = String.Format("{0:g}", codingstatusresponse.AckTimeStamp);
                            newincidentcodingsttaus.AckNo = codingstatusresponse.AckNo.ToString();
                            newincidentcodingsttaus.AckTotal = codingstatusresponse.AckTotal.ToString();

                            _IncidentCodingStatusList.Add(newincidentcodingsttaus);
                        }
                    }
                };

            _uiSyncContext.Post(callback, "update incident coding status responese");
        }
コード例 #12
0
        //Receive Ack from gateway and update according at the CAD
        public void UpdateCADIncidentAck(CADIncidentAck CADincidentack)
        {
            SendOrPostCallback callback =
                delegate(object state)
                {
                    Log("Update CAD Incident Acknowledge from Gateway");
                    //for each station in the tracking
                    foreach(Tracking station in CADincidentack.AckTracking){

                        //for each unit in the station
                        foreach (string unitcallsign in station.Unit)
                        {
                            IncidentCodingStatus newincidentcodingsttaus = new IncidentCodingStatus();
                            newincidentcodingsttaus.CodingID = CADincidentack.CodingID;
                            newincidentcodingsttaus.TrackStation = station.Station;
                            newincidentcodingsttaus.TrackStatus = station.Status;
                            newincidentcodingsttaus.TrackUnit = unitcallsign;
                            newincidentcodingsttaus.AckFrom = "";
                            newincidentcodingsttaus.AckStatus = "";
                            newincidentcodingsttaus.AckTimeStamp = String.Format("{0:g}", CADincidentack.AckTimeStamp);
                            newincidentcodingsttaus.AckNo = CADincidentack.AckNo.ToString();
                            newincidentcodingsttaus.AckTotal = CADincidentack.AckTotal.ToString();

                            _IncidentCodingStatusList.Add(newincidentcodingsttaus);
                        }
                    }
                };

            _uiSyncContext.Post(callback, "update CAD Incident Ack");
        }