コード例 #1
0
 public void UpdateLoan(int userID, int bookID, PatchLoanViewModel loan)
 {
     try
     {
         loanRepository.UpdateLoan(userID, bookID, loan);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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();
        }