/// <summary> /// For FM Messages /// </summary> /// <param name="unitNumber"></param> /// <param name="type"></param> /// <param name="vendorName"></param> /// <param name="cardNumber"></param> /// <param name="accountNumber"></param> /// <param name="locator"></param> /// <param name="targetFields"></param> /// <param name="fmType"></param> public SymConnectRequestMessage(int unitNumber, SymConnectMessageType type, string vendorName, string cardNumber, string accountNumber, IEnumerable <SymConnectRequestMessage.RecordDesignation> locator, Dictionary <string, string> targetFields, SymConnectFMType fmType) : this(unitNumber, type, vendorName, accountNumber, cardNumber) { if (type != SymConnectMessageType.FM) { throw new System.InvalidOperationException("Invalid constructor for a symconnect message of type FM"); } SourceLocators = locator; //TargetLocators = locator; TargetFields = targetFields; FmType = fmType; ValidateSymConnectContent(); }
/// <summary> /// Creates or revises a symconnect record from our object /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <param name="fmType"></param> /// <returns></returns> public Func <SymConnectMessage.SymConnectRequestMessage.RecordDesignation, string> ConvertToSymConnectPost <T>(T obj, SymConnectFMType fmType) { var symObj = ValidateSymConnectSerializable(obj); //get all the changed fields via our model var nodes = GetAllSymConnectProperties(obj); var changes = nodes.ToDictionary((kvp) => kvp.Key._propertyName ?? kvp.Value.Name, (kvp2) => kvp2.Value.GetValue(obj, null).ToString()); return((designation) => { return new SymConnectRequestMessage(_unitNumber, SymConnectMessageType.FM, _vendorName, designation.Locator, _cardNumber, new List <SymConnectRequestMessage.RecordDesignation>() { designation }, changes, fmType).ToString(); }); }