Exemplo n.º 1
0
        private static void GetCurrentAndPrevStateIdByTimeTrackingBlock(TimeTrackingBlock block, out int curStateId, out int prevStateId)
        {
            curStateId  = -1;
            prevStateId = -1;

            StateMachineService stateMachine = block.GetService <StateMachineService>();

            if (stateMachine == null || stateMachine.StateMachine.States.Count == 0 || stateMachine.CurrentState == null)
            {
                return;
            }

            EventService eventService = block.GetService <EventService>();

            if (eventService != null)
            {
                // Detects that state is changed, find moFromStateName, toStateName
                MetaObject[] events = eventService.LoadEvents(TriggerContext.Current.TransactionId);
                StateMachineEventServiceArgs args = StateMachine.GetStateChangedEventArgs(events);
                if (args != null)
                {
                    curStateId  = StateMachineManager.GetState(TimeTrackingBlock.GetAssignedMetaClass(), args.CurrentState.Name).PrimaryKeyId.Value;
                    prevStateId = StateMachineManager.GetState(TimeTrackingBlock.GetAssignedMetaClass(), args.PrevState.Name).PrimaryKeyId.Value;
                }
            }
        }
Exemplo n.º 2
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (BlockId <= 0)
            {
                throw new ArgumentException("BlockId is wrong or not specified");
            }

            block = MetaObjectActivator.CreateInstance <TimeTrackingBlock>(TimeTrackingBlock.GetAssignedMetaClass(), BlockId);
//			block = new TimeTrackingBlock(BlockId);

            SecurityService ss = block.GetService <SecurityService>();

            if (ss == null || !ss.CheckUserRight(TimeTrackingManager.Right_RegFinances))
            {
                throw new AccessDeniedException();
            }

            btnApprove.Text = LocRM.GetString("tApprove");
            btnCancel.Text  = LocRM.GetString("tCancel");
            if (!Page.IsPostBack)
            {
                BindAccounts();
                dtcDate.SelectedDate = Mediachase.IBN.Business.User.GetLocalDate(DateTime.UtcNow).Date;
            }

            btnApprove.CustomImage = CHelper.GetAbsolutePath("/layouts/images/accept.gif");
            btnCancel.CustomImage  = CHelper.GetAbsolutePath("/layouts/images/cancel.gif");
        }
Exemplo n.º 3
0
        private static int GetFinalStateIdByTimeTrackingBlock(TimeTrackingBlock block)
        {
            StateMachineService stateMachine = block.GetService <StateMachineService>();

            if (stateMachine == null || stateMachine.StateMachine.States.Count == 0)
            {
                return(-1);
            }

            State finalState = stateMachine.StateMachine.States[stateMachine.StateMachine.States.Count - 1];

            MetaObject stateObject = StateMachineManager.GetState(TimeTrackingBlock.GetAssignedMetaClass(), finalState.Name);

            return(stateObject.PrimaryKeyId.Value);
        }
Exemplo n.º 4
0
        private void BindData()
        {
            if (BlockId > 0)
            {
                TimeTrackingBlock   ttb             = MetaObjectActivator.CreateInstance <TimeTrackingBlock>(TimeTrackingBlock.GetAssignedMetaClass(), BlockId);
                StateMachineService sms             = ttb.GetService <StateMachineService>();
                StateTransition[]   nextTransitions = sms.GetNextAvailableTransitions();
                StateTransition[]   prevTransitions = sms.GetPrevAvailableTransitions();

                ttbTitle.Text        = ttb.Title;
                TTBlockComment.Value = string.Empty;

                BindTransitions(nextTransitions, prevTransitions);
            }
        }
Exemplo n.º 5
0
        public bool IsEnable(object Sender, object Element)
        {
            if (Element is CommandParameters)
            {
                CommandParameters cp = (CommandParameters)Element;

                if (!cp.CommandArguments.ContainsKey("parentBlockId"))
                {
                    return(false);
                }

                TimeTrackingBlock   ttb         = MetaObjectActivator.CreateInstance <TimeTrackingBlock>(MetaDataWrapper.ResolveMetaClassByNameOrCardName("TimeTrackingBlock"), Convert.ToInt32(cp.CommandArguments["parentBlockId"].ToString(), CultureInfo.InvariantCulture));
                StateMachineService sms         = ttb.GetService <StateMachineService>();
                StateTransition[]   transitions = sms.GetNextAvailableTransitions(true);

                bool isInitialState = sms.StateMachine.GetStateIndex(sms.CurrentState.Name) == 0;

                return(transitions.Length > 0 && isInitialState);
            }

            return(false);
        }
Exemplo n.º 6
0
        public static bool CanUpdate(DateTime startDate, int projectId)
        {
            bool retval = false;

            if (Configuration.TimeTrackingModule)
            {
                startDate = GetWeekStart(startDate);

                // O.R. [2008-07-25]
                TimeTrackingBlockTypeInstance inst = null;
                using (SkipSecurityCheckScope scope = Mediachase.Ibn.Data.Services.Security.SkipSecurityCheck())
                {
                    inst = TimeTrackingManager.GetBlockTypeInstanceByProject(projectId);
                }
                if (inst != null)
                {
                    TimeTrackingBlock[] blocks = TimeTrackingBlock.List(
                        FilterElement.EqualElement("OwnerId", Security.CurrentUser.UserID),
                        FilterElement.EqualElement("BlockTypeInstanceId", inst.PrimaryKeyId.Value),
                        FilterElement.EqualElement("StartDate", startDate)
                        );
                    if (blocks.Length > 0)                      // Block exists
                    {
                        TimeTrackingBlock block = blocks[0];
                        SecurityService   ss    = block.GetService <SecurityService>();
                        retval = ss.CheckUserRight(TimeTrackingManager.Right_Write);
                    }
                    else                        // Block doesn't exist
                    {
                        SecurityService ss = inst.GetService <SecurityService>();
                        retval = ss.CheckUserRight(TimeTrackingManager.Right_AddMyTTBlock) || ss.CheckUserRight(TimeTrackingManager.Right_AddAnyTTBlock);
                    }
                }
            }

            return(retval);
        }