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); }
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); } }); }