public EntitiesContext()
 {
     Namespaces = new NamespaceRepository();
     Types      = new TypeRepository();
     Classes    = new ClassRepository();
     Enums      = new EnumRepository();
 }
예제 #2
0
        public EnumValue GetAttrEnum(EnumAttribute attr)
        {
            //OutputLog("GetAttrEnum");
            if (attr.Value != null)
            {
                using (var enumRepo = new EnumRepository(DataContext))
                    return(enumRepo.GetValue((Guid)attr.Value));

                /*var item = DataContext.ObjectDefs.OfType<Enum_Item>().FirstOrDefault(i => i.Id == attr.Value);)
                 *
                 * if (item != null)
                 *  return new EnumValue
                 *             {
                 *                 Id = item.Id,
                 *                 Code = item.Name,
                 *                 Value = item.Full_Name
                 *             };*/
            }
            return(null);
        }
예제 #3
0
        public ActionResult Index(int?page, string vl, string prm = null)
        {
            EnumRepository repository = new EnumRepository();

            try
            {
                Search search = new Search();

                search = SetValue(page, vl, prm);

                int pageSize   = 15;
                int pageNumber = (page ?? 1);

                EnumVM viewModel = new EnumVM();
                viewModel.Search = search;

                viewModel.Search.pageSize   = pageSize;
                viewModel.Search.pageNumber = pageNumber;

                viewModel.REnumCategoryList = repository.SW_GetEnumCategories(viewModel.Search);

                viewModel.ListCount = repository.SW_GetEnumCategoriesCount(viewModel.Search);
                int[] pc = new int[viewModel.ListCount];

                viewModel.Paging = pc.ToPagedList(pageNumber, pageSize);



                return(Request.IsAjaxRequest()
              ? (ActionResult)PartialView("PartialIndex", viewModel)
              : View(viewModel));
            }
            catch (Exception ex)
            {
                return(View("Error", new HandleErrorInfo(ex, "Error", "Error")));
            }
        }
예제 #4
0
 public static List <EnumDataInfo> GetEnumData(Type enumType)
 {
     return(EnumRepository.GetEnumDataInfo(enumType));
 }
예제 #5
0
        public override IQueryable <Document> Build(DocDef docDef, ObjectContext context, Guid userId)
        {
            var em = (cissaEntities)context;

            var source = BuildSource(docDef, context, userId);

            if (docDef.Attributes == null)
            {
                var defRepo = new DocDefRepository(userId);

                docDef = defRepo.DocDefById(docDef.Id);
            }

            var attr = docDef.Attributes.First(a => String.Compare(a.Name, AttributeName, true) == 0);

            if (Conditions.Count == 0)
            {
                if (attr.Type.Id == (short)CissaDataType.Text)
                {
                    var text = Value != null?Value.ToString() : "";

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Text_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == text && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Text_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != text && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.Contains:
                        return(source.Intersect(
                                   em.Text_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value.Contains(text) && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNull:
                        return(source.Intersect(
                                   em.Text_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == null && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Text attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Int)
                {
                    var val = Value != null?Convert.ToInt32(Value) : 0;

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatEqual:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value >= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatThen:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value > val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessEqual:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value <= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessThen:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value < val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Int_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Int attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Float)
                {
                    var val = Value != null?Convert.ToDouble(Value) : 0;

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatEqual:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value >= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatThen:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value > val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessEqual:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value <= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessThen:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value < val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Float_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Float attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Currency)
                {
                    var val = Value != null?Convert.ToDecimal(Value) : 0;

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatEqual:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value >= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatThen:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value > val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessEqual:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value <= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessThen:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value < val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Currency_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Currency attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.DateTime)
                {
                    var val = Value != null?Convert.ToDateTime(Value) : DateTime.MinValue;

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatEqual:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value >= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.GreatThen:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value > val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessEqual:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value <= val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.LessThen:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value < val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Date_Time_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for DateTime attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Bool)
                {
                    var val = Value != null?Convert.ToBoolean(Value) : false;

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Boolean_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Boolean_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != val && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Boolean_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Bool attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Enum)
                {
                    var val = Value != null?Value.ToString() : "";

                    Guid enumId;
                    if (!Guid.TryParse(val, out enumId))
                    {
                        var enumRepo = new EnumRepository();

                        enumId = enumRepo.GetEnumValueId(attr.EnumDefType.Id, val);
                    }

                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Enum_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == enumId && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Enum_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != enumId && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Enum_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Enum attribute");
                    }
                }
                if (attr.Type.Id == (short)CissaDataType.Doc)
                {
                    var val = Value != null?Value.ToString() : "";

                    var docId    = Guid.Empty;
                    var hasDocId = Guid.TryParse(val, out docId);

                    if (Condition == ConditionOperation.Is)
                    {
                        DocDef isDocDef = null;
                        var    defRepo  = new DocDefRepository();
                        isDocDef = hasDocId ? defRepo.DocDefById(docId) : defRepo.DocDefByName(val);

                        var descendants = defRepo.GetDocDefDescendant(isDocDef.Id);

                        var docs =
                            em.Documents.Where(
                                d =>
                                d.Def_Id != null && descendants.Contains(d.Def_Id ?? Guid.Empty) &&
                                (d.Deleted == null || d.Deleted == false)).Select(d => d.Id);

                        return(source.Intersect(
                                   em.Document_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && docs.Contains(a.Value) && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));
                    }

                    if (!hasDocId)
                    {
                        throw new ApplicationException("Invalid argument type for Document attribute");
                    }
                    switch (Condition)
                    {
                    case ConditionOperation.Equal:
                        return(source.Intersect(
                                   em.Document_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value == docId && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.NotEqual:
                        return(source.Intersect(
                                   em.Document_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Value != docId && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    case ConditionOperation.IsNotNull:
                        return(source.Intersect(
                                   em.Document_Attributes.Include("Documents")
                                   .Where(a => a.Def_Id == attr.Id && a.Expired >= MaxDate)
                                   .Select(a => a.Document)));

                    default:
                        throw new ApplicationException("Cannot apply operator for Document attribute");
                    }
                }
                throw new ApplicationException("Не могу сформировать запрос. Данный тип не поддерживается!");
            }

            if (attr.Type.Id != (short)CissaDataType.Doc && attr.Type.Id != (short)CissaDataType.DocList)
            {
                throw new ApplicationException("Ошибка в запросе! Атрибут не является документным.");
            }

            foreach (var condition in Conditions)
            {
                var sq = condition.Build(attr.DocDefType, context, userId);

                var sub = attr.Type.Id == (short)CissaDataType.DocList
                              ? em.DocumentList_Attributes.Include("Documents")
                          .Where(a => sq.Select(d => d.Id).Contains(a.Value) && a.Expired >= MaxDate)
                          .Select(a => a.Document)
                              : em.Document_Attributes.Include("Documents")
                          .Where(a => sq.Select(d => d.Id).Contains(a.Value) && a.Expired >= MaxDate)
                          .Select(a => a.Document);

                source = source.Intersect(sub);
            }
            return(source);
        }