コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        /// <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("");
            }
        }
コード例 #6
0
        /// <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);
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 /// <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));
 }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
 public override SdataTransactionResult Add(PayloadBase payload, List <SyncFeedEntryLink> links)
 {
     throw new NotImplementedException();
 }
コード例 #13
0
 public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links)
 {
     throw new NotImplementedException();
 }
コード例 #14
0
ファイル: GameStateBase.cs プロジェクト: wtrebella/Grappler
	protected virtual IEnumerator SetupPayload() {
		_payload = SpawnPayload();
		_payload.Spawn();
		yield break;
	}
コード例 #15
0
        public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links)
        {
            Document result = _transformation.GetTransformedDocument(payload as PricePayload, Helper.ReducePayloadPath(links));

            return(result);
        }
コード例 #16
0
 /// <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));
 }
コード例 #17
0
        /// <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);
        }
コード例 #18
0
        public override Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links)
        {
            Document result = _transformation.GetTransformedDocument(payload as PostalAddressPayload, links);

            return(result);
        }
コード例 #19
0
        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);
        }
コード例 #20
0
 public abstract Document GetTransformedDocument(PayloadBase payload, List <SyncFeedEntryLink> links);
コード例 #21
0
    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();

    }