public void UpdateLoan(int userID, int bookID, PatchLoanViewModel loan) { try { loanRepository.UpdateLoan(userID, bookID, loan); } catch (Exception ex) { throw ex; } }
public IActionResult UpdateLoan(int userID, int bookID, [FromBody] PatchLoanViewModel loan) { if (!ModelState.IsValid) { var error = new ErrorDTO { Code = 412, Message = "Validation error. Invalid input" }; return(StatusCode(error.Code, error)); } try { bookService.UpdateLoan(userID, bookID, loan); return(NoContent()); } catch (NotFoundException ex) { var error = new ErrorDTO { Code = 404, Message = ex.Message }; return(StatusCode(error.Code, error)); } catch (InvalidDataException ex) { var error = new ErrorDTO { Code = 409, Message = ex.Message }; return(StatusCode(error.Code, error)); } catch (Exception ex) { var error = new ErrorDTO { Code = 500, Message = ex.Message }; return(StatusCode(error.Code, error)); } }
public void UpdateLoan(int userID, int bookID, PatchLoanViewModel loan) { // Check if user exists if (!db.Users.Where(u => u.ID == userID).Any()) { throw new NotFoundException(userNotFoundMessage); } // Check if book exists if (!db.Books.Where(b => b.ID == bookID).Any()) { throw new NotFoundException(bookNotFoundMessage); } // Get entity from database var loanEntity = db.Loans .Where(l => l.UserID == userID && l.BookID == bookID && l.ReturnDate == null) .SingleOrDefault(); if (loanEntity == null) { throw new NotFoundException(loanNotFoundMessage); } // Check if loan date is before return date if (loan.ReturnDate.HasValue) { if ((loan.LoanDate.HasValue && loan.ReturnDate.Value < loan.LoanDate.Value) || (!loan.LoanDate.HasValue && loan.ReturnDate.Value < loanEntity.LoanDate)) { throw new InvalidDataException(dateNonsenseMessage); } } // Loan date if (loan.LoanDate.HasValue) { loanEntity.LoanDate = loan.LoanDate.Value; } // Return date if (loan.ReturnDate.HasValue) { loanEntity.ReturnDate = loan.ReturnDate.Value; } db.Loans.Update(loanEntity); db.SaveChanges(); }