Exemplo n.º 1
0
        public StatusCode Init(string param_key)
        {
            StatusCode retVal = StatusCode.SUCCEED_STATUS;

            lock (this)
            {
                if (CanInitialize == false)
                {
                    return(retVal);
                }

                string strValue = Access.ParameterAccess.GetStringValue(param_key);
                StatusCode.Debug("KEY:" + param_key + " VAL:" + strValue, Config);
                List <short> lstServerToActivate = new List <short>();
                if (string.IsNullOrEmpty(strValue) == false)
                {
                    lstServerToActivate = Newtonsoft.Json.JsonConvert.DeserializeObject <List <short> >(strValue);
                }

                List <Models.ServiceType> lstType          = GyomuDataAccess.GetAllServiceType();
                List <Models.Service>     lstServerService = GyomuDataAccess.GetAllService();

                retVal = internalInit(lstServerService, lstType);
                if (retVal.IsSucceeded == false)
                {
                    return(retVal);
                }
            }
            return(retVal);
        }
Exemplo n.º 2
0
        private void lockInstanceAndRefreshCurrentTaskData()
        {
            StatusCode retVal = StatusCode.SUCCEED_STATUS;

            CurrentTask = GyomuDataAccess.LockTaskData(TaskDataID);
            loadTaskData();
        }
Exemplo n.º 3
0
 private void loadTaskData()
 {
     if (taskDataLoaded)
     {
         return;
     }
     if (CurrentTask == null)
     {
         CurrentTask = GyomuDataAccess.SelectTaskData(TaskDataID);
     }
     TaskDataParameter = CurrentTask.parameter;
     Instances         = GyomuDataAccess.SelectTaskInstanceByTaskData(CurrentTask);
     LatestInstance    = Instances.FirstOrDefault();
     LatestInstanceID  = LatestInstance.id;
     AccessList        = GyomuDataAccess.SelectTaskAccessLists(ApplicationID, TaskInfoID);
     taskDataLoaded    = true;
 }
Exemplo n.º 4
0
 private StatusCode createNewInstance(string parameter, string mnemonic, List <WindowsUser> submit_to, StatusCode statusCode, string comment)
 {
     try
     {
         GyomuDataAccess.CreateNewTaskInstance(CurrentTask, Config, mnemonic, parameter, comment, statusCode, submit_to, out Models.TaskInstance taskInstance);
         LatestInstance   = taskInstance;
         LatestInstanceID = LatestInstance.id;
         Instances.Add(LatestInstance);
         Notify(null);
     }
     catch (Exception ex)
     {
         return
             (new CommonStatusCode(CommonStatusCode.TASK_INSTANCE_GENERATE_ERROR,
                                   new object[] { ApplicationID, TaskInfoID, TaskDataID, parameter }, ex,
                                   Config, ApplicationID));
     }
     return(StatusCode.SUCCEED_STATUS);
 }
Exemplo n.º 5
0
 private StatusCode createNewTask(string comment, Models.TaskData parentTask)
 {
     try
     {
         GyomuDataAccess.CreateNewTask(CurrentTaskInfo, Config, TaskDataParameter, comment, parentTask, out Models.TaskData taskData, out Models.TaskInstance taskInstance, out Models.TaskDataStatus taskStatus);
         CurrentTask    = taskData;
         LatestInstance = taskInstance;
         Instances      = new List <Models.TaskInstance>()
         {
             LatestInstance
         };
         LatestInstanceID = LatestInstance.id;
     }
     catch (Exception ex)
     {
         return
             (new CommonStatusCode(CommonStatusCode.TASK_GENERATE_ERROR, new object[] { ApplicationID, TaskInfoID, TaskDataParameter }, ex, Config, ApplicationID));
     }
     return(StatusCode.SUCCEED_STATUS);
 }
Exemplo n.º 6
0
 private void abstractBaseTask_PropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     if (string.IsNullOrEmpty(e.PropertyName))
     {
         return;
     }
     if (string.IsNullOrEmpty(e.PropertyName.Trim()))
     {
         return;
     }
     try
     {
         using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))
         {
             Models.TaskDataLog taskLog = new Models.TaskDataLog()
             {
                 task_data_id = TaskDataID, log = e.PropertyName ?? ""
             };
             GyomuDataAccess.InsertTaskDataLog(taskLog);
         }
     }
     catch (Exception) { }
 }
Exemplo n.º 7
0
        public StatusCode Init(short[] serviceIds)
        {
            StatusCode retVal = StatusCode.SUCCEED_STATUS;

            lock (this)
            {
                if (CanInitialize == false)
                {
                    return(retVal);
                }

                //Data.CommonData commonData = new Data.CommonData();
                //commonData.LoadServer(serviceIds);
                List <Models.ServiceType> lstType    = GyomuDataAccess.GetAllServiceType();
                List <Models.Service>     lstService = GyomuDataAccess.GetAllService().Where(s => serviceIds.Contains(s.id)).ToList();

                retVal = internalInit(lstService, lstType);
                if (retVal.IsSucceeded == false)
                {
                    return(retVal);
                }
            }
            return(retVal);
        }
Exemplo n.º 8
0
        private bool internalValidOwner(string target_status_mnemonic)
        {
            string current_status = null;

            if (LatestInstance == null)
            {
                return(true);
            }
            if (target_status_mnemonic.Equals(STATUS_INIT) == false)
            {
                current_status = LatestInstance.task_status;
            }
            User requestor = null;

            switch (target_status_mnemonic)
            {
            case STATUS_INIT:
                if (internalCheckTaskAccessibility())
                {
                    return(true);
                }
                break;

            case STATUS_APPROVAL:
            case STATUS_REJECT:
                //Get Submit Persons
                if (IsSelfApproveEnable == false)
                {
                    requestor = User.GetUser(LatestInstance.entry_author);
                    if (requestor.IsValid && requestor.Equals(CurrentUser))
                    {
                        return(false);
                    }
                }
                foreach (Models.TaskSubmitInformation taskSubmitInformation in GyomuDataAccess.SelectTaskSubmitInformation(LatestInstance))
                {
                    User submit_user = User.GetUser(taskSubmitInformation.submit_to);
                    if (submit_user.IsValid)
                    {
                        if (submit_user.IsGroup == false && submit_user.Equals(CurrentUser))
                        {
                            return(true);
                        }
                        if (submit_user.IsGroup)
                        {
                            if (CurrentUser.IsInGroup(submit_user))
                            {
                                return(true);
                            }
                        }
                    }
                }
                break;

            case STATUS_EXECUTE:
                //If Current Status is not Delegate, it must be equal to Latest instance's user
                if (STATUS_DELEGATE.Equals(current_status) == false)
                {
                    Models.DelegateInformation info = DelegateInformation;
                    if (info.DelegationRequired)
                    {
                        if (Instances.Where(i => i.task_status.Equals(STATUS_DELEGATE) && i.entry_author.Equals(CurrentUser.UserID)).Count() > 0)
                        {
                            return(true);
                        }
                        User previousUser = User.GetUser(LatestInstance.entry_author);
                        if (previousUser.IsValid && previousUser.Equals(CurrentUser))
                        {
                            return(true);
                        }
                    }
                    else
                    {
                        User previousUser = User.GetUser(LatestInstance.entry_author);
                        if (previousUser.IsValid && previousUser.Equals(CurrentUser))
                        {
                            return(true);
                        }
                    }
                }
                //Else it must be submit user in the latest instance
                else
                {
                    foreach (Models.TaskSubmitInformation taskSubmitInformation in GyomuDataAccess.SelectTaskSubmitInformation(LatestInstance))
                    {
                        User submit_user = User.GetUser(taskSubmitInformation.submit_to);
                        if (submit_user.IsValid)
                        {
                            if (submit_user.IsGroup == false && submit_user.Equals(CurrentUser))
                            {
                                return(true);
                            }
                            if (submit_user.IsGroup && CurrentUser.IsInGroup(submit_user))
                            {
                                return(true);
                            }
                        }
                    }
                }
                break;

            case STATUS_REQUEST:
                //Approver or Starter
                User starter = User.GetUser(CurrentTask.entry_author);
                if (starter.IsValid && starter.Equals(CurrentUser))
                {
                    return(true);
                }
                if (LatestInstance.task_status.Equals(STATUS_APPROVAL))
                {
                    User approver = User.GetUser(LatestInstance.entry_author);
                    if (approver.IsValid && approver.Equals(CurrentUser))
                    {
                        return(true);
                    }
                }
                break;

            case STATUS_CANCEL:
                //Requester
                requestor = User.GetUser(LatestInstance.entry_author);
                if (requestor.IsValid && requestor.Equals(CurrentUser))
                {
                    return(true);
                }
                break;

            case STATUS_COMPLETE:
                //For Force Success
                if (internalCheckTaskAccessibility() == false)
                {
                    return(false);
                }
                if (current_status.Equals(STATUS_FAIL))
                {
                    return(true);
                }
                break;

            default:
                return(true);
            }
            return(false);
        }
Exemplo n.º 9
0
 protected List <Models.TaskSubmitInformation> LoadSubmitInformation(Models.TaskInstance taskInstance)
 {
     return(GyomuDataAccess.SelectTaskSubmitInformation(taskInstance));
 }