示例#1
0
        public bool CheckCustomerReference(string customerOrderReference, string soldToCustomer, string connection, string environment)
        {
            EDICommunicationLayer communication = new EDICommunicationLayer(EdiConnectionType.SQL, connection);

            var query = string.Format("SELECT Count(*) FROM {0}.F47011 WHERE SYVR01 = {1} and SYAN8 = {2}", environment, customerOrderReference, soldToCustomer);

            return(!communication.IsValid(query));
        }
        public Dictionary <int, string> ValidateOrder <T>(T obj, List <EdiValidate> validations, int entityID)
            where T : class
        {
            Type type = (typeof(T));

            Dictionary <int, string> errormessages = new Dictionary <int, string>();

            foreach (var validation in validations.Where(x => x.TableName == type.Name))
            {
                var value = obj.GetType().GetProperty(validation.FieldName).GetValue(obj, null).ToString().Trim();

                if (validation.MaxLength.HasValue && value.Length > validation.MaxLength.Value)
                {
                    errormessages.Add(entityID, string.Format("Max length for field {0} exceeded", validation.FieldName));
                }

                if (!string.IsNullOrEmpty(validation.Value))
                {
                    switch ((EdiValidationType)validation.EdiValidationType)
                    {
                    case EdiValidationType.ConstantValue:
                        if (validation.Value != value)
                        {
                            errormessages.Add(entityID, string.Format("Value for field {0} should be {1}", validation.FieldName, validation.Value));
                        }
                        break;

                    case EdiValidationType.Query:
                        string connection = validation.Connection;

                        if (ConfigurationManager.ConnectionStrings[validation.Connection] != null)
                        {
                            connection = ConfigurationManager.ConnectionStrings[validation.Connection].ConnectionString;
                        }

                        EDICommunicationLayer communication = new EDICommunicationLayer((EdiConnectionType)validation.EdiConnectionType, connection);
                        if (communication.IsValid(string.Format(validation.Value, value)))
                        {
                            errormessages.Add(entityID, string.Format("Value for field {0} not valid query returned false", validation.FieldName, validation.Value));
                        }
                        break;

                    case EdiValidationType.Formula:
                        //var calculateTotal = DynamicExpression.ParseLambda<T, string>("SubTotal*@0+Shipping", validation.Value).Compile();
                        if (!f(validation.Value, value))
                        {
                            errormessages.Add(entityID, string.Format("Value for field {0} not valid formula returned false", validation.FieldName, validation.Value));
                        }
                        break;

                    default:
                        break;
                    }
                }
            }

            return(errormessages);
        }