private void InitStateSeatItems() { try { mListStateSeatItems.Clear(); if (ListAllSeatInfos == null) { return; } if (ListAllStateInfos == null) { return; } for (int i = 0; i < mListRegionSeats.Count; i++) { var regionSeat = mListRegionSeats[i]; SeatInfo seatInfo = ListAllSeatInfos.FirstOrDefault(s => s.ObjID == regionSeat.SeatID); if (seatInfo == null) { continue; } for (int j = 0; j < ListAllStateInfos.Count; j++) { AgentStateInfo stateInfo = ListAllStateInfos[j]; int stateNumber = stateInfo.Number; AgentStateItem stateItem = mListAgentStateItems.FirstOrDefault(s => s.Number == stateNumber); StateSeatItem item = new StateSeatItem(); item.Info = regionSeat; item.SeatInfo = seatInfo; item.StateItem = stateItem; item.ObjID = regionSeat.SeatID; item.SeatName = seatInfo.Name; item.Extension = seatInfo.Extension; item.Number = stateNumber; item.Description = string.Empty; mListStateSeatItems.Add(item); } } } catch (Exception ex) { ShowException(ex.Message); } }
private void DealQueryExtStateMessage(ReturnMessage retMessage) { try { if (retMessage.ListData.Count < 2) { CurrentApp.WriteLog("DealQueryExt", string.Format("ReturnMessage param count invalid.")); return; } string strMonID = retMessage.ListData[0]; string strExtInfo = retMessage.ListData[1]; OperationReturn optReturn; optReturn = XMLHelper.DeserializeObject <ExtensionInfo>(strExtInfo); if (!optReturn.Result) { CurrentApp.WriteLog("DealQueryExt", string.Format("Fail.\t{0}\t{1}", optReturn.Code, optReturn.Message)); return; } ExtensionInfo extInfo = optReturn.Data as ExtensionInfo; if (extInfo == null) { CurrentApp.WriteLog("DealQueryExt", string.Format("Fail.\tExtInfo is null")); return; } //var item = mListStateSeatItems.FirstOrDefault(e => e.MonID == strMonID); //if (item != null) //{ // item.ExtensionInfo = extInfo; // item.TimeDeviation = mTimeDeviation; // Dispatcher.Invoke(new Action(() => UpdateStateSeatItem(item))); //} var items = mListStateSeatItems.Where(e => e.MonID == strMonID); foreach (var item in items) { item.ExtensionInfo = extInfo; item.TimeDeviation = mTimeDeviation; StateSeatItem item1 = item; Dispatcher.Invoke(new Action(() => UpdateStateSeatItem(item1))); } } catch (Exception ex) { CurrentApp.WriteLog("DealQueryExt", string.Format("Fail.\t{0}", ex.Message)); } }
private string GetRecordLength(StateSeatItem item) { string strReturn = string.Empty; try { var extInfo = item.ExtensionInfo; if (extInfo == null) { return(strReturn); } var extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == S4410Consts.STATE_TYPE_RECORD); if (extStateInfo != null) { if (extStateInfo.State > 0) { if (extStateInfo.State == (int)RecordState.All) { string strVoice = string.Empty; string strScreen = string.Empty; double serverTimeDeviation = extInfo.VocTimeDeviation; double thisTimeDeviation = mTimeDeviation; double timeDeviation = serverTimeDeviation + thisTimeDeviation; DateTime now = DateTime.Now.ToUniversalTime(); DateTime start = extInfo.VocStartRecordTime; if (start > DateTime.Parse("2014/1/1")) { TimeSpan ts = now - start; int voice = (int)(ts.TotalSeconds - timeDeviation); try { strVoice = Converter.Second2Time(voice); } catch { } } serverTimeDeviation = extInfo.ScrTimeDiviation; thisTimeDeviation = mTimeDeviation; timeDeviation = serverTimeDeviation + thisTimeDeviation; now = DateTime.Now.ToUniversalTime(); start = extInfo.ScrStartRecordTime; if (start > DateTime.Parse("2014/1/1")) { TimeSpan ts = now - start; int screen = (int)(ts.TotalSeconds - timeDeviation); try { strScreen = Converter.Second2Time(screen); } catch { } } strReturn = string.Format("V:{0} S:{1}", strVoice, strScreen); } else if (extStateInfo.State == (int)RecordState.Voice) { string strVoice = string.Empty; double serverTimeDeviation = extInfo.VocTimeDeviation; double thisTimeDeviation = mTimeDeviation; double timeDeviation = serverTimeDeviation + thisTimeDeviation; DateTime now = DateTime.Now.ToUniversalTime(); DateTime start = extInfo.VocStartRecordTime; if (start > DateTime.Parse("2014/1/1")) { TimeSpan ts = now - start; int voice = (int)(ts.TotalSeconds - timeDeviation); try { strVoice = Converter.Second2Time(voice); } catch { } } strReturn = strVoice; } else if (extStateInfo.State == (int)RecordState.Screen) { string strScreen = string.Empty; double serverTimeDeviation = extInfo.ScrTimeDiviation; double thisTimeDeviation = mTimeDeviation; double timeDeviation = serverTimeDeviation + thisTimeDeviation; DateTime now = DateTime.Now.ToUniversalTime(); DateTime start = extInfo.ScrStartRecordTime; if (start > DateTime.Parse("2014/1/1")) { TimeSpan ts = now - start; int screen = (int)(ts.TotalSeconds - timeDeviation); try { strScreen = Converter.Second2Time(screen); } catch { } } strReturn = strScreen; } } } } catch { } return(strReturn); }
private void UpdateStateSeatItem(StateSeatItem item) { try { ExtStateInfo extStateInfo; AgentStateItem agentStateItem; ExtensionInfo extInfo; if (ListAllStateInfos == null) { return; } extInfo = item.ExtensionInfo; if (extInfo == null) { return; } string strExt = extInfo.Extension; agentStateItem = item.StateItem; if (agentStateItem == null) { return; } int stateNumber = agentStateItem.Number; var stateInfo = agentStateItem.Info; if (stateInfo == null) { return; } int stateType = stateInfo.Type; int stateValue = stateInfo.Value; switch (stateType) { case S4410Consts.STATE_TYPE_LOGIN: extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == stateType); if (extStateInfo != null) { if ((stateValue & extStateInfo.State) > 0) { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp == null) { agentStateItem.ListSeatItems.Add(item); } } else { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp != null) { agentStateItem.ListSeatItems.Remove(temp); } } item.Description = extInfo.AgentID; } break; case S4410Consts.STATE_TYPE_CALL: extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == stateType); if (extStateInfo != null) { if (stateValue == extStateInfo.State) { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp == null) { agentStateItem.ListSeatItems.Add(item); } } else { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp != null) { agentStateItem.ListSeatItems.Remove(temp); } } item.Description = string.Format("{0}-->{1}", extInfo.CallerID, extInfo.CalledID); } break; case S4410Consts.STATE_TYPE_RECORD: extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == stateType); if (extStateInfo != null) { if ((stateValue & extStateInfo.State) > 0) { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp == null) { agentStateItem.ListSeatItems.Add(item); } } else { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp != null) { agentStateItem.ListSeatItems.Remove(temp); } } item.Description = GetRecordLength(item); } break; case S4410Consts.STATE_TYPE_DIRECTION: extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == stateType); if (extStateInfo != null) { if (stateValue == extStateInfo.State) { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp == null) { agentStateItem.ListSeatItems.Add(item); } } else { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp != null) { agentStateItem.ListSeatItems.Remove(temp); } } item.Description = GetRecordLength(item); } break; case S4410Consts.STATE_TYPE_AGNET: extStateInfo = extInfo.ListStateInfos.FirstOrDefault(s => s.StateType == stateType); if (extStateInfo != null) { if (stateValue == extStateInfo.State) { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp == null) { agentStateItem.ListSeatItems.Add(item); } } else { var temp = agentStateItem.ListSeatItems.FirstOrDefault( s => s.Extension == strExt && s.Number == stateNumber); if (temp != null) { agentStateItem.ListSeatItems.Remove(temp); } } item.Description = string.Empty; } break; } agentStateItem.SeatCount = agentStateItem.ListSeatItems.Count; } catch (Exception ex) { ShowException(ex.Message); } }