public void Create_WhenCorrectData_ShouldReturnSuccessfulResponseWithBookingNumber() { // Arrange var flight = PrepareFlightDetails(); var bookingPassenger = new BookingPassenger { Name = "Test", DateBirth = DateTime.Now.Date, Gender = Gender.Male, Address = "TestAddress", Email = "*****@*****.**" }; var createBookingRequest = new CreateBookingRequest { FlightId = 1, Passengers = new List <BookingPassenger> { bookingPassenger } }; Mapper.Reset(); Mapper.Initialize(cfg => cfg.CreateMap <Booking, BookingDto>()); var mockPersonRepository = new Mock <IRepository <Person> >(); var mockBookingRepository = new Mock <IRepository <Booking> >(); var mockFlightRepository = new Mock <IRepository <Flight> >(); mockFlightRepository.Setup(x => x.Get(It.Is <int>(m => m == flight.Id))).Returns(flight); mockBookingRepository.Setup(x => x.GetAll()).Returns(new List <Booking>()); mockPersonRepository.Setup(x => x.GetAll()).Returns(new List <Person>()); var bookingService = new BookingService(Mapper.Instance, mockPersonRepository.Object, mockBookingRepository.Object, mockFlightRepository.Object); // Act var expectedCreateBookingResponse = bookingService.CreateBooking(createBookingRequest); // Assert Assert.IsNotNull(expectedCreateBookingResponse.BookingNumber); }
public void Create_WhenFlightDoesNotExsit_ShouldThrowAppropriateException() { // Arrange var expectedErrorMessage = "Flight with specified ID does not exist."; var flight = PrepareFlightDetails(); var bookingPassenger = new BookingPassenger { Name = "Test", DateBirth = DateTime.Now.Date, Gender = Gender.Male, Address = "TestAddress", Email = "*****@*****.**" }; var createBookingRequest = new CreateBookingRequest { FlightId = 1, Passengers = new List <BookingPassenger> { bookingPassenger } }; Mapper.Reset(); Mapper.Initialize(cfg => cfg.CreateMap <Booking, BookingDto>()); var mockPersonRepository = new Mock <IRepository <Person> >(); var mockBookingRepository = new Mock <IRepository <Booking> >(); var mockFlightRepository = new Mock <IRepository <Flight> >(); mockFlightRepository.Setup(x => x.GetAll()).Returns(new List <Flight>()); mockBookingRepository.Setup(x => x.GetAll()).Returns(new List <Booking>()); mockPersonRepository.Setup(x => x.GetAll()).Returns(new List <Person>()); var bookingService = new BookingService(Mapper.Instance, mockPersonRepository.Object, mockBookingRepository.Object, mockFlightRepository.Object); // Act & Assert var exception = Assert.Throws <WingsOnNotFoundException>(() => bookingService.CreateBooking(createBookingRequest)); Assert.AreEqual(exception.Message, expectedErrorMessage); }
public void EditBookingPaxes(BookingPassenger passenger) { HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); var pax = BookingDB.HotelBookingPaxs.FirstOrDefault(p => p.Booking_No == passenger.bookingNo && p.Room_No == passenger.roomNo); if (pax != null) { pax.Salutations = passenger.salutation; pax.Last_Name = passenger.lastName; pax.First_name = passenger.firstName; BookingDB.SaveChanges(); } }
public IHttpActionResult EditPaxes([FromBody] BookingPassenger val) { try { AdminSearchBLL adminSearchBLL = new AdminSearchBLL(); adminSearchBLL.EditBookingPaxes(val); return(Ok()); }catch (Exception ex) { LoggingHelper.WriteToFile("AdminPaxController/ERROR/", "EditPax" + "INController" + val.bookingNo, "Data", "bookin is " + val.bookingNo + " and booking is" + val.bookingNo + ex.Message + ex.StackTrace); return(BadRequest(ex.Message)); } }
public void EditBookingPaxes(BookingPassenger passenger) { AdminSearchData adminSearch = new AdminSearchData(); adminSearch.EditBookingPaxes(passenger); }
public async Task<IHttpActionResult> InsertBooking(BookingDTO booking) { using (var db = new ApplicationDbContext()) { if (!ModelState.IsValid) { return BadRequest(ModelState); } Booking _booking = new Booking(); if (booking != null) { _booking.BookingId = Guid.NewGuid(); _booking.BookingOn = DateTime.Now; _booking.BookingRefId = _booking.BookingRefId.GetRandomString(6); //Generate Booking Ref ID _booking.BookingStatus = booking.BookingStatus; _booking.ContactNo = booking.ContactNo; _booking.Cupon = booking.Cupon; _booking.Discount = booking.Discount; _booking.Email = booking.Email; _booking.MainContact = booking.MainContact; _booking.UserId = booking.UserId; db.Bookings.Add(_booking); } BookingDetail bd = new BookingDetail(); if (booking.DepartBookingDetail != null) { bd = new BookingDetail(); bd.BookingDetailId = Guid.NewGuid(); bd.BookingId = _booking.BookingId; bd.RouteFare = booking.DepartBookingDetail.RouteFare; bd.RouteId = booking.DepartBookingDetail.RouteId; db.BookingDetails.Add(bd); foreach (BookingPassengerDTO p in booking.DepartBookingDetail.bookingPassengers) { BookingPassenger passenger = new BookingPassenger(); passenger.Age = p.Age; passenger.BookingDetailId = bd.BookingDetailId; passenger.BookingPassengerId = Guid.NewGuid(); passenger.Gender = p.Gender; passenger.IDNumber = p.IDNumber; passenger.IDType = p.IDType; passenger.PassengerName = p.PassengerName; passenger.RouteSeatId = p.RouteSeatId; db.BookingPassengers.Add(passenger); } } BookingDetail bd1 = new BookingDetail(); if (booking.ReturnBookingDetail != null) { bd1.BookingDetailId = Guid.NewGuid(); bd1.BookingId = booking.BookingId; bd1.RouteFare = booking.ReturnBookingDetail.RouteFare; bd1.RouteId = booking.ReturnBookingDetail.RouteId; db.BookingDetails.Add(bd1); foreach (BookingPassengerDTO p in booking.ReturnBookingDetail.bookingPassengers) { BookingPassenger passenger = new BookingPassenger(); passenger.Age = p.Age; passenger.BookingDetailId = bd1.BookingDetailId; passenger.BookingPassengerId = Guid.NewGuid(); passenger.Gender = p.Gender; passenger.IDNumber = p.IDNumber; passenger.IDType = p.IDType; passenger.PassengerName = p.PassengerName; passenger.RouteSeatId = p.RouteSeatId; db.BookingPassengers.Add(passenger); } } try { await db.SaveChangesAsync(); short seatstate = 0; if (booking.BookingStatus == (short)OBTSEnum.BookState.Confirmed) seatstate = (short)OBTSEnum.SeatState.Confirmed; if (booking.BookingStatus == (short)OBTSEnum.BookState.UnConfirm) seatstate = (short)OBTSEnum.SeatState.UnConfirm; if (booking.BookingStatus == (short)OBTSEnum.BookState.Cancelled) seatstate = (short)OBTSEnum.SeatState.Available; //booking status to seat status =>booking confirmed,unconfirm,cancelled foreach (BookingPassengerDTO p in booking.DepartBookingDetail.bookingPassengers) { using (var context = new ApplicationDbContext()) { context.Database.ExecuteSqlCommand("UPDATE RouteSeats SET State={0} WHERE RouteSeatId = {1}", seatstate, p.RouteSeatId); } } if(booking.ReturnBookingDetail!=null) { foreach (BookingPassengerDTO p in booking.ReturnBookingDetail.bookingPassengers) { using (var context = new ApplicationDbContext()) { context.Database.ExecuteSqlCommand("UPDATE RouteSeats SET State={0} WHERE RouteSeatId = {1}", seatstate, p.RouteSeatId); } } } } catch (System.Data.Entity.Validation.DbEntityValidationException dbEx) { Exception raise = dbEx; foreach (var validationErrors in dbEx.EntityValidationErrors) { foreach (var validationError in validationErrors.ValidationErrors) { string message = string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage); // raise a new exception nesting // the current instance as InnerException raise = new InvalidOperationException(message, raise); } } throw raise; } return Ok(booking); } }
public bool CreateNewBooking(int[] flightIDs, List <Person> persons, string totalTime, double totalPrice) { bool returnValue = true; AirplaneCtr airplaneCtr = new AirplaneCtr(_db); //Lav lister med personer og flights fra arrays med id var flights = flightIDs.Select(id => _db.Flights.SingleOrDefault(flight => flight.flightID == id)).ToList(); //Opret booking. Skal submittes til db så den får ID fra IDENTITY! var booking = new Booking { totalPrice = totalPrice * persons.Count, totalTime = totalTime }; using (var transScope = new TransactionScope()) { try { _db.Bookings.InsertOnSubmit(booking); _db.SubmitChanges(); foreach (Person p in persons) { //Hvis personID er 0 er det en person der ikke er oprettet i db og derfor ikke har et ID endnu if (p.personID == 0) { _db.Persons.InsertOnSubmit(p); _db.SubmitChanges(); } var bookingPassenger = new BookingPassenger { bookingID = booking.bookingID, personID = p.personID }; _db.BookingPassengers.InsertOnSubmit(bookingPassenger); } foreach (Flight f in flights) { //Hvis der er plads på flyet if (airplaneCtr.GetAirplaneByID(Convert.ToInt32(f.airplaneID)).seats >= f.takenSeats + persons.Count) { //Opret ny BookingFlight var bookingFlights = new BookingFlight { bookingID = booking.bookingID, flightID = f.flightID }; _db.BookingFlights.InsertOnSubmit(bookingFlights); f.takenSeats += persons.Count; } else { returnValue = false; } } if (returnValue) { _db.SubmitChanges(); transScope.Complete(); } else { Transaction.Current.Rollback(); } } catch (SqlException) { returnValue = false; } catch (Exception) { returnValue = false; } } return(returnValue); }
public AdminBookingDetails GetBookingDetails(string BN) { try { HotelBookingDBEntities BookingDB = new HotelBookingDBEntities(); SearchDBEntities searchDB = new SearchDBEntities(); AdminBookingDetails requiredData = new AdminBookingDetails(); hotelsDBEntities db = new hotelsDBEntities(); CurrencyRepo repo = new CurrencyRepo(); BusinessRulesDBEntities dbp = new BusinessRulesDBEntities(); double CancelRate = 0; var BaseCur = ConfigurationSettings.AppSettings["BaseCur"]; var BookinData = BookingDB.HotelsBookings.FirstOrDefault(a => a.Booking_No.ToLower() == BN.ToLower()); var searchData = searchDB.SearchCriterias.FirstOrDefault(a => a.sID == BookinData.SessionId); requiredData.bookingNo = BN; requiredData.bookingPhoneCode = BookinData.Booking_Phone_Code; requiredData.bookingTime = BookinData.Booking_Time.Value; requiredData.CBNumberData.LanguagesList = BookingDB.Languages.ToList(); var lang = requiredData.CBNumberData.LanguagesList.FirstOrDefault(a => a.LanguageCode.ToLower() == searchData.language.ToLower()); if (lang != null) { requiredData.CBNumberData.Language = lang.LanguageID; } requiredData.CBNumberData.PointsOfSaleList = BookingDB.PointsOfSales.ToList(); var pointofsale = requiredData.CBNumberData.PointsOfSaleList.FirstOrDefault(a => a.NameCode.ToLower() == searchData.pos.ToLower()); if (pointofsale != null) { requiredData.CBNumberData.PointOfSale = int.Parse(pointofsale.Code); } requiredData.CBNumberData.SourceList = BookingDB.SourceTraffics.ToList(); var src = requiredData.CBNumberData.SourceList.FirstOrDefault(a => a.Source.ToLower() == searchData.source.ToLower()); if (src != null) { requiredData.CBNumberData.Source = src.Code; } requiredData.checkIN = searchData.dateFrom.Value; requiredData.checkOut = searchData.dateTo.Value; requiredData.city = searchData.cityName; var cityData = db.Cities.FirstOrDefault(c => c.ID.ToString() == searchData.cityName); requiredData.cityName = cityData.City1; var conversionRate = repo.GetEveryDayCurrenciesConversion(BookinData.Sell_Currency, BaseCur, searchData.sID, DateTime.Now).Result.Customer_Sell_Rate; requiredData.costAmount = BookinData.Sell_Price.Value * conversionRate; requiredData.costCurrency = BaseCur; requiredData.country = cityData.countryName; requiredData.customerEmail = BookinData.Booking_Email; var name = BookinData.Pax_Name.Split(' '); requiredData.customerFirstName = name[0]; requiredData.customerID = BookinData.Customer_ID; requiredData.customerLastName = name[1]; requiredData.customerPhone = BookinData.Booking_phone; requiredData.customerPhoneCode = BookinData.Booking_Phone_Code; requiredData.ForeignAmount = BookinData.Sell_Price.Value; //**// requiredData.hotel = BookinData.Hotel_ID; requiredData.hotelConfirmationNo = ""; var hoteldata = db.hotels.FirstOrDefault(a => a.hotelID == BookinData.Hotel_ID); requiredData.hotelName = hoteldata.hotelName; requiredData.lastBookingStatus = BookinData.Booking_Status; requiredData.paxName = BookinData.Pax_Name; requiredData.paxQty = BookinData.Pax_Qty.Value; // get provider var prov = dbp.HotelProviders.FirstOrDefault(a => a.Provider_ID.ToString() == BookinData.Provider_ID); if (prov != null) { requiredData.provider = prov.Provider_Name; } requiredData.roomsQty = BookinData.Rooms_Qty.Value; requiredData.salesChannel = searchData.source; requiredData.sellCurrency = BookinData.Sell_Currency;//*/// var ExchangeRate = repo.GetEveryDayCurrenciesConversion(BaseCur, BookinData.Sell_Currency, searchData.sID, DateTime.Now).Result.Customer_Sell_Rate; requiredData.sellCurrencyExchRate = ExchangeRate; //**///from base to user// requiredData.sellPrice = BookinData.Sell_Price.Value * conversionRate; //**// base curr// var CostData = BookingDB.AvailabilityRes.FirstOrDefault(a => a.BookingNum == BookinData.Booking_No && a.Sid == BookinData.SessionId); requiredData.SupplierCost = CostData.NewTotalcost.Value; /////////////////****************** // requiredData.TotalCostDinars = BookinData.Sell_Price.Value * conversionRate; //**//***with base curr// var dataHotelStautsList = BookingDB.HotelBookingStatus.Where(a => a.Booking_No == BN).ToList(); foreach (var item in dataHotelStautsList) { BookingStatusList bookingStatus = new BookingStatusList(); bookingStatus.Booking_No = BookinData.Booking_No; bookingStatus.Booking_Status = item.Booking_Status; bookingStatus.Status_Time = item.Status_Time.Value; requiredData.BookingStatusList.Add(bookingStatus); } var BookingRooms = BookingDB.HotelBookingRooms.Where(x => x.Booking_No == BookinData.Booking_No && x.SID == BookinData.SessionId).ToList(); for (int i = 0; i < BookingRooms.Count; i++) { BookingRoom bookingRoom = new BookingRoom(); bookingRoom.bookingNo = BookingRooms[i].Booking_No; bookingRoom.meal = BookingRooms[i].Meal; bookingRoom.paxQty = BookingRooms[i].Paxs_Qty.Value; bookingRoom.roomCategory = BookingRooms[i].Room_Category; bookingRoom.roomNo = i + 1;//**// incremented// var roomnum = BookingRooms[i].Room_No.ToString(); var RoomsStats = BookingDB.HotelBookingRoomsStatus.Where(a => a.Booking_No == BN && a.Room_No.ToString() == roomnum).OrderByDescending(a => a.Id).FirstOrDefault(); if (RoomsStats != null) { bookingRoom.RoomStatus = RoomsStats.Room_Status.ToString();//status add culomn// } bookingRoom.roomType = BookingRooms[i].Room_Category; var availabilityHBroom = BookingDB.availabilityRoomRes.Where(x => x.BookingNum == BN && x.roomId.ToString() == roomnum).OrderByDescending(a => a.id).FirstOrDefault(); if (availabilityHBroom != null) { bookingRoom.TotalCostPerRoom = availabilityHBroom.Cost.Value;///********************************* provider cost// } else { var availabilityroom = searchDB.SearchRoomResults.FirstOrDefault(x => x.sID == BookinData.SessionId && x.HotelCode == BookinData.Hotel_ID && x.RoomCode == BookingRooms[i].Room_No.ToString()); if (availabilityroom != null) { bookingRoom.TotalCostPerRoom = availabilityroom.costPrice.Value; } } var roomNum = BookingRooms[i].Room_No.Value; var RoomCancels = BookingDB.CancelPolicies.Where(x => x.RoomCode == roomNum && x.Sid == BookinData.SessionId && x.HotelCode == BookinData.Hotel_ID).ToList(); if (RoomCancels.Count > 0) { CancelRate = repo.GetEveryDayCurrenciesConversion(RoomCancels[0].Currency, BaseCur, searchData.sID, DateTime.Now).Result.Customer_Sell_Rate; } foreach (var item in RoomCancels) { SupplierCancellation supplierCancellation = new SupplierCancellation(); CustomerCancellation cancellation = new CustomerCancellation(); cancellation.Booking_No = BookinData.Booking_No; cancellation.Date_From = item.FromDate.Value; cancellation.Date_To = item.ToDate; cancellation.ID = item.Id; cancellation.No_Show_Amount = (double)Math.Round(item.SellPrice.Value, 3) * CancelRate; cancellation.Room_No = BookingRooms[i].Room_No.Value; cancellation.Rule_Text = cancellation.No_Show_Amount.ToString() + " From " + item.FromDate.Value; supplierCancellation.Booking_No = BookinData.Booking_No; supplierCancellation.Date_From = item.FromDate.Value; supplierCancellation.Date_To = item.ToDate; supplierCancellation.ID = item.Id; supplierCancellation.No_Show_Amount = (double)Math.Round(item.SellPrice.Value, 3) * CancelRate; supplierCancellation.Room_No = BookingRooms[i].Room_No.Value; bookingRoom.SupplierCancellations.Add(supplierCancellation); bookingRoom.CustomerCancellations.Add(cancellation); } var BookingNights = BookingDB.HotelBookingNights.Where(a => a.Booking_No == BookinData.Booking_No && a.Room_No == roomNum).ToList(); foreach (var item in BookingNights) { BookingNight night = new BookingNight(); night.bookingNo = item.Booking_No; night.currency = BaseCur; night.exchangeRate = 1; night.nightDate = item.NightDate.Value; night.rate = item.Rate.Value * conversionRate; night.roomNo = item.Room_No.Value; bookingRoom.bookingNights.Add(night); } var BookingPaxes = BookingDB.HotelBookingPaxs.Where(a => a.SID == BookinData.SessionId && a.Booking_No == BookinData.Booking_No && a.Room_No == roomNum && a.PaxNo == 1).ToList(); foreach (var item in BookingPaxes) { BookingPassenger passenger = new BookingPassenger(); passenger.bookingNo = item.Booking_No; passenger.DateOfBirth = Convert.ToDateTime("0001- 01-01T00:00:00");//********* BD and Just lead(okay) passenger.firstName = item.First_name; passenger.lastName = item.Last_Name; passenger.nationality = searchData.passengerNationality; passenger.paxType = item.Pax_Type; passenger.phone = item.Phone; passenger.phoneCode = item.Phone_Code; passenger.roomNo = item.Room_No.Value; passenger.salutation = item.Salutations; bookingRoom.bookingPassengers.Add(passenger); } var dataRoomStautsList = BookingDB.HotelBookingRoomStatusValues.ToList(); foreach (var item in dataRoomStautsList) { RoomStatusList roomStatus = new RoomStatusList(); roomStatus.ID = item.ID; roomStatus.Status = item.Status; bookingRoom.RoomStatusList.Add(roomStatus); } requiredData.bookingRooms.Add(bookingRoom); } return(requiredData); } catch (Exception ex) { LoggingHelper.WriteToFile("AdminPannelController/ERROR/", "GetBookingDetails" + "INDAL" + BN, "Data", "bookin is " + BN + " and booking is" + BN + ex.Message + ex.StackTrace); return(new AdminBookingDetails()); } }