Sobes.tech
Middle+

Vəzifə: Sizdən yeni funksiyanın kodunu nəzərdən keçirməyiniz istənilib, onun mahiyyəti turu (aviasiya bileti və oteldən ibarət) bron etmək imkanını təmin etməkdir. Uçuş bileti və tur üçün ayrı-ayrılıqda bron etmək funksiyaları artıq mövcuddur, bu vəzifədən gözlənilir ki, bütün turu və ya onun heç bir hissəsini rezerve edən vahid metod təqdim etsin.

sobes.tech Süni İntellekt

AI-dan cavab

В такой задаче важно обеспечить атомарность операции бронирования тура, чтобы либо оба компонента (авиабилет и отель) были забронированы, либо ни один — иначе возможна рассинхронизация данных.

Основные моменты для ревью:

  • Использовать транзакцию, которая охватывает оба бронирования.
  • Обработать возможные ошибки каждого шага, чтобы при неудаче откатить изменения.
  • Проверить, что вызовы к существующим методам бронирования авиабилета и отеля поддерживают откат или отмену.
  • Логировать процесс для отладки и аудита.

Пример на C# с использованием транзакции (псевдокод):

using(var transaction = dbContext.Database.BeginTransaction())
{
    try
    {
        BookFlight(flightDetails);
        BookHotel(hotelDetails);
        transaction.Commit();
    }
    catch(Exception)
    {
        transaction.Rollback();
        throw;
    }
}

Если методы бронирования не поддерживают транзакции, нужно реализовать компенсационные действия (отмена бронирования), чтобы при ошибке откатить уже сделанные брони.