Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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);
        }