public virtual ConditionalObjectAccessPermission FilterUnfitItems(object contextObject)
        {
            try {
                Type objectType = contextObject.GetType();
                //IObjectSpace objectSpace = ObjectSpace.FindObjectSpace(contextObject);
                IObjectSpace objectSpace = ObjectSpace.FindObjectSpaceByObject(contextObject);
                EvaluatorContextDescriptor descriptor = objectSpace != null?objectSpace.GetEvaluatorContextDescriptor(objectType) : new EvaluatorContextDescriptorDefault(objectType);

                ConditionalObjectAccessPermission result = new ConditionalObjectAccessPermission();
                foreach (ConditionalParticularAccessItem item in AccessItemList)
                {
                    bool itemFits = string.IsNullOrEmpty(item.Condition);
                    if (!itemFits && item.ObjectType == objectType)
                    {
                        LocalizedCriteriaWrapper wrapper = new LocalizedCriteriaWrapper(objectType, item.Condition);
                        wrapper.UpdateParametersValues(contextObject);
                        ExpressionEvaluator evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator);
                        itemFits = evaluator.Fit(contextObject);
                    }
                    if (itemFits)
                    {
                        result.AccessItemList.Add(item);
                    }
                }
                return(result);
            } catch (Exception ex) {
                throw new Exception(ex.ToString());
            }
        }
예제 #2
0
        public void UpdateTrwNomenclature()
        {
            if (Nomenclature == null || Order == null)
            {
                return;
            }
            TrwSaleNomenclature old = _TrwSaleNomenclature;

            if (old == null || old.Order != Order || old.Nomenclature != Nomenclature)
            {
                IObjectSpace os = ObjectSpace.FindObjectSpaceByObject(this);
                _TrwSaleNomenclature = os.GetObjects <TrwSaleNomenclature>(
                    new OperandProperty("Order") == Order &
                    new OperandProperty("Nomenclature") == Nomenclature,
                    true
                    ).FirstOrDefault();
                if (_TrwSaleNomenclature == null)
                {
                    _TrwSaleNomenclature              = os.CreateObject <TrwSaleNomenclature>();
                    _TrwSaleNomenclature.Order        = Order;
                    _TrwSaleNomenclature.Nomenclature = Nomenclature;
                }
                OnChanged("TrwSaleNomenclature", old, _TrwSaleNomenclature);
            }
        }
예제 #3
0
        public void UpdateTrwNomenclature()
        {
            if (Nomenclature == null || Order == null)
            {
                return;
            }
            TrwSaleNomenclature old = _TrwSaleNomenclature;

            if (old == null || old.Order != Order || old.Nomenclature != Nomenclature)
            {
                IObjectSpace os = ObjectSpace.FindObjectSpaceByObject(this);
                _TrwSaleNomenclature = os.GetObjects <TrwSaleNomenclature>(
                    new OperandProperty("Order") == Order &
                    new OperandProperty("Nomenclature") == Nomenclature, true).FirstOrDefault();
                if (_TrwSaleNomenclature == null)
                {
                    _TrwSaleNomenclature              = os.CreateObject <TrwSaleNomenclature>();
                    _TrwSaleNomenclature.Order        = Order;
                    _TrwSaleNomenclature.Nomenclature = Nomenclature;
                    TrwOrder trw_order = Order.Subject.TrwOrders.FirstOrDefault(x => x.Deal == this.DeliveryUnit.DealVersion.ContractDeal);
                    if (trw_order == null)
                    {
                        Order.Subject.Deals.Add(this.DeliveryUnit.DealVersion.ContractDeal);
                        trw_order = Order.Subject.TrwOrders.FirstOrDefault(x => x.Deal == this.DeliveryUnit.DealVersion.ContractDeal);
                    }
                    if (trw_order != null)
                    {
                        trw_order.TrwSaleNomenclatures.Add(_TrwSaleNomenclature);
                    }
                }
                OnChanged("TrwSaleNomenclature", old, _TrwSaleNomenclature);
            }
        }
예제 #4
0
 void UpdateDeal()
 {
     using (IObjectSpace os = ObjectSpace.FindObjectSpaceByObject(this).CreateNestedObjectSpace()) {
         TrwSubjectDealSale subj_deal = os.GetObject <TrwSubjectDealSale>(this);
         TrwSubjectDealLogic.RefreshDeal(os, subj_deal);
         os.CommitChanges();
     }
 }
 //
 private void TrwRefCashFlowUpdate()
 {
     if (Order == null || CostItem == null || !(PayType == fmPRPayType.PREPAYMENT || PayType == fmPRPayType.POSTPAYMENT))
     {
         return;
     }
     TrwRefCashFlow = TrwRefCashFlowLogic.AutoDetect(ObjectSpace.FindObjectSpaceByObject(this), false, Order, PayType, CostItem);
 }
예제 #6
0
 public override void DealUpdated()
 {
     using (IObjectSpace os = ObjectSpace.FindObjectSpaceByObject(this).CreateNestedObjectSpace()) {
         TrwSubjectDealSale subj_deal = os.GetObject <TrwSubjectDealSale>(this);
         subj_deal.CrmContractDeals.Clear();
         subj_deal.CrmContractDeals.Add(subj_deal.Deal);
         os.Delete(subj_deal.DealSaleOrders);
         TrwSubjectDealLogic.RefreshDeal(os, subj_deal);
         os.CommitChanges();
     }
 }
예제 #7
0
        public void Approve()
        {
            RuleSetValidationResult check_result = Validator.RuleSet.ValidateTarget(this, "Approve");

            if (check_result.State == ValidationState.Invalid)
            {
                throw new ValidationException(check_result);
            }
//            Validator.RuleSet.ValidateTarget(this, "Approve");
            State = TrwPartyState.CONFIRMED;
            ObjectSpace.FindObjectSpaceByObject(this).CommitChanges();
        }
예제 #8
0
        /// <summary>
        /// Gets the replication key member for object.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <returns>Replication key member</returns>
        public static IModelMember GetReplicationKeyMember(object source)
        {
            IModelMember result = null;

            if (source != null)
            {
                var obs = ObjectSpace.FindObjectSpaceByObject(source);
                if (obs != null)
                {
                    var ti = obs.TypesInfo.FindTypeInfo(source.GetType());
                    result = GetReplicationKeyMember(ti);
                }
                else
                {
                    var ti = XafDeltaModule.XafApp.Model.BOModel.GetClass(source.GetType()).TypeInfo;
                    result = GetReplicationKeyMember(ti);
                }
            }
            return(result);
        }
예제 #9
0
        /// <summary>
        /// Creates the log record.
        /// </summary>
        /// <param name="packageEventType">Type of the event.</param>
        /// <param name="comments">The comments.</param>
        public void CreateLogRecord(PackageEventType packageEventType, string comments)
        {
            if (IsInvalidated)
            {
                return;
            }
            var obs = ObjectSpace.FindObjectSpaceByObject(this);

            if (obs != null)
            {
                var nodeRecord = obs.CreateObject <PackageLogRecord>();
                nodeRecord.FileName         = FileName;
                nodeRecord.PackageEventType = packageEventType;
                nodeRecord.Comments         = comments;

                if (XafDeltaModule.Instance.UseTickets && TicketEventTypes.Contains(packageEventType))
                {
                    Ticket.CreateForLogRecord(obs, nodeRecord, this);
                }
            }
        }
예제 #10
0
        /// <summary>
        /// Loads the package.
        /// </summary>
        /// <param name="worker">The worker.</param>
        /// <param name="package">The package.</param>
        public bool LoadPackage(ActionWorker worker, Package package)
        {
            bool result;

            Interlocked.Increment(ref loadNesting);
            try
            {
                using (var applicationObjectSpace = XafDeltaModule.XafApp.CreateObjectSpace())
                {
                    var currentNodeId = ReplicationNode.GetCurrentNodeId(applicationObjectSpace);
                    result = LoadPackage(new LoadPackageContext(package, worker,
                                                                applicationObjectSpace, currentNodeId));
                    applicationObjectSpace.CommitChanges();
                }
                var packageObjectSpace = ObjectSpace.FindObjectSpaceByObject(package);
                packageObjectSpace.CommitChanges();
            }
            finally
            {
                Interlocked.Decrement(ref loadNesting);
            }
            return(result);
        }
예제 #11
0
 public void Transact(FmFinPlanSubjectDocFull doc)
 {
     FmFinPlanSubjectLogic.TransactPlan0(ObjectSpace.FindObjectSpaceByObject(this), this, doc);
 }
예제 #12
0
 public void Calculate()
 {
     TrwBudgetPeriodDocDealLogic.Calculate(this, ObjectSpace.FindObjectSpaceByObject(this));
 }
예제 #13
0
 public static IObjectSpace FindObjectSpaceByObject(Object obj)
 {
     return(ObjectSpace.FindObjectSpaceByObject(obj));
 }