public bool PerformSave() { if (!CanSave()) { return(false); } Guid sAgencyId = AgencyId; Guid sUnitId = UnitId; if (AgencyId == Guid.Empty && !string.IsNullOrWhiteSpace(AgencyName)) { Common.AgencyInfo aInfo = Common.RadioInfoLookupHelper.Instance.AgencyList.FirstOrDefault(a => a.AgencyName.Equals(AgencyName, StringComparison.InvariantCultureIgnoreCase)); if (aInfo != null) { sAgencyId = aInfo.AgencyId; } else { sAgencyId = Guid.NewGuid(); Common.RadioInfoLookupHelper.Instance.AddOrUpdateAgency(sAgencyId, AgencyName); } } if (UnitId == Guid.Empty && !string.IsNullOrWhiteSpace(UnitName)) { //find or create unit... Common.UnitInfo uInfo = Common.RadioInfoLookupHelper.Instance.UnitList.FirstOrDefault(u => u.UnitName.Equals(UnitName, StringComparison.InvariantCultureIgnoreCase)); if (uInfo != null) { sUnitId = uInfo.UnitKeyId; } else { sUnitId = Guid.NewGuid(); Common.RadioInfoLookupHelper.Instance.AddOrUpdateUnit(sUnitId, sAgencyId, UnitName); } } string signalingLookupKey = Common.RadioInfo.GenerateLookupKey(SignalingFormat, SignalingUnitId); if (!string.IsNullOrWhiteSpace(signalingLookupKey)) { Common.RadioInfo radioInfo = Common.RadioInfoLookupHelper.Instance.RadioList.FirstOrDefault(r => r.SignalingLookupKey == signalingLookupKey); radioInfo.AgencyKeyId = sAgencyId; radioInfo.PersonnelName = PersonnelName; radioInfo.RadioName = RadioName; radioInfo.RadioType = RadioType; radioInfo.RoleName = RoleName; radioInfo.UnitKeyId = sUnitId; radioInfo.ExcludeFromRollCall = ExcludeFromRollCall; Cinch.Mediator.Instance.NotifyColleaguesAsync <bool>("REFRESH_RADIO_LOOKUPS", true); } else { Common.RadioInfoLookupHelper.Instance.AddOrUpdateRadio(sUnitId, sAgencyId, SignalingFormat, SignalingUnitId, RadioName, RoleName, PersonnelName, RadioType, ExcludeFromRollCall); } Common.RadioInfoLookupHelper.Instance.SaveInfo(); return(true); }
public SingleRadioEditorViewModel(RadioSignalItemModel radioSignal) { if (radioSignal == null) { throw new ArgumentNullException(); } _radioSignal = radioSignal; SignalingFormat = _radioSignal.SignalingFormat; SignalingUnitId = _radioSignal.UnitId; _unitName = _radioSignal.UnitName; _agencyName = _radioSignal.AgencyName; _radioTypes = new WPFCommon.ThreadSafeObservableCollection <SingleRadioEditorRadioType>(); _radioTypes.Add(new SingleRadioEditorRadioType() { RadioType = Common.RadioTypeCode.Unknown, RadioTypeName = "<UNASSIGNED>" }); _radioTypes.Add(new SingleRadioEditorRadioType() { RadioType = Common.RadioTypeCode.Mobile, RadioTypeName = "Mobile" }); _radioTypes.Add(new SingleRadioEditorRadioType() { RadioType = Common.RadioTypeCode.Portable, RadioTypeName = "Portable" }); _radioTypes.Add(new SingleRadioEditorRadioType() { RadioType = Common.RadioTypeCode.BaseStation, RadioTypeName = "Base Station" }); _agencies = new WPFCommon.ThreadSafeObservableCollection <SingleRadioEditorAgency>(); _agencies.Add(new SingleRadioEditorAgency() { AgencyId = Guid.Empty, AgencyName = "<UNASSIGNED>" }); foreach (Common.AgencyInfo aInfo in RadioLog.Common.RadioInfoLookupHelper.Instance.AgencyList.OrderBy(a => a.AgencyName)) { _agencies.Add(new SingleRadioEditorAgency() { AgencyId = aInfo.AgencyId, AgencyName = aInfo.AgencyName }); } _units = new WPFCommon.ThreadSafeObservableCollection <SingleRadioEditorUnit>(); _units.Add(new SingleRadioEditorUnit() { UnitId = Guid.Empty, AgencyId = Guid.Empty, UnitName = "<UNASSIGNED>" }); foreach (Common.UnitInfo uInfo in RadioLog.Common.RadioInfoLookupHelper.Instance.UnitList.OrderBy(u => u.UnitName)) { _units.Add(new SingleRadioEditorUnit() { UnitId = uInfo.UnitKeyId, AgencyId = uInfo.AgencyKeyId, UnitName = uInfo.UnitName }); } if (!string.IsNullOrWhiteSpace(_radioSignal.SignalingFormat) && !string.IsNullOrWhiteSpace(_radioSignal.UnitId)) { Common.RadioInfo radioInfo = Common.RadioInfoLookupHelper.Instance.RadioList.FirstOrDefault(r => r.SignalingLookupKey == _radioSignal.SignalingLookupKey); if (radioInfo != null) { _unitId = radioInfo.UnitKeyId; _agencyId = radioInfo.AgencyKeyId; _radioName = radioInfo.RadioName; _roleName = radioInfo.RoleName; _personnelName = radioInfo.PersonnelName; _radioType = radioInfo.RadioType; SignalingFormat = radioInfo.SignalingFormat; SignalingUnitId = radioInfo.SignalingUnitId; } } }