예제 #1
0
        protected static bool DatabaseHasSuchObject(ISerialDataObject serialDataObject, IObjectSpace os)
        {
            var criteria = GroupOperator.And(
            (serialDataObject.Numerator != null) ? (CriteriaOperator)new BinaryOperator("Numerator", serialDataObject.Numerator) : (CriteriaOperator)new UnaryOperator(UnaryOperatorType.IsNull, "Numerator"),
                new BinaryOperator("ObjectCode", serialDataObject.ObjectCode),
                new BinaryOperator("NumeratorExpression", serialDataObject.NumeratorExpression)
                );

            var collection = os.GetObjects<ISerialDataObject>(criteria);
            return !(collection.Count == 0 || ((collection.Count == 1) && (collection[0] == serialDataObject)));
        }
예제 #2
0
 protected static String ParseExtension(ISerialDataObject serialDataObject, String extension)
 {
     return ObjectFormatter.Format(extension, serialDataObject, EmptyEntriesMode.RemoveDelimeterWhenEntryIsEmpty);
 }
예제 #3
0
        /// <summary>
        /// Обрабатывает генерацию нового регистрационного номера и кода документа в соответствии с нумератором
        /// </summary>
        public static void OnSaving(ISerialDataObject serialDataObject, IObjectSpace os)
        {
            if (os != null ? os.IsNewObject(serialDataObject) : false)
            {
                serialDataObject.RegDate = DateTime.Now;
                serialDataObject.Number = 0;

                GenerateSequence(serialDataObject, os);

                if (serialDataObject.Numerator == null)
                {
                    serialDataObject.Numerator = DBNumerator.GetNumerator(os, XafTypesInfo.Instance.FindTypeInfo(serialDataObject.GetType()), serialDataObject.Department);
                }

                if (String.IsNullOrEmpty(serialDataObject.RegCode))
                {
                    serialDataObject.RegCode = serialDataObject.Numerator != null ? ParseExtension(serialDataObject, serialDataObject.Numerator.ExpressionCodeGeneration) : serialDataObject.Number.ToString();
                }

                if (String.IsNullOrEmpty(serialDataObject.ObjectCode))
                {
                    serialDataObject.ObjectCode = serialDataObject.RegCode;
                }
            }
        }
예제 #4
0
 public static string Get_ClassFullName(ISerialDataObject serialDataObject)
 {
     return serialDataObject.GetType().FullName;
 }
예제 #5
0
        public static void GenerateSequence(ISerialDataObject instance, IObjectSpace space)
        {
            var typeToExistsMap = new Dictionary<string, bool>();
            if (sequenceGenerator == null)
            {
                sequenceGenerator = new SequenceGenerator(typeToExistsMap);
            }

            instance.Number = (int)sequenceGenerator.GetNextSequence(XafTypesInfo.Instance.FindTypeInfo(instance.GetType()));

            if (!(space is XPNestedObjectSpace))
            {
                space.Committed += new EventHandler((s, e) => space_Committed(s, e, space));
            }
        }
예제 #6
0
        public static void AfterConstruction(ISerialDataObject serialDataObject, IObjectSpace os)
        {
            serialDataObject.ReplicationId = Guid.NewGuid();
            serialDataObject.ObjectCode = String.Empty;
            serialDataObject.RegCode = String.Empty;
            serialDataObject.Number = 0;

            var user = os.GetObjectByKey<SecuritySystemUser>(SecuritySystem.CurrentUserId);
            if (user != null)
            {
                var employee = user as Employee;
                if (employee != null)
                {
                    serialDataObject.User = employee;
                    serialDataObject.Department = employee.Department;
                }
            }
        }
예제 #7
0
 public static void AfterChange_ObjectCode(ISerialDataObject serialDataObject)
 {
 }