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); } }
public async Task <IActionResult> ReturnLibraryItem(int id) { var command = new ReturnLibraryItemCommand(id); var result = await _mediator.Send(command); return(Ok(result)); }