示例#1
0
        private void PrepareField(QueryReaderField field)
        {
            if (field.AttrDef != null)
            {
                if (field.AttrDef.Type.Id == (short)CissaDataType.Enum && field.AttrDef.EnumDefType != null)
                {
                    if (_enumRepo == null)
                    {
                        _enumRepo = Provider.Get <IEnumRepository>();
                    }

                    if (!_enumValues.ContainsKey(field.AttrDef.Id))
                    {
                        _enumValues.Add(field.AttrDef.Id,
                                        _enumRepo.GetEnumItems(field.AttrDef.EnumDefType.Id));
                    }
                }
                else if (field.AttrDef.Type.Id == (short)CissaDataType.Doc)
                {
                    if (_comboBoxEnumProvider == null)
                    {
                        _comboBoxEnumProvider = Provider.Get <IComboBoxEnumProvider>();
                    }

                    if (!_enumValues.ContainsKey(field.AttrDef.Id))
                    {
                        _enumValues.Add(field.AttrDef.Id,
                                        _comboBoxEnumProvider.GetEnumDocumentValues(field.AttrDef, "Name"));
                    }
                }
                else if (field.AttrDef.Type.Id == (short)CissaDataType.Organization)
                {
                    if (_comboBoxEnumProvider == null)
                    {
                        _comboBoxEnumProvider = Provider.Get <IComboBoxEnumProvider>();
                    }

                    if (!_enumValues.ContainsKey(field.AttrDef.Id))
                    {
                        _enumValues.Add(field.AttrDef.Id,
                                        _comboBoxEnumProvider.GetEnumOrganizationValues(field.AttrDef.OrgTypeId));
                    }
                }
                else if (field.AttrDef.Type.Id == (short)CissaDataType.User)
                {
                    if (_comboBoxEnumProvider == null)
                    {
                        _comboBoxEnumProvider = Provider.Get <IComboBoxEnumProvider>();
                    }

                    if (!_enumValues.ContainsKey(field.AttrDef.Id))
                    {
                        _enumValues.Add(field.AttrDef.Id,
                                        _comboBoxEnumProvider.GetEnumUserValues());
                    }
                }
            }
        }
        public IList <EnumValue> GetFormComboBoxValues(BizComboBox comboBox, AttrDef attrDef)
        {
            var list = new List <EnumValue>();

            if (attrDef == null)
            {
                switch (comboBox.Ident)
                {
                case SystemIdent.OrgId:
                case SystemIdent.OrgCode:
                case SystemIdent.OrgName:
                    return(GetEnumOrganizationValues(comboBox.DetailAttributeId));

                case SystemIdent.UserId:
                case SystemIdent.UserName:
                    return(GetEnumUserValues());
                }
                return(list);
            }

            if (attrDef.Type.Id == (short)CissaDataType.Doc && attrDef.DocDefType != null)
            {
                foreach (var pair in _repositories.Where(pair => pair.Key.DataType.HasFlag(DataContextType.Document)))
                {
                    list.AddRange(pair.Value.GetFormComboBoxValues(comboBox, attrDef));
                }
                return(list);
            }
            if (attrDef.Type.Id == (short)CissaDataType.Enum && attrDef.EnumDefType != null)
            {
                return(new List <EnumValue>(_enumRepo.GetEnumItems(attrDef.EnumDefType.Id)));
            }
            if (attrDef.Type.Id == (short)CissaDataType.Organization)
            {
                return(GetEnumOrganizationValues(attrDef.OrgTypeId));
            }
            if (attrDef.Type.Id == (short)CissaDataType.User)
            {
                return(GetEnumUserValues());
            }

            return(list);
        }
示例#3
0
        public IList <EnumValue> GetFormComboBoxValues(BizForm form, BizComboBox comboBox, AttrDef attrDef)
        {
            var list = new List <EnumValue>();

            if (attrDef == null)
            {
                switch (comboBox.Ident)
                {
                case SystemIdent.OrgId:
                case SystemIdent.OrgCode:
                case SystemIdent.OrgName:
                    return(GetEnumOrganizationValues(comboBox.DetailAttributeId));

                case SystemIdent.UserId:
                case SystemIdent.UserName:
                    return(GetEnumUserValues());
                }
                return(list);
            }

            if (attrDef.Type.Id == (short)CissaDataType.Doc && attrDef.DocDefType != null)
            {
                var detailDocDef = _docDefRepo.DocDefById(attrDef.DocDefType.Id);

                AttrDef detailAttrDef;
                if (comboBox.DetailAttributeId != null)
                {
                    detailAttrDef = detailDocDef.Attributes.FirstOrDefault(ad => ad.Id == comboBox.DetailAttributeId);
                }
                else
                {
                    detailAttrDef =
                        detailDocDef.Attributes.FirstOrDefault(
                            ad =>
                            String.Equals(ad.Name, comboBox.DetailAttributeName, StringComparison.OrdinalIgnoreCase))
                        ??
                        detailDocDef.Attributes.FirstOrDefault(ad => ad.Type.Id == (int)CissaDataType.Text);
                }
                if (detailAttrDef == null)
                {
                    return(list);
                }

                var sqlQueryBuilder = _sqlQueryBuilderFactory.Create();
                using (var query = sqlQueryBuilder.Build(comboBox, detailDocDef.Id))
                {
                    query.AddAttribute("&Id");
                    query.AddAttribute(detailAttrDef.Id);
                    query.AddOrderAttribute(detailAttrDef.Id);

                    if (form != null)
                    {
                        var helper = new FormHelper(Provider, form);
                        helper.SetQueryParams(query);
                    }
                    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
                            });
                        }
                    }
                }
            }
            else if (attrDef.Type.Id == (short)CissaDataType.Enum && attrDef.EnumDefType != null)
            {
                return(new List <EnumValue>(_enumRepo.GetEnumItems(attrDef.EnumDefType.Id)));
            }
            else if (attrDef.Type.Id == (short)CissaDataType.Organization)
            {
                return(GetEnumOrganizationValues(attrDef.OrgTypeId));
            }
            else if (attrDef.Type.Id == (short)CissaDataType.User)
            {
                return(GetEnumUserValues());
            }

            return(list);
        }
示例#4
0
 public List <EnumValue> GetEnumItems(Guid enumDefId)
 {
     return(new List <EnumValue>(_enumRepo.GetEnumItems(enumDefId)));
 }