public async Task <Response <HouseModel> > GetHouseAsync(string houseId) { var response = Response <HouseModel> .Create(); if (string.IsNullOrEmpty(houseId)) { return(response.WithBusinessError($"{nameof(houseId)} is invalid")); } var house = await HouseRepository.FindAsync(houseId); if (house.HasValue) { return(response.SetValue(house)); } var newHouseResponse = await HarryPotterExternalService.GetHouseAsync(houseId); if (newHouseResponse.HasError) { return(response.WithMessages(newHouseResponse.Messages)); } var createNewHouseResponse = HouseModel.Create(newHouseResponse.Data.Value.Name, newHouseResponse.Data.Value.Id); if (createNewHouseResponse.HasError) { return(response.WithMessages(createNewHouseResponse.Messages)); } await HouseRepository.AddAsync(createNewHouseResponse); if (!await Uow.CommitAsync()) { return(response.WithCriticalError("Failed to try to save the House")); } return(response.SetValue(createNewHouseResponse)); }
public async Task <Response <CharacterModel> > CreateAsync(CreateCharacterDto dto, HouseModel house) { var response = Response <CharacterModel> .Create(); var characterHouse = new CharacterHouse(house); var createCharacterResponse = CharacterModel.Create(dto.Name, dto.Role, dto.School, characterHouse, dto.Patronus); if (createCharacterResponse.HasError) { return(response.WithMessages(createCharacterResponse.Messages)); } await CharacterRepository.AddAsync(createCharacterResponse); if (!await Uow.CommitAsync()) { return(response.WithCriticalError("Failed to try to save the character")); } return(response.SetValue(createCharacterResponse)); }
internal CharacterHouse(HouseModel house) : base(Guid.NewGuid()) { House = house; HouseId = house.Id; }