コード例 #1
0
        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);
        }