public async Task <DTO.AddressOutput> UpdateEntityAsync(long id, DTO.AddressInput address, string userName, string normalizedUserName) { try { await TransactionHandler.BeginTransactionAsync(); var foundAddress = await CheckAccessRightsAndGetAddressAsync(id, userName, normalizedUserName); var(city, country, state) = await InsertOrGetAddressRelationsAsync(address); foundAddress.City = city; foundAddress.Country = country; foundAddress.State = state; foundAddress.DoorNumber = address.DoorNumber; foundAddress.Street = address.Street; await AddressRepository.UpdateEntityAsync(foundAddress); await TransactionHandler.CommitTransactionAsync(); return(Mapper.Map <DTO.AddressOutput>(foundAddress)); } catch { await TransactionHandler.RollbackTransactionAsync(); throw; } finally { await TransactionHandler.DisposeTransactionAsync(); } }
public async Task <IActionResult> PostAddressAsync([FromBody] DTO.AddressInput address) { var userName = User.FindFirst("userName")?.Value; var normalizedUserName = User.FindFirst(ClaimTypes.NameIdentifier)?.Value; var insertedAddress = await AddressManager.InsertEntityAsync(address, userName, normalizedUserName); return(Ok(new DTO.SuccessResponse <DTO.AddressOutput> { Success = true, Content = insertedAddress })); }
private async Task <(DAO.City, DAO.Country, DAO.State)> InsertOrGetAddressRelationsAsync( DTO.AddressInput entity) { var convertedCity = Mapper.Map <DAO.City>(entity.City); var managedCity = await CityRepository.InsertOrGetEntityAsync(convertedCity); var convertedCountry = Mapper.Map <DAO.Country>(entity.Country); var managedCountry = await CountryRepository.InsertOrGetEntityAsync(convertedCountry); var convertedState = Mapper.Map <DAO.State>(entity.State); var managedState = await StateRepository.InsertOrGetEntityAsync(convertedState); return(managedCity, managedCountry, managedState); }
public async Task <DTO.AddressOutput> InsertEntityAsync(DTO.AddressInput entity, string userName, string normalizedUserName) { try { await TransactionHandler.BeginTransactionAsync(); var person = new DAO.Person { UserName = userName, NormalizedUserName = normalizedUserName }; var managedPerson = await PersonRepository.InsertOrGetEntityAsync(person); var(city, country, state) = await InsertOrGetAddressRelationsAsync(entity); var address = new DAO.Address { Person = managedPerson, City = city, Country = country, State = state, DoorNumber = entity.DoorNumber, Street = entity.Street }; var managedAddress = await AddressRepository.InsertEntityAsync(address); await TransactionHandler.CommitTransactionAsync(); return(Mapper.Map <DTO.AddressOutput>(managedAddress)); } catch { await TransactionHandler.RollbackTransactionAsync(); throw; } finally { await TransactionHandler.DisposeTransactionAsync(); } }