/// <summary> /// افزودن کتاب /// </summary> /// <param name="bookDto"></param> /// <param name="cancellationToken"></param> /// <returns></returns> public async Task <BookSelectDto> AddBookAsync(BookDto bookDto, CancellationToken cancellationToken) { Book Book = bookDto.ToEntity(); int fieldId = 0; if (bookDto.FieldId == FieldStatus.N) { fieldId = 1; } if (bookDto.FieldId == FieldStatus.C) { fieldId = 2; } if (bookDto.FieldId == FieldStatus.PC) { fieldId = 3; } if (bookDto.FieldId == FieldStatus.S) { fieldId = 4; } if (bookDto.FieldId == FieldStatus.M) { fieldId = 5; } if (bookDto.FieldId == FieldStatus.O) { fieldId = 6; } await _Book.AddAsync(Book, cancellationToken); if (bookDto.FieldId != FieldStatus.N) { var field = await _filedRepository.TableNoTracking.Where(c => c.Id == fieldId).SingleOrDefaultAsync(cancellationToken); if (field == null) { throw new BadRequestException("رشته مورد نظر یافت نشد"); } Book.FieldId = fieldId; await _Book.UpdateAsync(Book, cancellationToken); } else { await _Book.UpdateAsync(Book, cancellationToken); } List <Isbn> isbns = new List <Isbn>(); foreach (string item in bookDto.BooksISBN) { isbns.Add(new Isbn { BookId = Book.Id, Value = item }); } await _isbnRepository.AddRangeAsync(isbns, cancellationToken); BookSelectDto resultDto = await _repository.TableNoTracking.Include(c => c.ISBNs).ProjectTo <BookSelectDto>().SingleOrDefaultAsync(p => p.Id.Equals(Book.Id), cancellationToken); return(resultDto); }
public async Task <BookSelectDto> FindBookByIdAsync(int id, CancellationToken cancellationToken) { BookSelectDto model = await _Book.TableNoTracking.Where(c => c.Id == id && c.BookIsDeleted == false).ProjectTo <BookSelectDto>().SingleOrDefaultAsync(cancellationToken); return(model); }