Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix getting responsibleTasks #3266

Merged
merged 2 commits into from
Oct 27, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion client/src/components/EditAssociatedPositionsModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,11 @@ const EditAssociatedPositionsModal = ({
}

function save(values, form) {
const newPosition = Object.without(new Position(values), "notes")
const newPosition = Object.without(
new Position(values),
"notes",
"responsibleTasks" // Only for querying
)
newPosition.associatedPositions = values.associatedPositions
delete newPosition.previousPeople
delete newPosition.person // prevent any changes to person.
Expand Down
4 changes: 2 additions & 2 deletions client/src/notificationsUtils.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ export const getNotifications = currentUser => {
}

export const getMyTasksWithPendingAssessments = currentUser => {
if (currentUser?.responsibleTasks?.length) {
const taskObjects = currentUser.responsibleTasks
if (currentUser?.position?.responsibleTasks?.length) {
const taskObjects = currentUser.position.responsibleTasks
.filter(obj => obj)
.map(obj => new Task(obj))
taskObjects.forEach(task => {
Expand Down
22 changes: 11 additions & 11 deletions client/src/pages/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,19 @@ const GQL_GET_APP_DATA = gql`
shortName
}
}
}
responsibleTasks(
query: {
status: ACTIVE
}
) {
uuid
shortName
longName
customFieldRef1 {
responsibleTasks(
query: {
status: ACTIVE
}
) {
uuid
shortName
longName
customFieldRef1 {
uuid
}
${GRAPHQL_NOTIFICATIONS_NOTE_FIELDS}
}
${GRAPHQL_NOTIFICATIONS_NOTE_FIELDS}
}
}

Expand Down
1 change: 0 additions & 1 deletion client/src/pages/people/Form.js
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,6 @@ const PersonForm = ({ edit, title, saveText, initialValues }) => {
"firstName",
"lastName",
"customFields", // initial JSON from the db
"responsibleTasks", // notifications for UI
DEFAULT_CUSTOM_FIELDS_PARENT
)
if (values.status === Person.STATUS.NEW_USER) {
Expand Down
6 changes: 5 additions & 1 deletion client/src/pages/positions/Form.js
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,11 @@ const PositionForm = ({ edit, title, initialValues }) => {
}

function save(values, form) {
const position = Object.without(new Position(values), "notes")
const position = Object.without(
new Position(values),
"notes",
"responsibleTasks" // Only for querying
)
if (position.type !== Position.TYPE.PRINCIPAL) {
position.type = position.permissions || Position.TYPE.ADVISOR
}
Expand Down
2 changes: 1 addition & 1 deletion client/src/pages/positions/Show.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ import GuidedTour from "components/GuidedTour"
import LinkTo from "components/LinkTo"
import Messages from "components/Messages"
import {
PageDispatchersPropType,
jumpToTop,
mapPageDispatchersToProps,
PageDispatchersPropType,
useBoilerplate
} from "components/Page"
import RelatedObjectNotes, {
Expand Down
1 change: 0 additions & 1 deletion client/src/pages/reports/Form.js
Original file line number Diff line number Diff line change
Expand Up @@ -1343,7 +1343,6 @@ const ReportForm = ({
"lastName",
"position",
"customFields",
"responsibleTasks", // notifications for UI
DEFAULT_CUSTOM_FIELDS_PARENT
)
)
Expand Down
2 changes: 1 addition & 1 deletion client/src/pages/tasks/MyTasks.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ const MyTasks = ({ pageDispatchers, searchQuery }) => {
id="my-responsible-tasks"
title={`${pluralize(taskShortLabel)} I am responsible for`}
>
<TaskTable tasks={currentUser.responsibleTasks} />
<TaskTable tasks={currentUser?.position?.responsibleTasks} />
</Fieldset>
<Fieldset
id="my-tasks-with-pending-assessments"
Expand Down
24 changes: 0 additions & 24 deletions src/main/java/mil/dds/anet/beans/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
import java.util.concurrent.CompletableFuture;
import mil.dds.anet.AnetObjectEngine;
import mil.dds.anet.beans.lists.AnetBeanList;
import mil.dds.anet.beans.search.M2mBatchParams;
import mil.dds.anet.beans.search.ReportSearchQuery;
import mil.dds.anet.beans.search.TaskSearchQuery;
import mil.dds.anet.utils.DaoUtils;
import mil.dds.anet.utils.IdDataLoaderKey;
import mil.dds.anet.utils.Utils;
Expand Down Expand Up @@ -78,8 +76,6 @@ public static enum Role {
// annotated below
private List<PersonPositionHistory> previousPositions;
// annotated below
List<Task> tasks;
// annotated below
private Optional<byte[]> avatar;
@GraphQLQuery
@GraphQLInputField
Expand Down Expand Up @@ -261,26 +257,6 @@ public CompletableFuture<AnetBeanList<Report>> loadAttendedReports(
return AnetObjectEngine.getInstance().getReportDao().search(context, query);
}

@GraphQLQuery(name = "responsibleTasks")
public CompletableFuture<List<Task>> loadResponsibleTasks(
@GraphQLRootContext Map<String, Object> context,
@GraphQLArgument(name = "query") TaskSearchQuery query) {
if (tasks != null) {
return CompletableFuture.completedFuture(tasks);
}
if (query == null) {
query = new TaskSearchQuery();
}
query.setBatchParams(new M2mBatchParams<Task, TaskSearchQuery>("tasks",
"\"taskResponsiblePositions\"", "\"taskUuid\"", "\"positionUuid\""));
final Person user = DaoUtils.getUserFromContext(context);
return AnetObjectEngine.getInstance().getTaskDao()
.getTasksBySearch(context, DaoUtils.getUuid(user.getPosition()), query).thenApply(o -> {
tasks = o;
return o;
});
}

@GraphQLQuery(name = "avatar")
public CompletableFuture<String> loadAvatar(@GraphQLRootContext Map<String, Object> context,
@GraphQLArgument(name = "size", defaultValue = "256") int size) {
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/mil/dds/anet/beans/Position.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package mil.dds.anet.beans;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.leangen.graphql.annotations.GraphQLArgument;
import io.leangen.graphql.annotations.GraphQLInputField;
import io.leangen.graphql.annotations.GraphQLQuery;
import io.leangen.graphql.annotations.GraphQLRootContext;
Expand All @@ -9,6 +10,8 @@
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import mil.dds.anet.AnetObjectEngine;
import mil.dds.anet.beans.search.M2mBatchParams;
import mil.dds.anet.beans.search.TaskSearchQuery;
import mil.dds.anet.utils.IdDataLoaderKey;
import mil.dds.anet.utils.Utils;
import mil.dds.anet.views.AbstractAnetBean;
Expand Down Expand Up @@ -49,6 +52,8 @@ public static enum PositionStatus {
List<PersonPositionHistory> previousPeople;
// annotated below
Boolean isApprover;
// annotated below
List<Task> tasks;

public String getName() {
return name;
Expand Down Expand Up @@ -241,6 +246,25 @@ public synchronized Boolean loadIsApprover() {
return isApprover;
}

@GraphQLQuery(name = "responsibleTasks")
public CompletableFuture<List<Task>> loadResponsibleTasks(
@GraphQLRootContext Map<String, Object> context,
@GraphQLArgument(name = "query") TaskSearchQuery query) {
if (tasks != null) {
return CompletableFuture.completedFuture(tasks);
}
if (query == null) {
query = new TaskSearchQuery();
}
query.setBatchParams(new M2mBatchParams<Task, TaskSearchQuery>("tasks",
"\"taskResponsiblePositions\"", "\"taskUuid\"", "\"positionUuid\""));
return AnetObjectEngine.getInstance().getTaskDao().getTasksBySearch(context, uuid, query)
.thenApply(o -> {
tasks = o;
return o;
});
}

@Override
public boolean equals(Object o) {
if (!(o instanceof Position)) {
Expand Down