예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
        /// <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));
        }
예제 #3
0
        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));
        }