/// <summary> /// Create the model /// </summary> /// <param name="ps">portfolio service</param> /// <param name="sr"></param> /// <param name="nextState"></param> /// <param name="userId"></param> /// <param name="serviceRequestId"></param> /// <returns></returns> public static ServiceRequestStateChangeModel CreateStateChangeModel(IPortfolioService ps, IServiceRequestController sr, ServiceRequestState nextState, int userId, int serviceRequestId) { var model = new ServiceRequestStateChangeModel { NextState = nextState, ServiceRequestModel = new ServiceRequestModel(), ConfirmNextState = true }; return(AddModelData(model, ps, sr, userId, serviceRequestId)); }
/// <summary> /// Show a single SR summary with all available next actions /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult ShowServiceRequest(int id) { ServiceRequestStateChangeModel model = ServiceRequestSummaryHelper.CreateStateChangeModel(_portfolioService, UserId, _serviceRequestController, id); if (model.ServiceRequestModel == null) { return(View("ConfirmServiceRequestStateChange", model)); } //check for an sr approval IApprovalController approvalController = new ApprovalController(); try { model.ServiceRequestModel.Approval = approvalController.GetApprovalForServiceRequest(UserId, id); } catch (Exception) { } //resolve display names to Guids //requestees if (model.ServiceRequestModel.ServiceRequest.RequestedForGuids != null) { List <string> displayNames = new List <string>(); foreach (var userGuidstring in model.ServiceRequestModel.ServiceRequest.RequestedForGuids.Split(',')) { if (userGuidstring != "") //get names from ad { try { displayNames.Add(_userManager.GetDisplayName(Guid.Parse(userGuidstring))); } catch (Exception) { displayNames.Add("Name not found"); } } } model.ServiceRequestModel.RequesteeDisplayNames = displayNames.OrderBy(x => x); } //requestor try { model.ServiceRequestModel.RequestorDisplayName = _userManager.GetDisplayName(_userManager.GetUser(UserId, model.ServiceRequestModel.Requestor).AdGuid); } catch (Exception) { model.ServiceRequestModel.RequestorDisplayName = "Name not found"; } // business logic model.CanEditServiceRequest = _requestManager.UserCanEditRequest(UserId, model.ServiceRequestModel.ServiceRequest.Id); model.CanEditServiceRequest = _requestManager.UserCanEditRequest(UserId, model.ServiceRequestModel.ServiceRequest.Id); model.AvailableStates = _requestManager.ValidStates(UserId, id); return(View("ConfirmServiceRequestStateChange", model)); }
/// <summary> /// Data to show a state change of SR /// </summary> /// <param name="ps"></param> /// <param name="userId"></param> /// <param name="sr"></param> /// <param name="serviceRequestId"></param> /// <returns></returns> public static ServiceRequestStateChangeModel CreateStateChangeModel(IPortfolioService ps, int userId, IServiceRequestController sr, int serviceRequestId) { var model = new ServiceRequestStateChangeModel { ServiceRequestModel = new ServiceRequestModel(), ConfirmNextState = false }; model.ServiceRequestModel.ServiceRequest = sr.GetServiceRequest(userId, serviceRequestId); List <DisplayListOption> displayList = new List <DisplayListOption>(); foreach (var serviceRequestOption in model.ServiceRequestModel.ServiceRequest.ServiceRequestOptions) //add the option name { var listOption = new DisplayListOption { ServiceRequestOption = serviceRequestOption, UserInputs = new List <DisplayListUserInput>(), ServiceOption = ps.GetServiceOption(userId, serviceRequestOption.ServiceOptionId) }; var userInputs = ps.GetInputsForServiceOptions(userId, new IServiceOptionDto[1] { new ServiceOptionDto { Id = serviceRequestOption.ServiceOptionId } }); //get user inputs if (userInputs != null) { foreach (var userData in model.ServiceRequestModel.ServiceRequest.ServiceRequestUserInputs) { if (userData.UserInputType == UserInputType.Text) { foreach (var userInput in userInputs.TextInputs) { if (userInput.Id == userData.InputId) { var displayUserInput = new DisplayListUserInput { DisplayName = userInput.DisplayName }; displayUserInput.ServiceRequestUserInput = userData; listOption.UserInputs.Add(displayUserInput); } } } else if (userData.UserInputType == UserInputType.Selection) { foreach (var userInput in userInputs.SelectionInputs) { if (userInput.Id == userData.InputId) { var displayUserInput = new DisplayListUserInput { DisplayName = userInput.DisplayName }; displayUserInput.ServiceRequestUserInput = userData; listOption.UserInputs.Add(displayUserInput); } } } else if (userData.UserInputType == UserInputType.ScriptedSelection) { foreach (var userInput in userInputs.ScriptedSelectionInputs) { if (userInput.Id == userData.InputId) { var displayUserInput = new DisplayListUserInput { DisplayName = userInput.DisplayName }; displayUserInput.ServiceRequestUserInput = userData; listOption.UserInputs.Add(displayUserInput); } } } } displayList.Add(listOption); } } model.DisplayList = displayList; return(model); }