예제 #1
0
        public IHttpActionResult DeleteAssignments(Guid id, Guid userId, ThreadAccessLevels accessLevel)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            if (userId == Guid.Empty)
            {
                return(BadRequest("user id is empty"));
            }

            var thread = UnitOfWork.FormTemplatesRepository.FindIncluding(id, t => t.Assignments);

            if (thread == null)
            {
                return(NotFound());
            }

            var assignment = thread.Assignments.SingleOrDefault(a => a.OrgUserId == userId);

            if (assignment == null)
            {
                return(NotFound());
            }

            var result = UnitOfWork.ThreadAssignmentsRepository.AssignAccessLevel(id, userId, accessLevel, grant: false);

            if (result != null)
            {
                return(Ok(Mapper.Map <ThreadAssignmentDTO>(result)));
            }

            return(Ok(new ThreadAssignmentDTO()));
        }
        private ThreadAssignment FlagAccessLevel(ThreadAssignment assignment, ThreadAccessLevels accessLevel, bool grant)
        {
            switch (accessLevel)
            {
                case ThreadAccessLevels.AllowView:
                    {
                        assignment.CanView = grant;
                        break;
                    }
                case ThreadAccessLevels.AllowAdd:
                    {
                        assignment.CanAdd = grant;
                        if (grant) assignment.CanView = true;
                        break;
                    }
                case ThreadAccessLevels.AllowEdit:
                    {
                        assignment.CanEdit = grant;
                        if (grant) assignment.CanView = true;
                        break;
                    }
                case ThreadAccessLevels.AllowDelete:
                    {
                        assignment.CanDelete = grant;
                        if (grant) assignment.CanView = true;
                        break;
                    }
                default:
                    break;
            }

            return assignment;
        }
예제 #3
0
        public IHttpActionResult AddAssignments(Guid id, Guid userId, ThreadAccessLevels accessLevel)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            if (userId == Guid.Empty)
            {
                return(BadRequest("user id is empty"));
            }

            var thread = UnitOfWork.FormTemplatesRepository.Find(id);

            if (thread == null)
            {
                return(NotFound());
            }

            var orgUser = UnitOfWork.OrgUsersRepository.Find(userId);

            if (orgUser == null)
            {
                return(NotFound());
            }

            var result = UnitOfWork.ThreadAssignmentsRepository.AssignAccessLevel(id, userId, accessLevel, grant: true);

            return(Ok(Mapper.Map <ThreadAssignmentDTO>(result)));
        }
        public ThreadAssignment AssignAccessLevel(Guid formTemplateId, Guid userId, ThreadAccessLevels accessLevel, bool grant)
        {
            var thread = this.CurrentUOW.FormTemplatesRepository.Find(formTemplateId);
            var assignment = thread.Assignments.SingleOrDefault(a => a.OrgUserId == userId);

            if (assignment != null)
            {
                assignment = FlagAccessLevel(assignment, accessLevel, grant);
                this.CurrentUOW.ThreadAssignmentsRepository.InsertOrUpdate(assignment);
            }
            else
            {
                assignment = new ThreadAssignment() { FormTemplateId = formTemplateId, OrgUserId = userId };
                assignment = FlagAccessLevel(assignment, accessLevel, grant);
                this.CurrentUOW.ThreadAssignmentsRepository.InsertOrUpdate(assignment);
            }

            this.CurrentUOW.Save();

            return thread.Assignments.SingleOrDefault(a => a.OrgUserId == userId);
        }