public override SdataTransactionResult Update(PayloadBase payload, List <SyncFeedEntryLink> links) { //Transform account Document document = GetTransformedDocument(payload, links); AccountDocument accountDocument = (AccountDocument)_entity.GetDocumentTemplate(); accountDocument.Id = document.Id; accountDocument.CrmId = GetTradingAccountUuid(document.Id); accountDocument.addresses.documents.Add(document); // Update Document List <TransactionResult> transactionResults = new List <TransactionResult>(); _entity.Update(accountDocument, _context.Config, ref transactionResults); SdataTransactionResult sdTrResult = Helper.GetSdataTransactionResult(transactionResults, _context.OriginEndPoint, SupportedResourceKinds.tradingAccounts); if (sdTrResult != null) { sdTrResult.ResourceKind = _resourceKind; sdTrResult.HttpMessage = "PUT"; } return(sdTrResult); }
public override PayloadBase GetTransformedPayload(Document document, out List <SyncFeedEntryLink> links) { PayloadBase result = _transformation.GetTransformedPayload(document as AddressDocument, out links); links = Helper.ExtendPayloadPath(links, "postalAddress"); return(result); }
public override PayloadBase GetTransformedPayload(Document document, out List <SyncFeedEntryLink> links) { PayloadBase result = _transformation.GetTransformedPayload(document as ProductFamilyDocument, out links); links = Helper.ExtendPayloadPath(links, "commodityGroup"); return(result); }
public override PayloadBase GetTransformedPayload(Document document, out List <SyncFeedEntryLink> links) { PayloadBase result = _transformation.GetTransformedPayload(document as UnitOfMeasureDocument, out links); links = Helper.ExtendPayloadPath(links, "unitOfMeasure"); return(result); }
/// <summary> /// /// </summary> /// <param name="obj">must be of type <see cref="PayloadBase"/>.</param> /// <returns></returns> public string Serialize(object obj) { // if obj == null -> append null value and return if (null == obj) { return(NULL); } PayloadBase payloadObj = obj as PayloadBase; if (null == payloadObj) { throw new ArgumentException(string.Format("The object given must implement {0}.", typeof(PayloadBase).FullName), "obj"); } #warning WORKAROUND: Problems with enum types try { object compositeObj = this.GetPayloadObject(payloadObj); // serialize the composite payload object return(this.SerializeCompositeObject(compositeObj)); } catch { return(""); } }
/// <summary> /// Get the MIME type of this payload. /// </summary> /// <param name="payload"></param> /// <returns>The MIME type or Unknown</returns> public static MimeType GetMimeType(this PayloadBase payload) { switch (payload.MimeType) { case "text/plain": return(MimeType.TextPlain); case "text/html": return(MimeType.TextHtml); default: return(MimeType.Unknown); } }
public virtual SdataTransactionResult Add(PayloadBase payload, List <SyncFeedEntryLink> links) { Document document = GetTransformedDocument(payload, links); List <TransactionResult> transactionResults = new List <TransactionResult>(); _entity.Add(document, _context.Config, ref transactionResults); SdataTransactionResult sdTrResult = Helper.GetSdataTransactionResult(transactionResults, _context.OriginEndPoint, _resourceKind); if (sdTrResult != null) { sdTrResult.HttpMessage = "POST"; } return(sdTrResult); }
public override SdataTransactionResult Update(PayloadBase payload, List <SyncFeedEntryLink> links) { //Transform account Document document = GetTransformedDocument(payload, links); string id; string accountId; id = document.Id; if (id.EndsWith(Sage.Integration.Northwind.Application.API.Constants.PhoneIdPostfix)) { accountId = id.Replace(Sage.Integration.Northwind.Application.API.Constants.PhoneIdPostfix, ""); } else if (id.EndsWith(Sage.Integration.Northwind.Application.API.Constants.FaxIdPostfix)) { accountId = id.Replace(Sage.Integration.Northwind.Application.API.Constants.FaxIdPostfix, ""); } else { return(null); } AccountDocument accountDocument = (AccountDocument)_entity.GetDocumentTemplate(); accountDocument.Id = accountId; accountDocument.CrmId = GetTradingAccountUuid(document.Id); accountDocument.phones.documents.Add(document); // Update Document List <TransactionResult> transactionResults = new List <TransactionResult>(); _entity.Update(accountDocument, _context.Config, ref transactionResults); SdataTransactionResult sdTrResult = Helper.GetSdataTransactionResult(transactionResults, _context.OriginEndPoint, SupportedResourceKinds.phoneNumbers); if (sdTrResult != null) { sdTrResult.ResourceKind = _resourceKind; sdTrResult.HttpMessage = "PUT"; } return(sdTrResult); }
/// <summary> /// Get the <see cref="Header"/> with a <see cref="HeaderName"/> /// </summary> /// <param name="payload"></param> /// <param name="headerName"></param> /// <returns>A <see cref="Header"/> or null</returns> public static Header GetHeader(this PayloadBase payload, HeaderName headerName) { return(payload.Headers .Except(payload.XHeaders) .FirstOrDefault(h => h.ImfHeader == headerName)); }
public override SdataTransactionResult Add(PayloadBase payload, List <SyncFeedEntryLink> links) { string accountUuid = ""; SdataTransactionResult sdTrResult; PostalAddressPayload addressPayload = payload as PostalAddressPayload; if ((addressPayload.PostalAddresstype.primacyIndicatorSpecified) && addressPayload.PostalAddresstype.primacyIndicator) { // is primary } else if (addressPayload.PostalAddresstype.type == postalAddressTypeenum.Correspondance) { // is also primary adress } else { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Only primary addresses suported"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = SupportedResourceKinds.postalAddresses; sdTrResult.Uuid = StringToGuid(addressPayload.PostalAddresstype.uuid); return(sdTrResult); } foreach (SyncFeedEntryLink link in links) { if ((!String.IsNullOrEmpty(link.PayloadPath)) && link.PayloadPath.Equals(_tradingAccountUuidPayloadPath, StringComparison.InvariantCultureIgnoreCase)) { accountUuid = link.Uuid; break; } } if (String.IsNullOrEmpty(accountUuid)) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Trading Account UUID was missing"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = StringToGuid(addressPayload.PostalAddresstype.uuid); return(sdTrResult); } string accountId = GetTradingAccountLocalId(accountUuid); if (String.IsNullOrEmpty(accountId)) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = String.Format("Trading Account UUID {0} was not linked", accountUuid); sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = StringToGuid(addressPayload.PostalAddresstype.uuid); return(sdTrResult); } Account account = new Account(); Identity accIdentity = new Identity(account.EntityName, accountId); AccountDocument accountDocument = account.GetDocument( accIdentity, _emptyToken, _context.Config) as AccountDocument; Document document = null; bool doAdd = false; if (accountDocument.addresses.documents.Count == 0) { document = GetTransformedDocument(payload, links); accountDocument.CrmId = GetTradingAccountUuid(document.Id); accountDocument.addresses.documents.Add(document); doAdd = true; } else { AddressDocument addressdocument = accountDocument.addresses.documents[0] as AddressDocument; if (addressdocument.address1.IsNull && addressdocument.address2.IsNull && addressdocument.address3.IsNull && addressdocument.address4.IsNull && addressdocument.City.IsNull) { document = GetTransformedDocument(payload, links); accountDocument.CrmId = GetTradingAccountUuid(document.Id); accountDocument.addresses.documents[0] = document; doAdd = true; } } if (!doAdd) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Trading Account has already a primary address"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = StringToGuid(addressPayload.PostalAddresstype.uuid); return(sdTrResult); } List <TransactionResult> transactionResults = new List <TransactionResult>(); account.Update(accountDocument, _context.Config, ref transactionResults); sdTrResult = Helper.GetSdataTransactionResult(transactionResults, _context.OriginEndPoint, SupportedResourceKinds.tradingAccounts); if (sdTrResult != null) { sdTrResult.ResourceKind = _resourceKind; sdTrResult.HttpMessage = "POST"; } return(sdTrResult); }
public override SdataTransactionResult Update(PayloadBase payload, List <SyncFeedEntryLink> links) { SdataTransactionResult tmpTransactionResult; if (!(payload is SalesOrderLinePayload)) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.HttpMethod = "PUT"; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = ("salesorder payload missing"); return(tmpTransactionResult); } salesOrderLinetype soLine = (payload as SalesOrderLinePayload).SalesOrderLinetype; DataSets.OrderTableAdapters.Order_DetailsTableAdapter detailsTableAdapter = new Order_DetailsTableAdapter(); DataSets.Order order = new DataSets.Order(); int productId; int orderId; if (GetLocalIds(payload.LocalID, out orderId, out productId)) { using (OleDbConnection connection = new OleDbConnection(_context.Config.ConnectionString)) { try { detailsTableAdapter.Connection = connection; int recordCount = detailsTableAdapter.FillBy(order.Order_Details, orderId); if (recordCount == 0) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.LocalID; tmpTransactionResult.HttpMethod = "PUT"; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = ("salesorder not found"); return(tmpTransactionResult); } foreach (Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.Order.Order_DetailsRow detailsRow in order.Order_Details.Rows) { if (detailsRow.ProductID == productId) { detailsRow.ModifyUser = _context.Config.CrmUser; detailsRow.ModifyID = _context.Config.SequenceNumber; if (soLine.quantitySpecified) { detailsRow.Quantity = Convert.ToInt16(soLine.quantity); } else { detailsRow.Quantity = 0; } if (soLine.initialPriceSpecified) { detailsRow.UnitPrice = (Decimal)soLine.initialPrice; } else { detailsRow.UnitPrice = 0; } if ((!soLine.discountTotalSpecified) || (detailsRow.Quantity == 0) || (detailsRow.UnitPrice == 0)) { detailsRow.Discount = (float)0; } else { // discountPC = discountsum / qunatity * listprice //detailRow.Discount = Convert.ToSingle((decimal)lineItemDoc.discountsum.Value / ((decimal)detailRow.Quantity * detailRow.UnitPrice)); float discount = Convert.ToSingle((decimal)soLine.discountTotal / (detailsRow.UnitPrice)); if (discount > 1) { discount = 0; } detailsRow.Discount = discount; } break; } } detailsTableAdapter.Update(order.Order_Details); tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.LocalID; tmpTransactionResult.HttpMethod = "PUT"; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.OK; return(tmpTransactionResult); } catch (Exception e) { tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.LocalID; tmpTransactionResult.HttpMethod = "PUT"; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = e.Message; return(tmpTransactionResult); } } } tmpTransactionResult = new SdataTransactionResult(); tmpTransactionResult.LocalId = payload.LocalID; tmpTransactionResult.HttpMethod = "PUT"; tmpTransactionResult.ResourceKind = _resourceKind; tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest; tmpTransactionResult.HttpMessage = "Not found"; return(tmpTransactionResult); }
public override SdataTransactionResult Add(PayloadBase payload, List <SyncFeedEntryLink> links) { throw new NotImplementedException(); }
public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links) { throw new NotImplementedException(); }
protected virtual IEnumerator SetupPayload() { _payload = SpawnPayload(); _payload.Spawn(); yield break; }
public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links) { Document result = _transformation.GetTransformedDocument(payload as PricePayload, Helper.ReducePayloadPath(links)); return(result); }
/// <summary> /// Gets the etag value of a feed entry. /// </summary> /// <param name="feedEntry">The FeedEntry to compute the etag for.</param> /// <param name="recursive">Should the etag contain values of complex types?</param> /// <returns>A string representing the etag.</returns> public static string ComputeEtag(PayloadBase payload, bool recursive) { return((recursive) ? stat_etagSevices._deepEtagBuilder.Compute(payload) : stat_etagSevices._simpleEtagBuilder.Compute(payload)); }
/// <summary> /// Get the value of an <see cref="Header"/> with a <see cref="HeaderName"/> /// </summary> /// <param name="payload"></param> /// <param name="headerName"></param> /// <returns>The value of the header or an empty string when not found</returns> public static string GetHeaderValue(this PayloadBase payload, HeaderName headerName) { var header = GetHeader(payload, headerName); return(header == null ? string.Empty : header.Value); }
public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links) { Document result = _transformation.GetTransformedDocument(payload as PostalAddressPayload, links); return(result); }
public override SdataTransactionResult Add(PayloadBase payload, List <SyncFeedEntryLink> links) { string accountUuid = ""; SdataTransactionResult sdTrResult; PhoneNumberPayload phoneNumberPayload = payload as PhoneNumberPayload; bool isFax = false;; bool isPhone = false; if (phoneNumberPayload.PhoneNumbertype.type.Equals("general", StringComparison.InvariantCultureIgnoreCase)) { isPhone = true; } else if (phoneNumberPayload.PhoneNumbertype.type.Equals("fax", StringComparison.InvariantCultureIgnoreCase)) { isFax = true; } else { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Only primary phonenumbers with type general and fax where accepted"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = phoneNumberPayload.SyncUuid; return(sdTrResult); } foreach (SyncFeedEntryLink link in links) { if ((!String.IsNullOrEmpty(link.PayloadPath)) && link.PayloadPath.Equals(_tradingAccountUuidPayloadPath, StringComparison.InvariantCultureIgnoreCase)) { accountUuid = link.Uuid; break; } } if (String.IsNullOrEmpty(accountUuid)) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Trading Account UUID was missing"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = phoneNumberPayload.SyncUuid; return(sdTrResult); } string accountId = GetTradingAccountLocalId(accountUuid); if (String.IsNullOrEmpty(accountId)) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = String.Format("Trading Account UUID {0} was not linked", accountUuid); sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = phoneNumberPayload.SyncUuid; return(sdTrResult); } Account account = new Account(); Identity accIdentity = new Identity(account.EntityName, accountId); AccountDocument accountDocument = account.GetDocument( accIdentity, _emptyToken, _context.Config) as AccountDocument; Document document = null; bool doAdd = false; document = GetTransformedDocument(payload, links); if (isPhone) { document.Id = accountId + Sage.Integration.Northwind.Application.API.Constants.PhoneIdPostfix; } if (isFax) { document.Id = accountId + Sage.Integration.Northwind.Application.API.Constants.FaxIdPostfix; } if (accountDocument.addresses.documents.Count == 0) { accountDocument.CrmId = GetTradingAccountUuid(document.Id); accountDocument.phones.documents.Add(document); doAdd = true; } else { for (int index = 0; index < accountDocument.phones.documents.Count; index++) { if (accountDocument.phones.documents[index].Id.Equals(document.Id, StringComparison.InvariantCultureIgnoreCase)) { if (((PhoneDocument)accountDocument.phones.documents[index]).number.IsNull) { doAdd = true; accountDocument.phones.documents[index] = document; } break; } } } if (!doAdd) { sdTrResult = new SdataTransactionResult(); sdTrResult.HttpMessage = "Trading Account has already this primary phone type"; sdTrResult.HttpMethod = "POST"; sdTrResult.HttpStatus = System.Net.HttpStatusCode.Forbidden; sdTrResult.ResourceKind = _resourceKind; sdTrResult.Uuid = phoneNumberPayload.SyncUuid; return(sdTrResult); } List <TransactionResult> transactionResults = new List <TransactionResult>(); account.Update(accountDocument, _context.Config, ref transactionResults); sdTrResult = Helper.GetSdataTransactionResult(transactionResults, _context.OriginEndPoint, SupportedResourceKinds.tradingAccounts); if (sdTrResult != null) { sdTrResult.ResourceKind = _resourceKind; sdTrResult.HttpMessage = "POST"; } return(sdTrResult); }
public abstract Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links);
public void GeneratePayloadFromContents() { // Create a payload based on our contents. PotionPayload = gameObject.AddComponent<PayloadExplode>(); PotionPayload.myParentPotion = this; PotionPayload.StatusEffects = new ArrayList(); // Check statalters. foreach (PotionIngredientScript.StatAlterStruct stats in StatAlters) { // First, payload types. if(stats.Name.Contains("Gas") || stats.Name.Contains("Bomberman") || stats.Name.Contains("Slime")) { if(stats.Name.Contains("Gas")) { PotionPayload = gameObject.AddComponent<PayloadGas>(); PotionPayload.myParentPotion = this; PotionPayload.StatusEffects = new ArrayList(); } if (stats.Name.Contains("Bomberman")) { PotionPayload = gameObject.AddComponent<PayloadBomberman>(); PotionPayload.myParentPotion = this; PotionPayload.StatusEffects = new ArrayList(); } if (stats.Name.Contains("Slime")) { PotionPayload = gameObject.AddComponent<PayloadSlime>(); PotionPayload.myParentPotion = this; PotionPayload.StatusEffects = new ArrayList(); } } } // Note: have to loop twice, so that the effects get applied properly to the latest payload. foreach (PotionIngredientScript.StatAlterStruct stats in StatAlters) { // Then, player-applicable status effects. PotionPayload.StatusEffect = true; PotionPayload.StatusEffects.Add(stats); } StatAlters.Clear(); }