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

B 22764 #14923

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft

B 22764 #14923

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
33 changes: 23 additions & 10 deletions pkg/handlers/ghcapi/internal/payloads/model_to_payload.go
Original file line number Diff line number Diff line change
Expand Up @@ -2401,19 +2401,32 @@ func QueueMoves(moves []models.Move, officeUsers []models.OfficeUser, requestedP
}

// if the assigned user is not in the returned list of available users append them to the end
if (activeRole == string(roles.RoleTypeTOO)) && (move.TOOAssignedUser != nil) {
userFound := false
for _, officeUser := range availableOfficeUsers {
if officeUser.ID == *move.TOOAssignedID {
userFound = true
break
}
if activeRole == string(roles.RoleTypeTOO) || activeRole == string(roles.RoleTypeServicesCounselor) {
var assignedUser *models.OfficeUser
var assignedID *uuid.UUID

switch activeRole {
case string(roles.RoleTypeTOO):
assignedUser = move.TOOAssignedUser
assignedID = move.TOOAssignedID
case string(roles.RoleTypeServicesCounselor):
assignedUser = move.SCAssignedUser
assignedID = move.SCAssignedID
}
if !userFound {
availableOfficeUsers = append(availableOfficeUsers, *move.TOOAssignedUser)

if assignedUser != nil {
userFound := false
for _, officeUser := range availableOfficeUsers {
if assignedID != nil && officeUser.ID == *assignedID {
userFound = true
break
}
}
if !userFound {
availableOfficeUsers = append(availableOfficeUsers, *assignedUser)
}
}
}

if activeRole == string(roles.RoleTypeServicesCounselor) {
availableOfficeUsers = servicesCounselorAvailableOfficeUsers(move, availableOfficeUsers, officeUser, ppmCloseoutGblocs, isCloseoutQueue)
}
Expand Down
5 changes: 4 additions & 1 deletion pkg/services/office_user/office_user_fetcher.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,10 @@ func (o *officeUserFetcherPop) FetchOfficeUsersWithWorkloadByRoleAndOffice(appCt
office_users.last_name,
COUNT(DISTINCT moves.id) AS workload
FROM office_users
JOIN users_roles ON office_users.user_id = users_roles.user_id
JOIN users_roles
ON (
office_users.user_id = users_roles.user_id AND users_roles.deleted_at IS NULL
)
JOIN roles ON users_roles.role_id = roles.id
JOIN transportation_offices ON office_users.transportation_office_id = transportation_offices.id
LEFT JOIN moves
Expand Down
26 changes: 26 additions & 0 deletions pkg/services/office_user/office_user_fetcher_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package officeuser
import (
"errors"
"reflect"
"time"

"github.com/gobuffalo/validate/v3"
"github.com/gofrs/uuid"
Expand All @@ -14,6 +15,7 @@ import (
"github.com/transcom/mymove/pkg/models/roles"
"github.com/transcom/mymove/pkg/services"
"github.com/transcom/mymove/pkg/services/query"
"github.com/transcom/mymove/pkg/testdatagen"
)

type testOfficeUserQueryBuilder struct {
Expand Down Expand Up @@ -159,4 +161,28 @@ func (suite *OfficeUserServiceSuite) TestFetchOfficeUsersWithWorkloadByRoleAndOf
suite.IsType(apperror.NotFoundError{}, err)
suite.Equal(uuid.Nil, officeUser.ID)
})

suite.Run("does not return office users with deleted role", func() {
transportationOffice := factory.BuildTransportationOffice(suite.DB(), nil, nil)
tooRole := factory.FetchOrBuildRoleByRoleType(suite.DB(), roles.RoleTypeTOO)
officeUser := factory.BuildOfficeUser(suite.DB(), []factory.Customization{
{
Model: transportationOffice,
LinkOnly: true,
Type: &factory.TransportationOffices.CounselingOffice,
},
}, nil)
deletedAt := time.Now()
_ = testdatagen.MakeUsersRoles(suite.DB(), testdatagen.Assertions{
User: officeUser.User,
UsersRoles: models.UsersRoles{
RoleID: tooRole.ID,
DeletedAt: &deletedAt,
},
})

fetchedUsers, err := fetcher.FetchOfficeUsersByRoleAndOffice(suite.AppContextForTest(), roles.RoleTypeTOO, officeUser.TransportationOfficeID)
suite.NoError(err)
suite.Len(fetchedUsers, 0)
})
}
Loading