示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
 internal CharacterHouse(HouseModel house) : base(Guid.NewGuid())
 {
     House   = house;
     HouseId = house.Id;
 }