Код IT
← Каталог

Система управления библиотекой книг на CSharp — Пример сервиса выдачи

Фрагмент из «Система управления библиотекой книг на CSharp»: Пример сервиса выдачи.

C# main.cs
public class LoanService
{
    private readonly LibraryContext _context;

    public LoanService(LibraryContext context)
    {
        _context = context;
    }

    public async Task<Result> IssueBookAsync(int bookId, int readerId)
    {
        var activeLoan = await _context.Loans
            .FirstOrDefaultAsync(l => l.BookId == bookId && !l.IsReturned);
        
        if (activeLoan != null)
            return Result.Failure("Книга уже выдана");

        var loan = new Loan
        {
            BookId = bookId,
            ReaderId = readerId,
            IssueDate = DateTime.UtcNow
        };

        _context.Loans.Add(loan);
        await _context.SaveChangesAsync();
        return Result.Success();
    }

    public async Task<Result> ReturnBookAsync(int loanId)
    {
        var loan = await _context.Loans.FindAsync(loanId);
        if (loan == null || loan.IsReturned)
            return Result.Failure("Неверный ID выдачи или книга уже возвращена");

        loan.ReturnDate = DateTime.UtcNow;
        await _context.SaveChangesAsync();
        return Result.Success();
    }
}
public class LoanService
{
    private readonly LibraryContext _context;

    public LoanService(LibraryContext context)
    {
        _context = context;
    }

    public async Task<Result> IssueBookAsync(int bookId, int readerId)
    {
        var activeLoan = await _context.Loans
            .FirstOrDefaultAsync(l => l.BookId == bookId && !l.IsReturned);
        
        if (activeLoan != null)
            return Result.Failure("Книга уже выдана");

        var loan = new Loan
        {
            BookId = bookId,
            ReaderId = readerId,
            IssueDate = DateTime.UtcNow
        };

        _context.Loans.Add(loan);
        await _context.SaveChangesAsync();
        return Result.Success();
    }

    public async Task<Result> ReturnBookAsync(int loanId)
    {
        var loan = await _context.Loans.FindAsync(loanId);
        if (loan == null || loan.IsReturned)
            return Result.Failure("Неверный ID выдачи или книга уже возвращена");

        loan.ReturnDate = DateTime.UtcNow;
        await _context.SaveChangesAsync();
        return Result.Success();
    }
}