public IHttpActionResult Put(Guid id, [FromBody] OrgInvitationDTO value)
        {
            if (id == Guid.Empty)
            {
                return(BadRequest("id is empty"));
            }

            var invitation = UnitOfWork.OrgInvitationsRepository.Find(id);

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

            invitation.Name           = value.Name;
            invitation.Token          = value.Token;
            invitation.Limit          = value.Limit;
            invitation.IsActive       = value.IsActive;
            invitation.OrganisationId = Guid.Parse(value.Organisation.Id);

            try
            {
                UnitOfWork.OrgInvitationsRepository.InsertOrUpdate(invitation);
                UnitOfWork.Save();

                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public IHttpActionResult Post([FromBody] OrgInvitationDTO value)
        {
            var invitation = Mapper.Map <OrganisationInvitation>(value);

            if (CurrentUser is OrgUser)
            {
                invitation.Organisation = CurrentOrgUser.Organisation;
            }
            else
            {
                invitation.OrganisationId = Guid.Parse(value.Organisation.Id);
                invitation.Organisation   = null;
            }

            UnitOfWork.OrgInvitationsRepository.InsertOrUpdate(invitation);

            try
            {
                UnitOfWork.Save();
                MemoryCacher.DeleteStartingWith(CACHE_KEY);

                return(Ok());
            }
            catch (DbUpdateException)
            {
                return(BadRequest("cannot create duplicate invitation tokens"));
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }