public virtual MembershipCancellationResponseResource SubmitCancellation(LeaveOrganisationRequest request, IPrincipal principal)
        {
            var user = _dependencies.UserService.GetAuthenticatedUser(principal);

            if (user == null)
            {
                return(new MembershipCancellationResponseResource
                {
                    HasError = true,
                    Error = "unable to find user"
                });
            }
            var membership =
                user.MemberAuth0Users.FirstOrDefault(x => x.Member.OrganisationId == request.OrganisationId);

            if (membership != null)
            {
                membership.Member.Removed = true;
            }
            user.MembershipApplications.Where(m => m.OrganisationId == request.OrganisationId).ToList().ForEach(m =>
            {
                m.Acceptances.ToList().ForEach(a => _dependencies.StorageService.SetOf <MembershipApplicationAcceptance>().Remove(a));
                _dependencies.StorageService.SetOf <MembershipApplication>().Remove(m);
            });
            _dependencies.StorageService.SaveChanges();

            return(new MembershipCancellationResponseResource
            {
                HasError = false,
            });
        }
 public MembershipCancellationResponseResource Post([FromBody] LeaveOrganisationRequest request)
 {
     return(_service.SubmitCancellation(request, User));
 }
Esempio n. 3
0
 public HttpResponseMessage Post(LeaveOrganisationRequest request)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, value: _service.SubmitCancellation(request, User)));
 }