예제 #1
0
        public BizText CreateText(Text text, DocDef def)
        {
            var result = new BizText();

            InitControl(result, text);
            return(result);
        }
예제 #2
0
        public BizTableForm CreateTableForm(Table_Form form, DocDef def)
        {
            var result = new BizTableForm
            {
                DocumentDefId      = form.Document_Id,
                FormId             = form.Form_Id,
                FilterFormId       = form.Filter_Form_Id,
                Children           = new List <BizControl>(),
                AddNewPermissionId = form.Add_New_Permission_Id,
                OpenPermissionId   = form.Open_Permission_Id,
                CanAddNew          = form.Can_Add_New ?? false,
                CanEdit            = form.Can_Edit ?? false,
                CanDelete          = form.Can_Delete ?? false,
                PageSize           = form.Rows ?? 10
            };

            if (result.DocumentDefId != null)
            {
                def = _docDefRepo.DocDefById((Guid)result.DocumentDefId);
            }

            AddChildren(result, form, def);
            InitControl(result, form);

            return(result);
        }
예제 #3
0
        public BizControl CreateImage(Image image, DocDef def)
        {
            if (image.Attribute_Id == null && image.Image_Data != null)
            {
                var staticImage = new BizImage
                {
                    ImageBytes = image.Image_Data,
                    Height     = 0,
                    Width      = 0
                };
                InitControl(staticImage, image);

                return(staticImage);
            }

            if (image.Attribute_Id == null)
            {
                return(null);
            }

            var docImage = new BizDataImage
            {
                Value          = image.Image_Data,
                AttributeDefId = (Guid)image.Attribute_Id,
                Height         = 0,
                Width          = 0
            };

            InitControl(docImage, image);

            return(docImage);
        }
예제 #4
0
        public bool IsSame(DocDef docDef, Guid attrId)
        {
            var single = Def as QuerySingleAttributeDef;

            return(single != null && single.Attribute != null &&
                   single.Attribute.AttributeId == attrId &&
                   new QuerySourceDefHelper(single.Attribute.Source).IsSame(docDef));
        }
예제 #5
0
 public SqlQueryConditionOperationBuilder(SqlQueryConditionBuilder parent, ExpressionOperation operation,
                                          DocDef docDef, AttrDef attrDef)
 {
     Parent    = parent;
     Operation = operation;
     DocDef    = docDef;
     AttrDef   = attrDef;
 }
예제 #6
0
        public bool IsSame(DocDef docDef, string attrName)
        {
            var single = Def as QuerySingleAttributeDef;

            return(single != null && single.Attribute != null &&
                   String.CompareOrdinal(single.Attribute.AttributeName, attrName) == 0 &&
                   new QuerySourceDefHelper(single.Attribute.Source).IsSame(docDef));
        }
예제 #7
0
        private /*static*/ List <EnumValue> GetEnumDocumentValues(DocDef detailDocDef, params string[] attrNames)
        {
            var list = new List <EnumValue>();

            if (detailDocDef == null)
            {
                return(list);
            }
            //var defRepo = new DocDefRepository(context);
            var     docDef        = _docDefRepo.DocDefById(detailDocDef.Id);
            AttrDef detailAttrDef = null;

            foreach (var attrName in attrNames)
            {
                detailAttrDef =
                    docDef.Attributes.FirstOrDefault(
                        ad => String.Equals(ad.Name, attrName, StringComparison.OrdinalIgnoreCase));

                if (detailAttrDef != null)
                {
                    break;
                }
            }
            if (detailAttrDef == null)
            {
                detailAttrDef = docDef.Attributes.FirstOrDefault(ad => ad.Type.Id == (int)CissaDataType.Text);
            }

            if (detailAttrDef == null)
            {
                return(list);
            }
            var sqb = _sqlQueryBuilderFactory.Create();

            //using (var query = userId != null ? new SqlQuery(context, docDef, (Guid)userId) : new SqlQuery(context, docDef))
            using (var query = sqb.Build(docDef.Id, null, null))
            {
                query.AddAttribute("&Id");
                query.AddAttribute(detailAttrDef.Id);
                query.AddOrderAttribute(detailAttrDef.Id);
                using (var reader = _sqlQueryReaderFactory.Create(query)) //new SqlQueryReader(context, query))
                {
                    while (reader.Read())
                    {
                        var detail = !reader.IsDbNull(1) ? reader.GetString(1) : String.Empty;

                        list.Add(new EnumValue
                        {
                            Id           = reader.GetGuid(0),
                            Value        = detail,
                            DefaultValue = detail
                        });
                    }
                }
            }

            return(list);
        }
예제 #8
0
        public BizComboBox CreateComboBox(Combo_Box combo, DocDef def)
        {
            var result = new BizComboBox();

            AddChildren(result, combo, def);
            InitComboBox(result, combo, def);

            return(result);
        }
예제 #9
0
        public bool IsSame(DocDef docDef, AttrDef attrDef)
        {
            var single = Def as QuerySingleAttributeDef;

            return(single != null && single.Attribute != null &&
                   (single.Attribute.AttributeId == attrDef.Id ||
                    String.CompareOrdinal(single.Attribute.AttributeName, attrDef.Name) == 0) &&
                   new QuerySourceDefHelper(single.Attribute.Source).IsSame(docDef));
        }
예제 #10
0
        private void FillDocDefAttributes(DocDef def, DocDef ancestorDef)
        {
            foreach (var attr in ancestorDef.Attributes)
            {
                var attrDef = new AttrDef(attr);

                def.Attributes.Add(attrDef);
                attrDef.Permissions = _permissionRepository.GetObjectDefPermissions(attrDef.Id);
            }
        }
        public List <EnumValue> GetEnumDocumentValues(BizComboBox combo, DocDef detailDocDef)
        {
            var result = new List <EnumValue>();

            foreach (var pair in _repositories.Where(pair => pair.Key.DataType.HasFlag(DataContextType.Document)))
            {
                result.AddRange(pair.Value.GetEnumDocumentValues(combo, detailDocDef));
            }
            return(result);
        }
예제 #12
0
        public SqlQueryDocSource(IAppServiceProvider provider, /*IDataContext dataContext, */ DocDef docDef, string alias)
            : base(alias)
        {
            Source   = docDef;
            Provider = provider;
            // DataContext = dataContext;

            _docDefRepo = Provider.Get <IDocDefRepository>();
            _mapper     = Provider.Get <IDocumentTableMapRepository>();
            _userRepo   = Provider.Get <IUserRepository>();
        }
예제 #13
0
        /// <summary>
        /// Возвращает предков для типа документа
        /// </summary>
        /// <param name="docDef">Тип документа</param>
        /// <returns>Список идентификаторов предков</returns>
        public IEnumerable <Guid> GetAncestors(DocDef docDef)
        {
            var dd = docDef;

            while (dd != null && dd.AncestorId != null)
            {
                yield return((Guid)dd.AncestorId);

                dd = Find((Guid)dd.AncestorId);
            }
        }
예제 #14
0
        public BizTabControl CreateTabControl(Tab_Control control, DocDef def)
        {
            var result = new BizTabControl
            {
                Children = new List <BizControl>()
            };

            AddChildren(result, control, def);
            InitControl(result, control);
            return(result);
        }
예제 #15
0
        public BizDocumentListForm CreateDocumentListForm(DocumentList_Form docListForm, DocDef def)
        {
            AttrDef attrDef = null;

            if (def != null)
            {
                if (docListForm.Attribute_Id != null)
                {
                    attrDef = def.Attributes.FirstOrDefault(a => a.Id == docListForm.Attribute_Id);
                }
                else
                if (!String.IsNullOrEmpty(docListForm.Attribute_Name))
                {
                    attrDef =
                        def.Attributes.FirstOrDefault(
                            a => String.Equals(a.Name, docListForm.Attribute_Name ?? String.Empty, StringComparison.OrdinalIgnoreCase));
                }
            }

            var result = new BizDocumentListForm
            {
                AttributeDefId     = attrDef != null ? attrDef.Id : docListForm.Attribute_Id,
                AttributeName      = attrDef != null ? attrDef.Name : docListForm.Attribute_Name ?? String.Empty,
                FormId             = docListForm.Form_Id,
                FormAttributeDefId = docListForm.Form_Attribute_Id
            };

            DocDef nestDef = null;

            if (attrDef != null && attrDef.DocDefType != null)
            {
                nestDef = _docDefRepo.DocDefById(attrDef.DocDefType.Id);
            }
            if (attrDef == null && result.FormId != null && result.FormAttributeDefId != null)
            {
                var form = DataContext.GetEntityDataContext().Entities.Object_Defs.OfType <Table_Form>().FirstOrDefault(f => f.Id == result.FormId);

                if (form != null && form.Document_Id != null)
                {
                    var docDefId = (Guid)form.Document_Id;

                    nestDef = _docDefRepo.DocDefById(docDefId);
                }
            }

            if (nestDef != null)
            {
                AddChildren(result, docListForm, nestDef);
            }
            InitControl(result, docListForm);

            return(result);
        }
예제 #16
0
        private static void BuildJoin(SqlQuery query, QueryJoinDef join, DocDef docDef, IDataContext dataContext)
        {
            var source =
                query.Sources.First(
                    s => String.Equals(s.AliasName, join.Source.Alias, StringComparison.OrdinalIgnoreCase));
            var queryJoin = new SqlQueryJoin(source, join.Operation);

            foreach (var condition in join.Conditions)
            {
                BuildJoinCondition(query, queryJoin, condition, docDef, null, dataContext);
            }
            query.SourceJoins.Add(queryJoin);
        }
예제 #17
0
        public BizPanel CreatePanel(Panel panel, DocDef def)
        {
            var result = new BizPanel
            {
                LayoutId = panel.Layout_Id ?? (short)LayoutType.Default,
                ReadOnly = panel.Read_Only ?? false,
                //IsHorizontal = panel.Is_Horizontal ?? false,
                Children = new List <BizControl>()
            };

            AddChildren(result, panel, def);
            InitControl(result, panel);
            return(result);
        }
예제 #18
0
        public BizGrid CreateGrid(Grid grid, DocDef def)
        {
            var result = new BizGrid
            {
                DocumentDefId = grid.Document_Id ?? Guid.Empty,
                IsDetail      = grid.Is_Detail ?? true,
                Children      = new List <BizControl>()
            };

            AddChildren(result, grid, def);
            InitControl(result, grid);

            return(result);
        }
예제 #19
0
        private void FillDocDefAncestorAttributes(DocDef def, Guid?ancestorId)
        {
            if (ancestorId != null)
            {
                var ancestor = DocDefById((Guid)ancestorId);
                /*context.ObjectDefs.OfType<Document_Def>().FirstOrDefault(dd => dd.Id == (Guid) ancestorId);*/

                if (ancestor != null)
                {
                    //FillDocDefAncestorAttributes(def, ancestor.AncestorId);
                    FillDocDefAttributes(def, ancestor);
                }
            }
        }
예제 #20
0
        public BizButton CreateButton(Button button, DocDef def)
        {
            var result = new BizButton
            {
                ActionId     = button.Action_Id ?? Guid.Empty,
                ProcessId    = button.Process_Id,
                UserActionId = button.User_Action_Id,
                ActionType   = (BizButtonActionType?)button.Action_Type ?? BizButtonActionType.Form,
                ButtonType   = (BizButtonType?)button.Button_Type ?? BizButtonType.Button
            };

            InitControl(result, button);

            return(result);
        }
예제 #21
0
        public static ReportDef Create(DocDef docDef)
        {
            if (docDef == null)
            {
                throw new ApplicationException("Не могу создать отчет! Класс документа не указан!");
            }

            var sourceDefId = Guid.NewGuid();
            var sourceDef   = new ReportSourceDef {
                Id = sourceDefId, DocDef = docDef, Caption = docDef.Caption, Attributes = new List <ReportSourceSystemAttributeDef>()
            };

            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Created,
                Caption = "Дата создания документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Modified,
                Caption = "Дата изменения документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.State,
                Caption = "Статус документа"
            });
            sourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.StateDate,
                Caption = "Дата установки статуса документа"
            });

            return(new ReportDef
            {
                Caption = docDef.Caption ?? docDef.Name ?? "Новый отчет",
                Columns = new List <ReportColumnDef>(),
                Conditions = new List <ReportConditionItemDef>(),
                Joins = new List <ReportSourceJoinDef>(),
                Sources = new List <ReportSourceDef>(new[] { sourceDef }),
                SourceId = sourceDefId
            });
        }
예제 #22
0
        private void InitComboBox(BizComboBox control, Combo_Box controlData, DocDef def)
        {
            AttrDef attrDef = null;

            if (def != null)
            {
                if (controlData.Attribute_Id != null)
                {
                    attrDef = def.Attributes.FirstOrDefault(a => a.Id == controlData.Attribute_Id);
                }
                if (attrDef == null && controlData.Attribute_Name != null)
                {
                    attrDef =
                        def.Attributes.FirstOrDefault(a => String.Equals(a.Name, controlData.Attribute_Name, StringComparison.OrdinalIgnoreCase));
                }
            }
            control.Rows    = controlData.Rows ?? 0;
            control.IsRadio = controlData.Is_Radio ?? false;
            if (attrDef != null)
            {
                control.AttributeDefId = attrDef.Id;
                control.AttributeName  = attrDef.Name;
            }
            else
            {
                var         attrName = controlData.Attribute_Name ?? String.Empty;
                SystemIdent attrIdent;
                if (SystemIdentConverter.TryConvert(attrName, out attrIdent))
                {
                    control.Ident         = attrIdent;
                    control.AttributeName = attrName;
                    //InitComboBox(control, attrIdent);
                }
            }
            control.DetailAttributeId   = controlData.Detail_Attribute_Id;
            control.DetailAttributeName = controlData.Detail_Attribute_Name;

            /*if (attrDef != null)
             * {
             *  //if (!controlData.Attribute_DefsReference.IsLoaded) controlData.Attribute_DefsReference.Load();
             *
             *  InitComboBox(control, attrDef /*controlData.Attribute_Defs#1#);
             * } */

            InitControl(control, controlData);
            // AddQueryItems(control, controlData); // Вызывает ошибку дублирования QueryItems
        }
예제 #23
0
        private static string Serialize(DocDef docDef)
        {
            var serializer = new XmlSerializer(typeof(DocDef));
            var stream     = new MemoryStream();

            try
            {
                serializer.Serialize(stream, docDef);
                stream.Position = 0;
                var reader = new StreamReader(stream);
                return(reader.ReadToEnd());
            }
            finally
            {
                stream.Close();
                stream.Dispose();
            }
        }
예제 #24
0
        private void InitAttrDocDefTypes(DocDef def)
        {
            foreach (var attr in def.Attributes)
            {
                if (attr.DocDefType != null && attr.DocDefType.Id != Guid.Empty)
                {
                    var attrDocDef = Find(attr.DocDefType.Id);

                    if (attrDocDef != null)
                    {
                        attr.DocDefType.Name       = attrDocDef.Name;
                        attr.DocDefType.Caption    = attrDocDef.Caption;
                        attr.DocDefType.AncestorId = attrDocDef.AncestorId;
                        attr.DocDefType.IsInline   = attrDocDef.IsInline;
                        attr.DocDefType.IsPublic   = attrDocDef.IsPublic;
                    }
                }
            }
        }
예제 #25
0
        public BizDetailForm CreateDetailForm(Form form, DocDef def)
        {
            var result = new BizDetailForm
            {
                DocumentDefId = form.Document_Id,
                LayoutId      = form.Layout_Id ?? (short)LayoutType.Detail,
                Children      = new List <BizControl>(),
                CanEdit       = !(form.Ban_Edit ?? false) & !(form.Read_Only ?? false),
                CanDelete     = form.Can_Delete ?? false
            };

            if (result.DocumentDefId != null)
            {
                def = _docDefRepo.DocDefById((Guid)result.DocumentDefId);
            }

            AddChildren(result, form, def);
            InitControl(result, form);

            return(result);
        }
예제 #26
0
        private void FillDocDefAttributes(DocDef def, Guid parentId)
        {
            var edc = DataContext.GetEntityDataContext();

            foreach (var attr in edc.Entities.Object_Defs.OfType <Attribute_Def>()
                     .Where(a => a.Parent_Id == parentId && (a.Deleted == null || a.Deleted == false)))
            {
                var attrDef = CreateAttrDef(attr);
                if (attrDef == null)
                {
                    continue;
                }

                def.Attributes.Add(attrDef);
                attrDef.Permissions = _permissionRepository.GetObjectDefPermissions(attrDef.Id);
            }
            foreach (var folder in edc.Entities.Object_Defs.OfType <Folder_Def>()
                     .Where(f => f.Parent_Id == parentId && (f.Deleted == null || f.Deleted == false)))
            {
                FillDocDefAttributes(def, folder.Id);
            }
        }
예제 #27
0
        public BizDocumentControl CreateDocumentControl(DocumentControl docControl, DocDef def)
        {
//            if (!docControl.Attribute_DefsReference.IsLoaded) docControl.Attribute_DefsReference.Load();
//            if (docControl.Attribute_Defs == null) return null;

            AttrDef attrDef = null;

            if (def != null)
            {
                if (docControl.Attribute_Id != null)
                {
                    attrDef = def.Attributes.FirstOrDefault(a => a.Id == docControl.Attribute_Id);
                }
                else
                if (!String.IsNullOrEmpty(docControl.Attribute_Name))
                {
                    attrDef =
                        def.Attributes.FirstOrDefault(
                            a => String.Equals(a.Name, docControl.Attribute_Name ?? String.Empty, StringComparison.OrdinalIgnoreCase));
                }
            }

            var result = new BizDocumentControl
            {
                AttributeDefId = attrDef != null ? attrDef.Id : (Guid?)null,                   //docControl.Attribute_Defs.Id,
                AttributeName  = attrDef != null ? attrDef.Name : String.Empty,                // AttributeName = docControl.Attribute_Name,
                FormId         = docControl.Form_Id
            };

            if (attrDef != null && attrDef.DocDefType != null)
            {
                var nestDef = _docDefRepo.DocDefById(attrDef.DocDefType.Id);

                AddChildren(result, docControl, nestDef);
            }
            InitControl(result, docControl);

            return(result);
        }
예제 #28
0
        public static ReportSourceJoinDef JoinDocDefSource(this ReportDef def, Guid masterSourceId, DocDef docDef,
                                                           Guid attrDefId)
        {
            Check(def);
            var masterSourceDef = GetSourceDef(def, masterSourceId);
            var docDefCount     = def.Sources.Count(s => s.DocDef.Id == docDef.Id);

            var jointSourceId  = Guid.NewGuid();
            var jointSourceDef = new ReportSourceDef
            {
                Id         = jointSourceId,
                DocDef     = docDef,
                Caption    = docDef.Caption + (docDefCount > 0 ? (docDefCount + 1).ToString() : String.Empty),
                Attributes = new List <ReportSourceSystemAttributeDef>()
            };

            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Created,
                Caption = "Дата создания документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.Modified,
                Caption = "Дата изменения документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.State,
                Caption = "Статус документа"
            });
            jointSourceDef.Attributes.Add(new ReportSourceSystemAttributeDef
            {
                Id      = Guid.NewGuid(),
                Ident   = SystemIdent.StateDate,
                Caption = "Дата установки статуса документа"
            });

            def.Sources.Add(jointSourceDef);

            var jointAttrId  = Guid.NewGuid();
            var attr         = masterSourceDef.DocDef.Attributes.FirstOrDefault(a => a.Id == attrDefId);
            var jointAttrDef = attr != null
                ? new ReportAttributeDef {
                Id = jointAttrId, SourceId = masterSourceId, AttributeId = attrDefId
            }
                : new ReportAttributeDef {
                Id = jointAttrId, SourceId = jointSourceId, AttributeId = attrDefId
            };

            var joinDef =
                new ReportSourceJoinDef
            {
                Id            = Guid.NewGuid(),
                JoinAttribute = jointAttrDef,
                JoinType      = SqlSourceJoinType.Inner,
                MasterId      = masterSourceId,
                SourceId      = jointSourceId
            };

            def.Joins.Add(joinDef);

            return(joinDef);
        }
예제 #29
0
 public IList <DocDefRelation> GetDocDefRelations(DocDef docDef)
 {
     return(new List <DocDefRelation>(_repositories.SelectMany(repo => repo.GetDocDefRelations(docDef))));
 }
예제 #30
0
 public SqlQueryJoinBuilder LeftOuterJoin(DocDef docDef, string attrDefName)
 {
     return(new SqlQueryJoinBuilder(this, Query,
                                    Query.JoinSource(Source, docDef, SqlSourceJoinType.LeftOuter,
                                                     attrDefName)));
 }