public async Task <BorrowInformationDTO> Handle(ReturnLibraryItemCommand request, CancellationToken cancellationToken)
        {
            var libraryItem = await _unitOfWork.GetRepository <LibraryItem>().FindAsync(request.Id);

            if (!libraryItem.IsBorrowable && libraryItem.Type != nameof(ReferenceBook))
            {
                libraryItem.IsBorrowable = true;
                libraryItem.BorrowDate   = DateTime.MinValue;
                libraryItem.Borrower     = null;
                _unitOfWork.GetRepository <LibraryItem>().Update(libraryItem);
                _unitOfWork.SaveChanges();
                var returnedLibraryItem = _mapper.Map <BorrowInformationDTO>(libraryItem);
                returnedLibraryItem.BorrowMessage = "Item successfully returned";
                return(returnedLibraryItem);
            }
            else if (libraryItem.Type == nameof(ReferenceBook))
            {
                var returnedLibraryItem = _mapper.Map <BorrowInformationDTO>(libraryItem);
                returnedLibraryItem.BorrowMessage = "Reference book can't be returned";
                return(returnedLibraryItem);
            }
            else
            {
                var returnedLibraryItem = _mapper.Map <BorrowInformationDTO>(libraryItem);
                returnedLibraryItem.BorrowMessage = "Item is not borrowed";
                return(returnedLibraryItem);
            }
        }
Exemple #2
0
        public async Task <IActionResult> ReturnLibraryItem(int id)
        {
            var command = new ReturnLibraryItemCommand(id);
            var result  = await _mediator.Send(command);

            return(Ok(result));
        }