package femr.ui.controllers.manager; import com.google.inject.Inject; import femr.business.services.core.*; import femr.common.dtos.CurrentUser; import femr.common.dtos.ServiceResponse; import femr.common.models.MissionTripItem; import femr.common.models.PatientEncounterItem; import femr.data.models.mysql.Roles; import femr.ui.helpers.security.AllowedRoles; import femr.ui.helpers.security.FEMRAuthenticated; import femr.ui.models.manager.IndexViewModelGet; import femr.ui.views.html.manager.index; import femr.util.calculations.dateUtils; import femr.util.stringhelpers.StringUtils; import org.joda.time.DateTime; import play.mvc.Controller; import play.mvc.Result; import play.mvc.Security; import java.util.List; @Security.Authenticated(FEMRAuthenticated.class) @AllowedRoles({Roles.MANAGER}) public class ManagerController extends Controller { private final ISessionService sessionService; private final IEncounterService encounterService; private final IMissionTripService missionTripService; @Inject public ManagerController(ISessionService sessionService, IEncounterService encounterService, IMissionTripService missionTripService) { this.sessionService = sessionService; this.encounterService = encounterService; this.missionTripService = missionTripService; } public Result indexGet() { //declares empty array lists view model CurrentUser currentUser = sessionService.retrieveCurrentUserSession(); IndexViewModelGet viewModel = new IndexViewModelGet(); //if the user is not assigned to a trip renders outpage, with message to user if (currentUser.getTripId() == null) { return ok(index.render(currentUser, viewModel)); } //Get the list of patient encounters that were created today, for the current trip and set them in the viewmodel ServiceResponse<List<PatientEncounterItem>> patientEncounter = encounterService.retrieveCurrentDayPatientEncounters(currentUser.getTripId()); viewModel.setPatientEncounter(patientEncounter.getResponseObject()); //Get the mission trip and set the name of it in the viewmodel ServiceResponse<MissionTripItem> missionTripItemServiceResponse = missionTripService.retrieveAllTripInformationByTripId(currentUser.getTripId()); if (missionTripItemServiceResponse.hasErrors()){ throw new RuntimeException(); } viewModel.setUserFriendlyTrip( StringUtils.generateMissionTripTitle( missionTripItemServiceResponse.getResponseObject().getTeamName(), missionTripItemServiceResponse.getResponseObject().getTripCountry(), missionTripItemServiceResponse.getResponseObject().getTripStartDate(), missionTripItemServiceResponse.getResponseObject().getTripEndDate() ) ); //Get the current day to show the user what day the patients are being displayed for viewModel.setUserFriendlyDate(dateUtils.getFriendlyInternationalDate(DateTime.now().toDate())); return ok(index.render(currentUser, viewModel)); } }