Ejemplo n.º 1
0
        public string Create(Company company, string userId)
        {
            var companyIdentity = Identity.Next();

            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(companyIdentity);
            var userKey    = PartionKeyRowKeyPair.CreateFromIdentity(userId);

            var userRepository  = new UserRepository(_tableEntityOperation);
            var userTableEntity = userRepository.Get(userKey);

            var companyRepository  = new CompanyRepository(_tableEntityOperation);
            var companyTableEntity = new CompanyTableEntity(companyKey, company.Name,
                                                            new List <SmallUser>
            {
                new SmallUser {
                    Id = userId, Name = userTableEntity.Name, Email = userTableEntity.Email
                }
            });

            companyRepository.Create(companyTableEntity);

            TransientErrorHandling.Run(() =>
            {
                userTableEntity = userRepository.Get(userKey);

                userTableEntity.Companies.Add(new Small {
                    Id = companyIdentity, Name = company.Name
                });
                userRepository.Update(userTableEntity);
            });

            return(companyIdentity);
        }
Ejemplo n.º 2
0
        public void Update(Company company)
        {
            var companyKey = PartionKeyRowKeyPair.CreateFromIdentity(company.Id);

            var companyRepository = new CompanyRepository(_tableEntityOperation);

            CompanyTableEntity companyTableEntity = null;

            TransientErrorHandling.Run(() =>
            {
                companyTableEntity = companyRepository.Get(companyKey);
                if (companyTableEntity == null)
                {
                    throw new NotFoundException();
                }

                companyTableEntity.Name = company.Name;
                companyTableEntity.TelemetryDataSinkSettings = company.TelemetryDataSinkSettings;

                companyRepository.Update(companyTableEntity);
            });

            var userIds = companyTableEntity.Users.Select(u => u.Id).ToList();

            TransientErrorHandling.Run(() =>
            {
                var userRepository = new UserRepository(_tableEntityOperation);

                foreach (var userId in userIds)
                {
                    var userKey = PartionKeyRowKeyPair.CreateFromIdentity(userId);

                    var user = userRepository.Get(userKey);
                    user.Companies.Single(c => c.Id == company.Id).Name = company.Name;
                    userRepository.Update(user);
                }
            });
        }