public AccommodationBookingDetails(string referenceCode, string clientReferenceCode, string agentReference, BookingStatuses status, int numberOfNights, DateTime checkInDate, DateTime checkOutDate, AccommodationLocation location, ContactInfo contactInfo, string accommodationId, string accommodationName, AccommodationInfo accommodationInfo, DateTime?deadlineDate, List <BookedRoom> roomDetails, int numberOfPassengers, List <CancellationPolicy> cancellationPolicies, DateTime created, string propertyOwnerConfirmationCode, bool isAdvancePurchaseRate) { ReferenceCode = referenceCode; ClientReferenceCode = clientReferenceCode; AgentReference = agentReference; Status = status; NumberOfNights = numberOfNights; CheckInDate = checkInDate; CheckOutDate = checkOutDate; Location = location; ContactInfo = contactInfo; AccommodationId = accommodationId; AccommodationName = accommodationName; AccommodationInfo = accommodationInfo; DeadlineDate = deadlineDate; NumberOfPassengers = numberOfPassengers; CancellationPolicies = cancellationPolicies; Created = created; RoomDetails = roomDetails ?? new List <BookedRoom>(0); PropertyOwnerConfirmationCode = propertyOwnerConfirmationCode; IsAdvancePurchaseRate = isAdvancePurchaseRate; }
private void BindBookingStatuses() { DataTable table = new BookingStatuses().SelectAll(); drpBookingStatus.DataSource = table; drpBookingStatus.DataTextField = table.Columns["BookingStatus_EN"].ToString(); drpBookingStatus.DataValueField = table.Columns["BookingStatus_ID"].ToString(); drpBookingStatus.DataBind(); }
public BookingOrder(string id, BookingStatuses status, string referenceCode, DateTime checkInDate, DateTime checkOutDate, List <RateDetails> rateDetails, Models.Responses.Bookings.PaymentDetails paymentDetails, int accommodationId, string accommodationName) { Id = id; Status = status; ReferenceCode = referenceCode; CheckInDate = checkInDate; CheckOutDate = checkOutDate; RateDetails = rateDetails; PaymentDetails = paymentDetails; AccommodationId = accommodationId; AccommodationName = accommodationName; }
public SlimBooking(string clientReferenceCode, string referenceCode, DateTime checkInDate, DateTime checkOutDate, string accommodationId, MoneyAmount totalPrice, bool isAdvancePurchaseRate, BookingStatuses status, string mainPassengerName) { ClientReferenceCode = clientReferenceCode; ReferenceCode = referenceCode; CheckInDate = checkInDate; CheckOutDate = checkOutDate; AccommodationId = accommodationId; TotalPrice = totalPrice; IsAdvancePurchaseRate = isAdvancePurchaseRate; Status = status; MainPassengerName = mainPassengerName; }
public async Task <Result> ChangeStatus(Booking booking, BookingStatuses status, DateTime date, ApiCaller apiCaller, BookingChangeReason reason) { if (booking.Status == status) { return(Result.Success()); } await SetStatus(booking, status); var message = new BookingStatusChangeInfo { BookingId = booking.Id, ReferenceCode = booking.ReferenceCode, Status = EnumFormatters.FromDescription(status), ChangeTime = _dateTimeProvider.UtcNow(), AccommodationName = booking.AccommodationName, AccommodationPhoto = booking.AccommodationInfo?.Photo, CheckInDate = booking.CheckInDate.DateTime, CheckOutDate = booking.CheckOutDate.DateTime }; await _notificationsService.Send(apiCaller, JsonDocument.Parse(JsonSerializer.SerializeToUtf8Bytes(message, new JsonSerializerOptions(JsonSerializerDefaults.Web))), Notifications.Enums.NotificationTypes.BookingStatusChanged); // Temporary hot-fix for notifying admins about bookings statuses changed to "Pending" or "Waiting for response" // TODO: remove when we have appropriate admin panel booking monitoring if (status == BookingStatuses.Pending || status == BookingStatuses.WaitingForResponse) { var(isSuccess, _, bookingInfo, _) = await GetBookingInfo(booking.ReferenceCode); if (isSuccess) { await _bookingNotificationService.NotifyAdminsStatusChanged(bookingInfo); } } await _bookingChangeLogService.Write(booking, status, date, apiCaller, reason); return(status switch { BookingStatuses.Confirmed => await ProcessConfirmation(booking, date), BookingStatuses.Cancelled => await ProcessCancellation(booking, date, apiCaller), BookingStatuses.Rejected => await ProcessDiscarding(booking, apiCaller), BookingStatuses.Invalid => await ProcessDiscarding(booking, apiCaller), BookingStatuses.Discarded => await ProcessDiscarding(booking, apiCaller), BookingStatuses.ManualCorrectionNeeded => await ProcessManualCorrectionNeeding(booking, apiCaller), BookingStatuses.PendingCancellation => Result.Success(), BookingStatuses.WaitingForResponse => Result.Success(), BookingStatuses.Pending => Result.Success(), _ => throw new ArgumentOutOfRangeException(nameof(status), status, "Invalid status value") });
private BookingWebhookData CreateWebhookData(string bookingReferenceCode, BookingStatuses bookingStatus) { var timestamp = CalculateTimestamp(); return(new BookingWebhookData { Data = new BookingStatusData { Status = bookingStatus, ReferenceCode = bookingReferenceCode }, Signature = CalculateSignature(timestamp), Timestamp = timestamp }); }
public Booking(string clientReferenceCode, string referenceCode, DateTime created, DateTime checkInDate, DateTime checkOutDate, MoneyAmount totalPrice, BookingStatuses status, List <BookedRoom> rooms, string accommodationId, List <CancellationPolicy> cancellationPolicies, DateTime?cancelled, bool isPackage) { ClientReferenceCode = clientReferenceCode; ReferenceCode = referenceCode; Created = created; CheckInDate = checkInDate; CheckOutDate = checkOutDate; TotalPrice = totalPrice; Status = status; Rooms = rooms; AccommodationId = accommodationId; CancellationPolicies = cancellationPolicies; Cancelled = cancelled; IsPackage = isPackage; }
public AccommodationBookingDetails(string referenceCode, string agentReference, BookingStatuses status, int numberOfNights, DateTime checkInDate, DateTime checkOutDate, AccommodationLocation location, ContactInfo contactInfo, string accommodationId, string accommodationName, DateTime?deadlineDate, List <BookedRoom> roomDetails, int numberOfPassengers) { ReferenceCode = referenceCode; AgentReference = agentReference; Status = status; NumberOfNights = numberOfNights; CheckInDate = checkInDate; CheckOutDate = checkOutDate; Location = location; ContactInfo = contactInfo; AccommodationId = accommodationId; AccommodationName = accommodationName; DeadlineDate = deadlineDate; NumberOfPassengers = numberOfPassengers; RoomDetails = roomDetails ?? new List <BookedRoom>(0); }
private BookingModel CreateBooking(BookingStatuses bookingStatus, bool addOrderDocuments) { var bookingModel = new BookingModel() { Id = 12345, BookingReference = "RR982-720-1028J", BookingStatus = bookingStatus, BookingType = BookingTypes.StandardOrderVisit, AdditionalRequirements = "Hobbit size seat", CreatedDate = DateTime.Now.Date, CompleteByDate = DateTime.Now.Date.AddDays(10), VisitStartDate = DateTime.Now.Date.AddDays(20), BookingTypeDescription = "Standard Booking", FirstName = "Bilbo", LastName = "Baggins", Email = "*****@*****.**", Phone = "+44(0)123 567 789", ReaderTicket = 9497920, SeatNumber = "14H" }; if (addOrderDocuments) { bookingModel.OrderDocuments = new List <OrderDocumentModel>(); bookingModel.OrderDocuments.Add(new OrderDocumentModel { DocumentReference = "BT 51/6/9730", Description = "Pattern of Lace Curtain Design.", IsReserve = false }); bookingModel.OrderDocuments.Add(new OrderDocumentModel { DocumentReference = "AIR 37/1171", Description = "SHAEF (MAIN AND REAR): Air signals, Transport Command.", IsReserve = false }); bookingModel.OrderDocuments.Add(new OrderDocumentModel { DocumentReference = "C 13/953/44", Description = "Plaintiffs: Thomas Jeffries and another. Defendants: James Price Dale and George Dale.", IsReserve = false }); bookingModel.OrderDocuments.Add(new OrderDocumentModel { DocumentReference = "C 13/953/30", Description = "Delincourt v Delincourt.", IsReserve = true }); } return(bookingModel); }
public async Task Write(Booking booking, BookingStatuses status, DateTime date, ApiCaller apiCaller, BookingChangeReason reason) { var bookingStatusHistoryEntry = new BookingStatusHistoryEntry { BookingId = booking.Id, UserId = apiCaller.Id, ApiCallerType = apiCaller.Type, CreatedAt = date, Status = status, Initiator = GetInitiatorType(apiCaller), Source = reason.Source, Event = reason.Event, Reason = reason.Reason }; if (apiCaller.Type == ApiCallerTypes.Agent) { bookingStatusHistoryEntry.AgencyId = booking.AgencyId; } var entry = _context.BookingStatusHistory.Add(bookingStatusHistoryEntry); await _context.SaveChangesAsync(); _context.Detach(entry.Entity);
private Task <Common.Models.Bookings.BookingOrder> SetStatus(Common.Models.Bookings.BookingOrder bookingOrder, BookingStatuses status) { bookingOrder.Modified = _dateTimeProvider.UtcNow(); bookingOrder.Status = status; return(Update(bookingOrder)); }
private EdoContracts.Accommodations.Enums.BookingStatusCodes GetStatus(BookingStatuses status) => status switch {
public async Task When_booking_has_allowed_status_generation_invoice_should_succeed(BookingStatuses status) { var agentContext = AgentInfoFactory.GetByAgentId(1); var bookingDocumentsService = CreateBookingDocumentsService(new Booking { Id = 1, AgentId = 1, Status = status }, true); var(isSuccess, _) = await bookingDocumentsService.GetActualInvoice(1, agentContext.AgentId); Assert.True(isSuccess); }
public Task <Result> Send(string bookingReferenceCode, BookingStatuses bookingStatus) { var webhookData = CreateWebhookData(bookingReferenceCode, bookingStatus); return(_bookingWebhookClient.Send(webhookData)); }
public async Task Discarding_should_discard_from_supplier_and_return_the_money(BookingStatuses status) { var service = CreateBookingRecordsUpdaterService(); await service.ChangeStatus(Bookings.First(), status, DateTime.UtcNow, ApiCaller, ChangeReason); _supplierOrderServiceMock.Verify(x => x.Discard(It.IsAny <string>())); _bookingMoneyReturnServiceMock.Verify(x => x.ReturnMoney(It.IsAny <Booking>(), It.IsAny <DateTime>(), It.IsAny <ApiCaller>())); }