Exemple #1
0
        /// <summary>
        /// Retrieve EdgeObject according to delivery object ideintity fields to get GK
        /// if found, check if additional fields were changed and set Status to accordingly
        /// </summary>
        /// <param name="deliveryObject"></param>
        /// <param name="selectEdgeObjectCommand"></param>
        private void SetDeliveryObjectByEdgeObject(DeliveryEdgeObject deliveryObject, SqlCommand selectEdgeObjectCommand)
        {
            // set identity fields parameters values to retrieve relevant edge object
            foreach (var identity in deliveryObject.FieldList.Where(x => x.IsIdentity))
            {
                selectEdgeObjectCommand.Parameters[String.Format("@{0}", identity.FieldName)].Value = identity.Value;
            }

            using (var reader = selectEdgeObjectCommand.ExecuteReader())
            {
                while (reader.Read())
                {
                    // if found set GK
                    deliveryObject.GK             = reader["GK"].ToString();
                    deliveryObject.IdentityStatus = IdentityStatus.Unchanged;

                    // check if additional fields where changed, if yes --> set status to Modified
                    foreach (var field in deliveryObject.FieldList.Where(x => !x.IsIdentity))
                    {
                        if (field.Value != reader[field.FieldName].ToString())
                        {
                            deliveryObject.IdentityStatus = IdentityStatus.Modified;
                            break;
                        }
                    }
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Load objects by type from Delivery DB (by identity fields)
        /// </summary>
        /// <param name="edgeType"></param>
        /// <returns></returns>
        private IEnumerable <DeliveryEdgeObject> GetDeliveryObjects(EdgeType edgeType)
        {
            var columnsStr = edgeType.Fields.Aggregate(String.Empty, (current, field) => String.Format("{0}{1},", current, field.ColumnNameGK));

            if (columnsStr.Length == 0)
            {
                return(null);
            }

            columnsStr = columnsStr.Remove(columnsStr.Length - 1, 1);

            var deliveryObjects = new List <DeliveryEdgeObject>();

            using (var command = new SqlCommand {
                Connection = _deliverySqlConnection
            })
            {
                command.CommandText = String.Format("SELECT TK, {0} FROM {1} WHERE TYPEID = @typeId",
                                                    columnsStr,
                                                    GetDeliveryTableName(edgeType.TableName));

                command.Parameters.Add(new SqlParameter("@typeId", edgeType.TypeID));

                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        var deliveryObj = new DeliveryEdgeObject {
                            TK = reader["TK"].ToString()
                        };
                        foreach (var field in edgeType.Fields)
                        {
                            deliveryObj.FieldList.Add(new FieldValue
                            {
                                FieldName  = field.ColumnNameGK,
                                IsIdentity = field.IsIdentity,
                                Value      = reader[field.ColumnNameGK].ToString()
                            });
                        }
                        deliveryObjects.Add(deliveryObj);
                    }
                }
            }
            return(deliveryObjects);
        }