/// <summary> /// Get previous StatusId for current RolesId /// </summary> /// <param name="rolesId">The roles id.</param> /// <param name="currentStatus">The current status.</param> /// <returns></returns> public static int GetPrevStatus(string[] rolesId, int currentStatus) { int curStatus = currentStatus; while (true) { //while not last while (curStatus != -1) { curStatus = WorkflowStatus.GetPrevious(curStatus); //foreach Role foreach (string roleId in rolesId) { using (IDataReader reader = LoadByRoleIdStatusId(roleId, curStatus)) { if (reader.Read()) { reader.Close(); return(curStatus); } reader.Close(); } } } if (curStatus == -1) { return(-1); } } }
/// <summary> /// Get highest StatusId for current RolesId /// </summary> /// <param name="rolesId">The roles id.</param> /// <param name="lastStatus">The last status.</param> /// <returns></returns> public static int GetMaxStatus(string[] rolesId, int lastStatus) { int curStatus = lastStatus; while (true) { foreach (string roleId in rolesId) { using (IDataReader reader = LoadByRoleIdStatusId(roleId, curStatus)) { if (reader.Read()) { reader.Close(); return(curStatus); } reader.Close(); } } curStatus = WorkflowStatus.GetPrevious(curStatus); if (curStatus == -1) { return(-1); } } }