public async Task <AnnounceSubScreenForReturnDto> Create(AnnounceSubScreenForCreationDto creationDto) { var checkById = await announceSubScreenDal.GetAsync(x => x.SubScreenId == creationDto.SubScreenId && x.AnnounceId == creationDto.AnnounceId); if (checkById != null) { throw new RestException(HttpStatusCode.BadRequest, new { AlreadyExist = Messages.SubScreenAlreadyExist }); } var subScreenFromRepo = await subSCreenDal.GetAsync(x => x.Id == creationDto.SubScreenId); if (subScreenFromRepo == null) { throw new RestException(HttpStatusCode.BadRequest, new { NotFound = Messages.NotFoundSubSCreen }); } var checkAnnounceFromRepo = await announceDal.GetAsync(x => x.Id == creationDto.AnnounceId); if (checkAnnounceFromRepo == null) { throw new RestException(HttpStatusCode.BadRequest, new { NotFound = Messages.NotFoundAnnounce }); } var screenFromRepo = await screenDal.GetAsync(x => x.Id == creationDto.ScreenId); if (screenFromRepo == null) { throw new RestException(HttpStatusCode.BadRequest, new { NotFound = Messages.NotFoundScreen }); } var subScreenForReturn = new AnnounceSubScreen() { SubScreenId = subScreenFromRepo.Id, ScreenId = screenFromRepo.Id, AnnounceId = checkAnnounceFromRepo.Id, SubScreenName = subScreenFromRepo.Name, SubScreenPosition = subScreenFromRepo.Position }; var createSubScreen = await announceSubScreenDal.Add(subScreenForReturn); var spec = new AnnounSubScreenWithSubScreenForReturnSpecification(createSubScreen.Id); var getFromRepo = await announceSubScreenDal.GetEntityWithSpecAsync(spec); return(mapper.Map <AnnounceSubScreen, AnnounceSubScreenForReturnDto>(getFromRepo)); }