Ejemplo n.º 1
0
        public void Test2()
        {
            List <Booking> actual = new List <Booking>();

            actual.Add(Booking.makeBooking(0, 5));
            actual.Add(Booking.makeBooking(7, 13));
            actual.Add(Booking.makeBooking(3, 9));
            actual.Add(Booking.makeBooking(5, 7));
            actual.Add(Booking.makeBooking(6, 6));
            actual.Add(Booking.makeBooking(0, 4));
            BookingConfirmation.CheckBooking(3, actual);

            List <Booking> expected = new List <Booking>();

            expected.Add(Booking.makeBooking(0, 5));
            expected.Add(Booking.makeBooking(7, 13));
            expected.Add(Booking.makeBooking(3, 9));
            expected.Add(Booking.makeBooking(5, 7));
            expected.Add(Booking.makeBooking(6, 6));
            expected.Add(Booking.makeBooking(0, 4));

            //all items accepted test
            foreach (var i in expected)
            {
                i.isBooked = true;
            }

            CollectionAssert.AreEqual(expected, actual);
        }
Ejemplo n.º 2
0
        public void Test3()
        {
            List <Booking> actual = new List <Booking>();

            actual.Add(Booking.makeBooking(1, 3));
            actual.Add(Booking.makeBooking(2, 5));
            actual.Add(Booking.makeBooking(1, 9));
            actual.Add(Booking.makeBooking(0, 15));
            BookingConfirmation.CheckBooking(3, actual);

            List <Booking> expected = new List <Booking>();

            expected.Add(Booking.makeBooking(1, 3));
            expected.Add(Booking.makeBooking(2, 5));
            expected.Add(Booking.makeBooking(1, 9));
            expected.Add(Booking.makeBooking(0, 15));

            foreach (var i in expected)
            {
                i.isBooked = true;
            }

            //last item declined test
            expected[expected.Count - 1].isBooked = false;

            CollectionAssert.AreEqual(expected, actual);
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogInformation("Booking Processing Service Started");

            // Magic line to yield control of this background service back to the rest of the startup process
            await Task.Yield();

            // Create new consumer and producer
            var kafkaConsumerService = new KafkaConsumerService(_logger, _consumerConfig, KafkaTopics.TOPIC_BOOKING_REQUEST);
            var kafkaProducerService = new KafkaProducerService(_logger, _producerConfig, KafkaTopics.TOPIC_BOOKING_CONFIRMATION);

            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    // Wait for a new booking request
                    var bookingRequest = kafkaConsumerService.WaitAndRead <MovieBooking>(stoppingToken);
                    if (bookingRequest != null)
                    {
                        _logger.LogInformation($"Processing new booking: {bookingRequest}");

                        // Create new booking confirmation based on a request
                        var bookingConfirmation = new BookingConfirmation(bookingRequest);

                        // Publish a booking confirmation to a Kafka stream
                        await kafkaProducerService.Write(bookingConfirmation);
                    }
                }
                catch (Exception e)
                {
                    _logger.LogError($"Error in processing : {e.Message}");
                }
            }
        }
Ejemplo n.º 4
0
        public static void AddMasterData(BookingConfirmationViewModel model)
        {
            var manager             = PlugInManager.GetBookingDataManager();
            var bookingconfirmation = new BookingConfirmation();

            bookingconfirmation.Id = Guid.NewGuid().ToString();
            bookingconfirmation.BookingInquiryNummer      = model.BookingInquiryNummer;
            bookingconfirmation.BookingConfirmationNummer = model.BookingConfirmationNummer;
            bookingconfirmation.BookingProcessId          = model.BookingProcessId;
            bookingconfirmation.docType                     = model.docType;
            bookingconfirmation.OfferInfo.Country           = model.Country;
            bookingconfirmation.OfferInfo.PlaceName         = model.PlaceName;
            bookingconfirmation.OfferInfo.SiteName          = model.SiteName;
            bookingconfirmation.OfferInfo.TourOperatorCode  = model.TourOperatorCode;
            bookingconfirmation.OfferInfo.CheckIn           = model.CheckIn;
            bookingconfirmation.OfferInfo.CheckOut          = model.CheckOut;
            bookingconfirmation.TravelApplicant.FirstName   = model.FirstName;
            bookingconfirmation.TravelApplicant.LastName    = model.LastName;
            bookingconfirmation.TravelApplicant.Contry      = model.TravelerCountry;
            bookingconfirmation.TravelApplicant.Adress      = model.Address;
            bookingconfirmation.OfferInfo.OfferName         = model.OfferName;
            bookingconfirmation.TravelApplicant.MobilePhone = model.MobilePhone;
            bookingconfirmation.TravelApplicant.Phone       = model.Phone;
            bookingconfirmation.TravelApplicant.ZipCode     = model.ZipCode;
            bookingconfirmation.TravelApplicant.Place       = model.PlaceName;
            bookingconfirmation.HtmlDocumentView            = model.HtmlDocumentView;

            manager.AddMasterData(bookingconfirmation);
        }
Ejemplo n.º 5
0
        public void AddMasterData(BookingConfirmation document)
        {
            if (String.IsNullOrEmpty(document.Id))
            {
                document.Id = Guid.NewGuid().ToString();
            }

            collectionBookingConfirmation.InsertOne(document);
        }
Ejemplo n.º 6
0
        public void Test1b()
        {
            List <Booking> actual = new List <Booking>();

            actual.Add(Booking.makeBooking(200, 400));
            BookingConfirmation.CheckBooking(1, actual);

            List <Booking> expected = new List <Booking>();

            expected.Add(Booking.makeBooking(200, 400));
            expected[0].isBooked = false;


            CollectionAssert.AreEqual(expected, actual);
        }
Ejemplo n.º 7
0
        public void Test5()
        {
            List <Booking> actual = new List <Booking>();

            actual.Add(Booking.makeBooking(1, 3));
            actual.Add(Booking.makeBooking(0, 4));
            actual.Add(Booking.makeBooking(2, 3));
            actual.Add(Booking.makeBooking(5, 5));
            actual.Add(Booking.makeBooking(4, 10));
            actual.Add(Booking.makeBooking(10, 10));
            actual.Add(Booking.makeBooking(6, 7));
            actual.Add(Booking.makeBooking(8, 10));
            actual.Add(Booking.makeBooking(8, 9));
            BookingConfirmation.CheckBooking(2, actual);

            List <Booking> expected = new List <Booking>();

            expected.Add(Booking.makeBooking(1, 3));
            expected.Add(Booking.makeBooking(0, 4));
            expected.Add(Booking.makeBooking(2, 3));
            expected.Add(Booking.makeBooking(5, 5));
            expected.Add(Booking.makeBooking(4, 10));
            expected.Add(Booking.makeBooking(10, 10));
            expected.Add(Booking.makeBooking(6, 7));
            expected.Add(Booking.makeBooking(8, 10));
            expected.Add(Booking.makeBooking(8, 9));

            foreach (var i in expected)
            {
                i.isBooked = true;
            }

            //third is false and second last is false
            expected[2].isBooked = false;
            expected[expected.Count - 2].isBooked = false;


            CollectionAssert.AreEqual(expected, actual);
        }
Ejemplo n.º 8
0
        public async Task <IActionResult> Update([FromRoute] string encryptedReferenceCode, [FromBody] BookingConfirmation bookingConfirmation)
        {
            var referenceCode = _urlGenerationService.ReadReferenceCode(encryptedReferenceCode);

            return(NoContentOrBadRequest(await _bookingConfirmationService.Update(referenceCode, bookingConfirmation)));
        }
Ejemplo n.º 9
0
        public static void MapResponseToDB(BookingRes value, string SessionID, string BN)
        {
            try {
                HotelBedEntity      db      = new HotelBedEntity();
                BookingConfirmation booking = new BookingConfirmation();
                booking.cancellationPolicy = value.booking.modificationPolicies.cancellation.ToString();
                booking.clientReference    = value.booking.clientReference;
                booking.CreationData       = value.booking.creationDate;
                booking.CreationUser       = value.booking.creationUser;
                booking.Currency           = value.booking.currency;
                booking.HolderName         = value.booking.holder.name;
                booking.HolderSurName      = value.booking.holder.surname;
                booking.invoiceCompany     = value.booking.invoiceCompany.company;
                booking.invoiceCompanyCode = value.booking.invoiceCompany.code;
                booking.modificationPolicy = value.booking.modificationPolicies.modification.ToString();
                booking.PendingAmount      = value.booking.pendingAmount.ToString();
                booking.Reference          = value.booking.reference;
                booking.RegistrationNumber = value.booking.invoiceCompany.registrationNumber;
                booking.SessionID          = SessionID;
                booking.Status             = value.booking.status;
                booking.supplier           = value.booking.hotel.supplier.name;
                booking.Remark             = value.booking.hotel.supplier.vatNumber;
                booking.totalAmount        = value.booking.totalNet.ToString();
                booking.response           = Newtonsoft.Json.JsonConvert.SerializeObject(value.booking);
                //  var hotel = db.SearchHotelDatas.FirstOrDefault(a => a.SessionID == SessionID);
                booking.BookingNum = BN;
                db.BookingConfirmations.Add(booking);
                db.SaveChanges();
                foreach (var item in value.booking.hotel.rooms)
                {
                    foreach (var rate in item.rates)
                    {
                        BookingRoom searchRoom = new BookingRoom();
                        searchRoom.Adult        = rate.adults;
                        searchRoom.rateComments = rate.rateComments;
                        searchRoom.boardCode    = rate.boardCode;
                        searchRoom.boardName    = rate.boardName;
                        searchRoom.Child        = rate.children;

                        searchRoom.hotelMandatory = rate.hotelMandatory.ToString();
                        searchRoom.Net            = rate.net;
                        searchRoom.packaging      = rate.packaging.ToString();
                        searchRoom.paymentType    = rate.paymentType;
                        searchRoom.rateClass      = rate.rateClass;

                        searchRoom.rooms = rate.rooms;

                        searchRoom.code        = item.code;
                        searchRoom.Name        = item.name;
                        searchRoom.rooms       = rate.rooms;
                        searchRoom.BookingID   = booking.ID;
                        searchRoom.SearchId    = SessionID;
                        searchRoom.sellingRate = rate.sellingRate;
                        db.BookingRooms.Add(searchRoom);
                        db.SaveChanges();
                        foreach (var P in item.paxes)
                        {
                            Pax pa = new Pax();
                            pa.Name    = P.name;
                            pa.RoomID  = searchRoom.ID;
                            pa.SurName = P.surname;
                            pa.type    = P.type;
                            db.Paxes.Add(pa);
                        }
                        foreach (var policy in rate.cancellationPolicies)
                        {
                            PolicyBooking policyBooking = new PolicyBooking();
                            policyBooking.Amount        = policy.amount;
                            policyBooking.BookingRoomID = searchRoom.ID;
                            policyBooking.FromDate      = policy.from.ToString();
                            db.PolicyBookings.Add(policyBooking);
                        }
                        db.SaveChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                var requestData = JsonConvert.SerializeObject(ex);

                LoggingHelper.WriteToFile("HBLogs/BookingException", "BookingException_" + SessionID, "BookingException", requestData);

                throw (ex);
            }
        }
Ejemplo n.º 10
0
        public void UpdateMasterData(BookingConfirmation document)
        {
            var filter = Builders <BookingConfirmation> .Filter.Eq(s => s.Id, document.Id);

            collectionBookingConfirmation.ReplaceOne(filter, document);
        }
Ejemplo n.º 11
0
        private static void CreateBookingItems(BookingProcess bookingProcess, DateTime?bookingdate)
        {
            List <BookingProcessItem> list    = new List <BookingProcessItem>();
            BookingInquiry            inquiry = new BookingInquiry();

            inquiry.BookingProcessId = bookingProcess.Id;
            inquiry.CreateDate       = bookingdate != null ? (DateTime)bookingdate : DateTime.Now;
            inquiry.DocumentId       = bookingProcess.BookingNumber;
            inquiry.docType          = "BookingInquiry";
            manager.AddMasterData(inquiry);

            var bin = manager.GetBookingInquiryByBookingId(bookingProcess.Id);


            var bookinginquiry = new BookingProcessItem();

            bookinginquiry.BookingProcessTyp = BookingProcessItemTyp.BookingInquiry;
            bookinginquiry.CreateDate        = bookingdate != null ? (DateTime)bookingdate : DateTime.Now;
            bookinginquiry.DocumentId        = bin.Id;
            bookinginquiry.LastChange        = DateTime.Now;
            bookinginquiry.DocumentNr        = bookingProcess.BookingNumber;
            bookinginquiry.DocumentTitel     = "Sync";
            bookinginquiry.DocumentStatus    = DocumentStatus.Active;

            ProviderAnnouncement pan = new ProviderAnnouncement();

            pan.BookingProcessId = bookingProcess.Id;
            pan.CreateDate       = bookingdate != null ? (DateTime)bookingdate : DateTime.Now;
            pan.DocumentId       = bookingProcess.BookingNumber;
            pan.docType          = "ProviderAnnouncement";
            manager.AddMasterData(pan);

            var p = manager.GetProviderAnnouncementByBookingId(bookingProcess.Id);

            var providerannouncement = new BookingProcessItem();

            providerannouncement.BookingProcessTyp = BookingProcessItemTyp.ProviderAnnouncement;
            providerannouncement.CreateDate        = bookingdate != null ? (DateTime)bookingdate : DateTime.Now;
            providerannouncement.DocumentId        = p.Id;
            providerannouncement.LastChange        = DateTime.Now;
            providerannouncement.DocumentNr        = bookingProcess.BookingNumber;
            providerannouncement.DocumentTitel     = "Sync";
            providerannouncement.DocumentStatus    = DocumentStatus.Active;

            ProviderConfirmation providerconfirmation = new ProviderConfirmation();

            providerconfirmation.BookingProcessId = bookingProcess.Id;
            providerconfirmation.CreateDate       = bookingdate != null ? ((DateTime)bookingdate).AddDays(1) : DateTime.Now;
            providerconfirmation.DocumentId       = bookingProcess.BookingNumber;
            providerconfirmation.docType          = "ProviderConfirmation";
            manager.AddMasterData(providerconfirmation);

            var pconfirmation = manager.GetProviderConfirmationByBookingId(bookingProcess.Id);
            var pconf         = new BookingProcessItem();

            pconf.BookingProcessTyp = BookingProcessItemTyp.ProviderConfirmation;
            pconf.CreateDate        = bookingdate != null ? ((DateTime)bookingdate).AddDays(1) : DateTime.Now;
            pconf.DocumentId        = pconfirmation.Id;
            pconf.LastChange        = DateTime.Now;
            pconf.DocumentNr        = bookingProcess.BookingNumber;
            pconf.DocumentTitel     = "Sync";
            pconf.DocumentStatus    = DocumentStatus.Active;


            BookingConfirmation bookingConfirmation = new BookingConfirmation();

            bookingConfirmation.BookingProcessId = bookingProcess.Id;
            bookingConfirmation.CreateDate       = bookingdate != null ? ((DateTime)bookingdate).AddDays(1) : DateTime.Now;

            bookingConfirmation.DocumentId = bookingProcess.BookingNumber;
            bookingConfirmation.docType    = "BookingConfirmation";
            manager.AddMasterData(bookingConfirmation);

            var bconfirmation = manager.GetBookingConfirmationByBookingId(bookingProcess.Id);

            var bconf = new BookingProcessItem();

            bconf.BookingProcessTyp = BookingProcessItemTyp.BookingConfirmation;
            bconf.CreateDate        = bookingdate != null ? ((DateTime)bookingdate).AddDays(1) : DateTime.Now;
            bconf.DocumentId        = bconfirmation.Id;
            bconf.LastChange        = DateTime.Now;
            bconf.DocumentNr        = bookingProcess.BookingNumber;
            bconf.DocumentTitel     = "Sync";
            bconf.DocumentStatus    = DocumentStatus.Active;

            CustomerVoucher customerVoucher = new CustomerVoucher();

            customerVoucher.BookingProcessId = bookingProcess.Id;
            customerVoucher.CreateDate       = bookingProcess.OfferInfo.CheckIn.AddDays(-20);
            customerVoucher.DocumentId       = bookingProcess.BookingNumber;
            customerVoucher.docType          = "CustomerVoucher";
            manager.AddMasterData(customerVoucher);

            var cvoucher = manager.GetCustomerVoucherByBookingId(bookingProcess.Id);

            var cvouchera = new BookingProcessItem();

            cvouchera.BookingProcessTyp = BookingProcessItemTyp.CustomerVoucher;
            cvouchera.CreateDate        = bookingProcess.OfferInfo.CheckIn.AddDays(-20);
            cvouchera.DocumentId        = cvoucher.Id;
            cvouchera.LastChange        = DateTime.Now;
            cvouchera.DocumentNr        = bookingProcess.BookingNumber;
            cvouchera.DocumentTitel     = "Sync";
            cvouchera.DocumentStatus    = DocumentStatus.Active;


            BookingInvoice bookingInvoice = new BookingInvoice();

            bookingInvoice.BookingProcessId = bookingProcess.Id;
            bookingInvoice.CreateDate       = bookingProcess.OfferInfo.CheckIn.AddDays(-20);
            bookingInvoice.DocumentId       = bookingProcess.BookingNumber;
            bookingInvoice.docType          = "BookingInvoice";
            manager.AddMasterData(bookingInvoice);

            var bookinvoice = manager.GetBookingInvoiceByBookingId(bookingProcess.Id);
            var binvoice    = new BookingProcessItem();

            binvoice.BookingProcessTyp = BookingProcessItemTyp.BookingInvoice;
            binvoice.CreateDate        = bookingProcess.OfferInfo.CheckIn.AddDays(-20);
            binvoice.DocumentId        = bookinvoice.Id;
            binvoice.LastChange        = DateTime.Now;
            binvoice.DocumentNr        = bookingProcess.BookingNumber;
            binvoice.DocumentTitel     = "Sync";
            binvoice.DocumentStatus    = DocumentStatus.Active;

            list.AddRange(new BookingProcessItem[] { bookinginquiry, providerannouncement, pconf, bconf, cvouchera, binvoice });

            bookingProcess.BookingProcessItemList = list;
        }