Exemple #1
0
        protected override void BeforeUpdate(DataRow ddr)
        {
            atriumDB.ActivityBFRow dr = (atriumDB.ActivityBFRow)ddr;
            if (dr.ActivityRow != null)
            {
                myA.GetProcess().SetActive(dr.ActivityRow.ProcessRow);
            }

            AllowEdit = true;
            BeforeChange("BFDate", ddr);
            AllowEdit = false;
        }
Exemple #2
0
 public void Refresh()
 {
     myFM.GetProcess().PreRefresh();
     myFM.GetProcessContext().PreRefresh();
     myFM.GetActivity().PreRefresh();
     myFM.GetActivityBF().PreRefresh();
     myFM.GetActivityTime().PreRefresh();
     myFM.GetDisbursement().PreRefresh();
     myFM.GetActivity().DeepLoadByFileId(myFM.CurrentFile.FileId);
 }
Exemple #3
0
        /// <summary>
        /// Moves a process to another file
        /// </summary>
        /// <param name="pr">process to move</param>
        /// <param name="toFile">Target file</param>
        private void Move(atriumDB.ProcessRow pr, int toFileId, atriumDB.ActivityRow splitOn)
        {
            FileManager toFM = myA.AtMng.GetFile(toFileId);

            //need to check permissions on target file
            if (!toFM.GetProcess().CanAdd(toFM.CurrentFile))
            {
                throw new AtriumException(Properties.Resources.YouNeedAddProcessPermissionOnTheDestinationFile);
            }


            CheckMove(pr);

            //this needs to be here
            myA.GetActivity().LoadByProcessId(pr.ProcessId);

            //sort activities by thread
            atriumDB.ActivityRow[] ars   = (atriumDB.ActivityRow[])myA.DB.Activity.Select("processid=" + pr.ProcessId.ToString(), "ConversationIndex");
            atriumDB.ProcessRow    newPr = null;
            int  oldFileid = pr.FileId;
            bool moveProc  = false;

            if (splitOn != null && ars.Length > 1 && ars[0].ActivityId != splitOn.ActivityId)
            {
                //create new process for split thread
                newPr = (atriumDB.ProcessRow)Add(myA.CurrentFile);

                newPr.Active = pr.Active;
                //newPr.CurrentStep = pr.CurrentStep;
                newPr.NameE    = pr.NameE;
                newPr.NameF    = pr.NameF;
                newPr.SeriesId = pr.SeriesId;
                //newPr.Thread = pr.Thread;
            }
            else
            {
                pr.FileId = toFileId;

                pr.Thread = pr.ProcessId.ToString();
                moveProc  = true;
                foreach (atriumDB.ProcessContextRow pcr in pr.GetProcessContextRows())
                {
                    pcr.FileId = toFileId;
                }
            }

            //move all activties on process
            foreach (atriumDB.ActivityRow par in pr.GetActivityRows())
            {
                if (splitOn == null || par.ConversationIndex.CompareTo(splitOn.ConversationIndex) >= 0)
                {
                    myA.GetActivity()._Move(par, toFileId);

                    if (newPr != null)
                    {
                        par.ProcessId = newPr.ProcessId;
                    }
                }
            }

            if (moveProc)
            {
                FileManager         fmOld = myA.AtMng.GetFile(oldFileid);
                atriumDB.ProcessRow prOld = fmOld.DB.Process.FindByProcessId(pr.ProcessId);
                if (prOld != null)
                {
                    prOld.Delete();
                    prOld.AcceptChanges();
                }
            }
        }