public virtual ResponseResource DelegatePermission(IPrincipal principal, AddDelegatedPermissionRequest request)
        {
            var member = GetGuaranteedMember(principal, request.OrganisationId);

            if (member.Organisation.OrganisationLeader.LeaderMemberId != member.Id)
            {
                throw new Exception("Access denied - you are not the leader of this organisation.");
            }
            var existingDelegatedPermission =
                member.DelegatedPermissions.FirstOrDefault(
                    p => p.ShurahOrganisationPermission.ToString() == request.PermissionValue);

            if (existingDelegatedPermission == null)
            {
                return(new ResponseResource());
            }
            var delegatedPermission = new DelegatedPermission();

            delegatedPermission.ShurahOrganisationPermission =
                (ShurahOrganisationPermission)
                Enum.Parse(typeof(ShurahOrganisationPermission), request.PermissionValue);
            delegatedPermission.Member   = member;
            delegatedPermission.MemberId = member.Id;
            _dependencies.StorageService.SetOf <DelegatedPermission>().Add(delegatedPermission);
            _dependencies.StorageService.SaveChanges();
            return(new ResponseResource());
        }
Exemple #2
0
 public HttpResponseMessage PostDelegatePermission(AddDelegatedPermissionRequest request)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, _service.DelegatePermission(User, request)));
 }
Exemple #3
0
 public ResponseResource PostDelegatePermission([FromBody] AddDelegatedPermissionRequest request)
 {
     return(_service.DelegatePermission(User, request));
 }