public static void DeserializeUrdmsUsers <T>(this IUserManagementViewModel model, NameValueCollection formParams) { model.UrdmsUsers = new List <UrdmsUserViewModel>(); var rows = formParams.GetValues("urdms.users.row"); if (rows != null) { foreach (var row in rows) { var userParts = row.Split(','); var id = int.Parse(userParts[0]); var isDelete = id == 0 ? formParams["RemoveUrdmsUser" + userParts[1]] : formParams["RemoveUrdmsUser" + id]; var relationship = (int)(object)(id == 0 ? formParams["UrdmsUserRelationship" + userParts[1]] : formParams["UrdmsUserRelationship" + id]).GetEnumValue <T>(); var isRemoveOperation = !isDelete.Contains("true") && formParams["DeleteUrdmsUser"] != null; var isAddOperation = formParams["AddUrdmsUser"] != null; var isSubmitOperation = formParams["DeleteUrdmsUser"] == null && formParams["AddUrdmsUser"] == null; if (isRemoveOperation || isAddOperation || isSubmitOperation) { var user = new UrdmsUserViewModel { Id = id, FullName = userParts[2], UserId = userParts[3], Relationship = relationship }; model.UrdmsUsers.Add(user); } } } }
/// <summary> /// Gets a URDMS user and inserts it into a suitable model for the partial view. /// </summary> /// <param name="term">A URDMS User Id.</param> /// <param name="userType">Type of user ('project' or 'data-collection')</param> /// <returns>Partial view</returns> public ActionResult GetNewUrdmsUser(string term, string userType) { if (string.IsNullOrWhiteSpace(term)) { return(new EmptyResult()); } var urdmsUser = GetUser(term); if (urdmsUser == null || CurrentUser.CurtinId == urdmsUser.CurtinId) { return(new EmptyResult()); } var newRow = new UrdmsUserViewModel { Id = 0, UserId = urdmsUser.CurtinId, FullName = urdmsUser.FullName }; switch (userType) { case "project": { var values = Enum.GetValues(typeof(AccessRole)).Cast <AccessRole>().Except(new[] { AccessRole.Owners, AccessRole.None }); ViewBag.Relationships = values.ToDictionary(o => (int)o, o => o.GetDescription()); newRow.Relationship = (int)AccessRole.Visitors; } break; case "data-collection": { var values = Enum.GetValues(typeof(DataCollectionRelationshipType)).Cast <DataCollectionRelationshipType>().Except(new[] { DataCollectionRelationshipType.Manager, DataCollectionRelationshipType.None }); ViewBag.Relationships = values.ToDictionary(o => (int)o, o => o.GetDescription()); newRow.Relationship = (int)DataCollectionRelationshipType.AssociatedResearcher; } break; default: return(new EmptyResult()); } return(PartialView("_UrdmsUser", newRow)); }
public ActionResult GetNewUrdmsUserForApproval(string term, int dataCollectionId) { if (string.IsNullOrWhiteSpace(term) || dataCollectionId < 1) { return(new EmptyResult()); } var dataCollection = _dataCollectionRepository.Get(dataCollectionId); if (dataCollection == null) { return(new EmptyResult()); } var manager = dataCollection.Parties.Single(p => p.Relationship == DataCollectionRelationshipType.Manager).Party; if (term.Equals(manager.UserId, StringComparison.InvariantCultureIgnoreCase)) { return(new EmptyResult()); } var urdmsUser = GetUser(term); if (urdmsUser == null) { return(new EmptyResult()); } var values = Enum.GetValues(typeof(DataCollectionRelationshipType)).Cast <DataCollectionRelationshipType>().Except(new[] { DataCollectionRelationshipType.Manager, DataCollectionRelationshipType.None }); ViewBag.Relationships = values.ToDictionary(o => (int)o, o => o.GetDescription()); var newRow = new UrdmsUserViewModel { Id = 0, UserId = urdmsUser.CurtinId, FullName = urdmsUser.FullName, Relationship = (int)DataCollectionRelationshipType.AssociatedResearcher }; return(PartialView("_UrdmsUser", newRow)); }