//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"); }
//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"); }
public void IncidentCodingStatusResponse(CADIncidentAck codingstatusresponse) { _CADCallbackList.ForEach( delegate(IMessageServiceCallback cadcallback) { cadcallback.RcvIncidentCodingStatusResponse(codingstatusresponse); }); }
public void AckCADIncidentMsg(CADIncidentAck CADincidentack) { _CADCallbackList.ForEach( delegate(IMessageServiceCallback cadcallback) { cadcallback.UpdateCADIncidentAck(CADincidentack); }); }
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()); }
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()); }
public void RcvIncidentCodingStatusResponse(CADIncidentAck codingstatusresponse) { }
public void UpdateCADIncidentAck(CADIncidentAck CADincidentack) { }
//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"); }
/* * 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"); }
//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"); }