Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.OrderTableAdapters.OrdersTableAdapter.Update C# (CSharp) Method

Update() private method

private Update ( Order dataTable ) : int
dataTable Order
return int
        public virtual int Update(Order.OrdersDataTable dataTable) {
            return this.Adapter.Update(dataTable);
        }
        

Same methods

OrdersTableAdapter::Update ( global dataRow ) : int
OrdersTableAdapter::Update ( string CustomerID, global EmployeeID, global OrderDate, global RequiredDate, global ShippedDate, global ShipVia, global Freight, string ShipName, string ShipAddress, string ShipCity, string ShipRegion, string ShipPostalCode, string ShipCountry, global CreateID, string CreateUser, global ModifyID, string ModifyUser, int Original_OrderID, string Original_CustomerID, global Original_EmployeeID, global Original_OrderDate, global Original_RequiredDate, global Original_ShippedDate, global Original_ShipVia, global Original_Freight, string Original_ShipName, string Original_ShipAddress, string Original_ShipCity, string Original_ShipRegion, string Original_ShipPostalCode, string Original_ShipCountry, global Original_CreateID, string Original_CreateUser, global Original_ModifyID, string Original_ModifyUser ) : int

Usage Example

        public override SdataTransactionResult Update(PayloadBase payload, List<SyncFeedEntryLink> links)
        {
            SdataTransactionResult tmpTransactionResult;
            salesOrdertype salesorder = null;

            #region check input values
            if (!(payload is SalesOrderPayload))
            {
                tmpTransactionResult = new SdataTransactionResult();
                tmpTransactionResult.HttpMethod = "PUT";
                tmpTransactionResult.ResourceKind = _resourceKind;
                tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                tmpTransactionResult.HttpMessage = ("salesorder payload missing");
                return tmpTransactionResult;
            }
            salesorder = (payload as SalesOrderPayload).SalesOrdertype;

            if (salesorder == null)
            {
                tmpTransactionResult = new SdataTransactionResult();
                tmpTransactionResult.HttpMethod = "PUT";
                tmpTransactionResult.ResourceKind = _resourceKind;
                tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                tmpTransactionResult.HttpMessage = ("salesorder payload missing");
                return tmpTransactionResult;

            }
            foreach (SyncFeedEntryLink link in links)
            {
                if (link.LinkRel != RelEnum.related.ToString())
                    continue;
                string localID = string.Empty;
                if (link.Href.StartsWith(_context.DatasetLink, StringComparison.InvariantCultureIgnoreCase))
                    if (link.Href.LastIndexOf("('") < link.Href.LastIndexOf("')"))
                        localID = link.Href.Substring(link.Href.LastIndexOf("('") + 2,
                            link.Href.LastIndexOf("')") - link.Href.LastIndexOf("('") - 2);

                SupportedResourceKinds reskind = ResourceKindHelpers.GetResourceKind(link.PayloadPath);

                if (localID == string.Empty)
                    localID = GetLocalId(link.Uuid, reskind);

                payload.ForeignIds.Add(link.PayloadPath, localID);
            }

            if (payload == null)
                return null;

            string customerID;

            if (!payload.ForeignIds.TryGetValue("tradingAccount", out customerID))
            {
                tmpTransactionResult = new SdataTransactionResult();
                tmpTransactionResult.HttpMethod = "PUT";
                tmpTransactionResult.ResourceKind = _resourceKind;
                tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                tmpTransactionResult.HttpMessage = ("Trading Acount Id missing");
                return tmpTransactionResult;
            }

            if (!customerID.StartsWith(Sage.Integration.Northwind.Application.API.Constants.CustomerIdPrefix))
            {
                tmpTransactionResult = new SdataTransactionResult();
                tmpTransactionResult.HttpMethod = "PUT";
                tmpTransactionResult.ResourceKind = _resourceKind;
                tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                tmpTransactionResult.HttpMessage = ("Salesorder submission is only supported by customers");
                return tmpTransactionResult;
            }
            #endregion

            DataSets.OrderTableAdapters.OrdersTableAdapter tableAdapter = new OrdersTableAdapter();
            DataSets.OrderTableAdapters.Order_DetailsTableAdapter detailsTableAdapter=new Order_DetailsTableAdapter();

            DataSets.Order order = new DataSets.Order();

            int id;
            if (!(Int32.TryParse(payload.LocalID, out id)))
                id = 0;
            int recordCount;

            using (OleDbConnection connection = new OleDbConnection(_context.Config.ConnectionString))
            {
                tableAdapter.Connection = connection;
                recordCount = tableAdapter.FillBy(order.Orders, id);
                if (recordCount == 0)
                    return null;

                detailsTableAdapter.Connection = connection;
                detailsTableAdapter.FillBy(order.Order_Details, id);

            }

            DataSets.Order.OrdersRow row = (DataSets.Order.OrdersRow)order.Orders[0];

            #region fill dataset from document
            try
            {
                if (!salesorder.dateSpecified)
                    row.SetOrderDateNull();
                else
                    row.OrderDate = salesorder.date;

                if (!salesorder.dueDateSpecified)
                    row.SetRequiredDateNull();
                else
                    row.RequiredDate = (DateTime)salesorder.dueDate;

                //if (orderDoc.shippedvia.IsNull)
                //    newOrder.SetShipViaNull();
                //else
                //    newOrder.ShipVia = (int)orderDoc.shippedvia.Value;

                if (salesorder.postalAddresses == null || salesorder.postalAddresses.Length == 0)
                {
                    row.SetShipAddressNull();
                    row.SetShipCityNull();
                    row.SetShipCountryNull();
                    row.SetShipPostalCodeNull();
                }
                else
                {
                    postalAddresstype postadress = salesorder.postalAddresses[0];
                    row.ShipAddress = postadress.address1;
                    row.ShipCity = postadress.townCity;
                    row.ShipPostalCode = postadress.zipPostCode;
                    row.ShipCountry = postadress.country;

                }

                if (!salesorder.carrierTotalPriceSpecified)
                    row.Freight = (decimal)0;
                else
                    row.Freight = (decimal)salesorder.carrierTotalPrice;

                //row.CreateUser = _context.Config.CrmUser;
                row.ModifyUser = _context.Config.CrmUser;
                //row.CreateID = _context.Config.SequenceNumber;
                row.ModifyID = _context.Config.SequenceNumber;

                Dictionary<Guid, SyncFeedEntryLink> itemLinks = new Dictionary<Guid, SyncFeedEntryLink>();
                GuidConverter converter = new GuidConverter();
                 Guid itemUuid;

                foreach (SyncFeedEntryLink link in links)
                {
                    SupportedResourceKinds resKind = ResourceKindHelpers.GetResourceKind(link.PayloadPath);
                    if (resKind != SupportedResourceKinds.salesOrderLines)
                        continue;
                    try
                    {

                        itemUuid = (Guid)converter.ConvertFromString(link.Uuid);
                        if (!Guid.Empty.Equals(itemUuid))
                            itemLinks.Add(itemUuid, link);
                    }
                    catch (Exception)
                    {
                    }
                }
                List<DataSets.Order.Order_DetailsRow> rowsToDelete = new List<DataSets.Order.Order_DetailsRow>();

                //foreach (DataSets.Order.Order_DetailsRow detailsRow in rowsToDelete)
                //{
                //    detailsRow.Delete();
                //}

                foreach (DataSets.Order.Order_DetailsRow detailsRow in order.Order_Details)
                {
                    string itemId = detailsRow.OrderID.ToString() + "-" + detailsRow.ProductID.ToString();
                    itemUuid = GetUuid(itemId, "", SupportedResourceKinds.salesOrderLines);
                    SyncFeedEntryLink itemlink;
                    if (itemLinks.TryGetValue(itemUuid, out itemlink))
                    {
                        string lineNumberstring = itemlink.PayloadPath.Substring(itemlink.PayloadPath.IndexOf("[") + 1, itemlink.PayloadPath.IndexOf("]") - itemlink.PayloadPath.IndexOf("[") - 1);
                        int lineNumber;
                        if (Int32.TryParse(lineNumberstring, out lineNumber))
                        {
                            if (lineNumber < salesorder.salesOrderLines.Length)
                            {
                                salesOrderLinetype soLine = salesorder.salesOrderLines[lineNumber];
                                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;
                                }

                            }
                        }
                        itemLinks.Remove(itemUuid);
                    }
                    else
                    {
                        //delete item
                        rowsToDelete.Add(detailsRow);
                    }

                }

                foreach (SyncFeedEntryLink itemlink in itemLinks.Values)
                {
                    {
                        try
                        {
                            int productID;
                            string productIdString;
                            string productIdPayload = String.Format("{0}/{1}", itemlink.PayloadPath, "commodity");

                            if (payload.ForeignIds.TryGetValue(productIdPayload, out productIdString))
                            {
                                try
                                {
                                    productID = Convert.ToInt32(productIdString);
                                }
                                catch (Exception)
                                {
                                    continue;
                                }
                            }
                            else
                                continue;

                            string lineNumberstring = itemlink.PayloadPath.Substring(itemlink.PayloadPath.IndexOf("[") + 1, itemlink.PayloadPath.IndexOf("]") - itemlink.PayloadPath.IndexOf("[") - 1);
                            int lineNumber;
                            if (Int32.TryParse(lineNumberstring, out lineNumber))
                            {
                                if (lineNumber < salesorder.salesOrderLines.Length)
                                {
                                    salesOrderLinetype soLine = salesorder.salesOrderLines[lineNumber];

                                    DataSets.Order.Order_DetailsRow detailRow = order.Order_Details.NewOrder_DetailsRow();
                                    soLine.applicationID = payload.LocalID + "-" + productID.ToString();
                                    detailRow.OrderID = Convert.ToInt32(payload.LocalID);
                                    detailRow.ProductID = productID;
                                    if (soLine.quantitySpecified)
                                        detailRow.Quantity = Convert.ToInt16(soLine.quantity);
                                    else
                                        detailRow.Quantity = 0;

                                    if (soLine.initialPriceSpecified)
                                        detailRow.UnitPrice = (Decimal)soLine.initialPrice;
                                    else
                                        detailRow.UnitPrice = 0;

                                    if ((!soLine.discountTotalSpecified) || (detailRow.Quantity == 0) || (detailRow.UnitPrice == 0))
                                    {
                                        detailRow.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 / (detailRow.UnitPrice));
                                        if (discount > 1)
                                            discount = 0;
                                        detailRow.Discount = discount;
                                    }

                                    detailRow.CreateUser = _context.Config.CrmUser;
                                    detailRow.ModifyUser = _context.Config.CrmUser;
                                    detailRow.CreateID = _context.Config.SequenceNumber;
                                    detailRow.ModifyID = _context.Config.SequenceNumber;
                                    order.Order_Details.AddOrder_DetailsRow(detailRow);
                                }
                            }
                        }
                        // this error occours in case of invalid data types
                        catch (Exception e)
                        {

                            tmpTransactionResult = new SdataTransactionResult();
                            tmpTransactionResult.HttpMethod = "POST";
                            tmpTransactionResult.ResourceKind = _resourceKind;
                            tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                            tmpTransactionResult.HttpMessage = e.Message;
                            return tmpTransactionResult;

                        }

                    }

                }

                using (OleDbConnection connection = new OleDbConnection(_context.Config.ConnectionString))
                {
                    OleDbTransaction transaction = null;
                    try
                    {
                        connection.Open();
                        transaction = connection.BeginTransaction();

                        tableAdapter.Connection = connection;
                        detailsTableAdapter.Connection = connection;

                        tableAdapter.SetTransaction(transaction);
                        detailsTableAdapter.SetTransaction(transaction);

                        foreach (DataSets.Order.Order_DetailsRow detailsRow in rowsToDelete)
                        {
                            detailsTableAdapter.Delete(detailsRow.OrderID,
                                detailsRow.ProductID,
                                detailsRow.UnitPrice, detailsRow.Quantity,
                                detailsRow.Discount, detailsRow.CreateID, detailsRow.CreateUser, detailsRow.ModifyID, detailsRow.ModifyUser);
                        }

                        tableAdapter.Update(order.Orders);
                        detailsTableAdapter.Update(order.Order_Details);

                        transaction.Commit();

                        tmpTransactionResult = new SdataTransactionResult();
                        tmpTransactionResult.HttpMethod = "PUT";
                        tmpTransactionResult.ResourceKind = _resourceKind;
                        tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.OK;
                        tmpTransactionResult.LocalId = payload.LocalID;
                        return tmpTransactionResult;

                    }
                    catch (Exception transactionException)
                    {
                        if (transaction != null)
                            transaction.Rollback();
                        throw;
                    }

                }
            }
            catch (Exception e)
            {
                tmpTransactionResult = new SdataTransactionResult();
                tmpTransactionResult.HttpMethod = "PUT";
                tmpTransactionResult.ResourceKind = _resourceKind;
                tmpTransactionResult.HttpStatus = System.Net.HttpStatusCode.BadRequest;
                tmpTransactionResult.HttpMessage = e.ToString();
                return tmpTransactionResult;
            }

            #endregion
        }
All Usage Examples Of Sage.Integration.Northwind.Adapter.Data.SalesOrders.DataSets.OrderTableAdapters.OrdersTableAdapter::Update