public override async Task <ValidationResult> ValidateAsync(ValidationContext <IUpdateEpisodeModel> context, CancellationToken cancellation = default) { Episode?episode = await _episodeRepository.GetByOrDefaultAsync(x => x.Id == context.InstanceToValidate.Id); if (episode == null) { throw new EntityNotFoundException <Episode>(context.InstanceToValidate.Id); } episode = await _episodeRepository.GetByOrDefaultAsync(x => x.Name == context.InstanceToValidate.Name && x.Id != context.InstanceToValidate.Id); if (episode != null) { throw new CannotUpdateEpisodeEpisodeWithSameNameAlreadyExistException(context.InstanceToValidate.Id, context.InstanceToValidate.Name); } return(await base.ValidateAsync(context, cancellation)); }
private async Task ValidateEpisodeAlreadyExists(ValidationContext <ICreateEpisodeModel> context) { Episode episode = await _episodeRepository.GetByOrDefaultAsync(x => x.Name == context.InstanceToValidate.Name); if (episode != null) { throw new EntityAlreadyExistException(context.InstanceToValidate.Name); } }
private async Task ValidateEpisodesExistence(ValidationContext <ICreateCharacterModel> context) { List <string> episodeNames = context.InstanceToValidate.Episodes; foreach (string episodeNameToAssign in episodeNames) { Episode?episode = await _episodeRepository.GetByOrDefaultAsync(x => x.Name == episodeNameToAssign); if (episode == null) { throw new CannotCreateCharacterWithNotExistedEpisodeException(episodeNameToAssign); } } }