public async Task <Contracts.Creation> ChangeOwner([FromUri] int userId, [FromUri] int creationId, [FromBody] int newOwnerId) { ValidateUserAsAuthenticated(userId); CreationEntity entity = await ValidateCreation(creationId, userId); UserEntity newOwner = await DbContext.UsersRepo.GetSingleOrDefaultAsync(newOwnerId); var newOwnerString = string.Format("{0} {1}, a.k.a {2}", newOwner.FirstName, newOwner.LastName, newOwner.UserName); Contracts.Creation contractFromEntity = entity.ToContract(); contractFromEntity.Owner = newOwnerString; var fileData = File.ReadAllBytes(entity.FilePath); var rightCreation = new CreationRightsManager.Creation { Author = contractFromEntity.Author, Owner = contractFromEntity.Owner, TimeOfCreation = entity.TimeOfCreation, Data = new MemoryStream(fileData) }; CreationCertificateData cert = _creationRightsManager.Register(rightCreation); contractFromEntity.Footprint = cert.CreationFootprint; contractFromEntity.Signature = cert.Signature; await DbContext.CreationsRepo.UpdateAsync(contractFromEntity.ToEntity()); return(contractFromEntity); }