public HotelBookingProcessModel ProcessPendingBooking(long?id) { TravelPortalEntity.EntityModel _ent = new TravelPortalEntity.EntityModel(); int BaseCurrencyId = 0; int CurrencyCodeId = 0; string BaseCurrencyCode = System.Configuration.ConfigurationManager.AppSettings["HotelBaseCurrencyCode"]; string CurrencyCode = System.Configuration.ConfigurationManager.AppSettings["HotelCurrencyCode"]; var _BaseCurrencyCode = _ent.Currencies.Where(x => x.CurrencyCode.Trim() == BaseCurrencyCode).FirstOrDefault(); if (_BaseCurrencyCode != null) { BaseCurrencyId = _BaseCurrencyCode.CurrencyId == null ? 0 : _BaseCurrencyCode.CurrencyId; } var _CurrencyCode = _ent.Currencies.Where(x => x.CurrencyCode.Trim() == CurrencyCode).FirstOrDefault(); if (_CurrencyCode != null) { CurrencyCodeId = _CurrencyCode.CurrencyId == null ? 0 : _CurrencyCode.CurrencyId; } var _ExchangeRate = _ent.Core_FXRate.Where(x => x.BaseCurrencyID == BaseCurrencyId && x.CurrencyID == CurrencyCodeId).OrderByDescending(x => x.CreatedDate).FirstOrDefault(); decimal ExchangeRate = 1; if (_ExchangeRate != null) { ExchangeRate = (decimal)(_ExchangeRate.ExchangeRate == null ? 1 : _ExchangeRate.ExchangeRate == 0 ? 1 : _ExchangeRate.ExchangeRate); } HotelItinearyModel _itmodel = new HotelItinearyModel(); HotelBookingProcessModel _model = new HotelBookingProcessModel(); HotelMessageModel _msg = new HotelMessageModel(); HotelCore.GetHotelBooking.Request _getBookingReq = new HotelCore.GetHotelBooking.Request(); HotelCore.GetHotelBooking.Response _getBookingRes = new HotelCore.GetHotelBooking.Response(); HotelCore.AddHotelBookingDetail.Request _addBookingReq = new HotelCore.AddHotelBookingDetail.Request(); HotelCore.AddHotelBookingDetail.Response _addBookingRes = new HotelCore.AddHotelBookingDetail.Response(); HotelCore.Book.Request _bookingReq = new HotelCore.Book.Request(); HotelCore.API api = new HotelCore.API(); if (id != null) { var obj = _ent.Htl_BookingRecord.FirstOrDefault(x => x.BookingRecordId == id && x.IsProcessed == false); if (obj != null) { if (obj.BookingStatusCode.Trim() == "Pending") { _getBookingReq.BookingId = obj.GDSBookingId; _getBookingRes = api.GetHotelBooking(_getBookingReq); if (_getBookingRes.Status.StatusNumber == 0) { if (_getBookingRes.BookingDetail != null) { var _bookRecObj = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookRecObj.BookingStatusCode = _getBookingRes.BookingDetail[0].BookingStatus.ToString(); _bookRecObj.BookingReferenceNo = _getBookingRes.BookingDetail[0].BookingRefNo; _bookRecObj.BookingConformationNo = _getBookingRes.BookingDetail[0].ConfirmationNo; _bookRecObj.LastCancilationDate = _getBookingRes.BookingDetail[0].LastCancellationDate; _bookRecObj.BookingStatusCode = _getBookingRes.BookingDetail[0].BookingStatus.ToString(); _bookRecObj.IsGetBookingDetail = true; _ent.ApplyCurrentValues(obj.EntityKey.EntitySetName, _bookRecObj); _ent.SaveChanges(); var _bookingRecord = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookingReq.SessionId = _bookingRecord.SearchSessionId; _bookingReq.Index = _bookingRecord.SearchIndex; _bookingReq.CountryName = _bookingRecord.CountryName; HotelCore.Utility.PaymentInformation pinfo = new HotelCore.Utility.PaymentInformation(); pinfo.Amount = _bookingRecord.TotalChargeableAmount; _bookingReq.PaymentInfo = pinfo; List <HotelCore.Utility.Guest> Guest = new List <HotelCore.Utility.Guest>(); var _guest = _ent.Htl_BookingGuestDetail.Where(x => x.BookingRecordId == id); if (_guest != null) { if (_guest.Count() > 0) { foreach (var item in _guest) { HotelCore.Utility.Guest gu = new HotelCore.Utility.Guest(); gu.Age = item.Age; gu.Addressline1 = item.Address1; gu.Addressline2 = item.Address2; gu.Areacode = item.AreaPhCode; gu.City = item.City; gu.Country = item.Country; gu.Countrycode = item.CountryPhCode; gu.Email = item.Email; gu.FirstName = item.FirstName; gu.GuestType = item.GuestType.Trim() == "Child" ? HotelCore.Utility.HotelGuestType.Child : HotelCore.Utility.HotelGuestType.Adult; gu.LastName = item.LastName; gu.LeadGuest = item.IsLeadGuest; gu.MiddleName = item.MiddleName; gu.Phoneno = item.PhoneNo; gu.RoomIndex = item.RoomIndex; gu.State = item.GuestState; gu.Title = item.Title; gu.Zipcode = item.ZipCoade; Guest.Add(gu); } } } _bookingReq.Guest = Guest.ToArray(); _bookingReq.CreatedOn = CurrentDateTime; _bookingReq.DisplayExchangeRate = ExchangeRate; if (_getBookingRes.BookingDetail[0].BookingStatus.ToString() == "Confirmed") { _addBookingReq = api.FillAddBookingRequest(1, _getBookingRes, _bookingReq); _addBookingRes = api.AddHotelBookingDetail(_addBookingReq); if (_addBookingRes.Status.StatusNumber == 0) { var _bookRecObj1 = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookRecObj.AddBookingRefId = _addBookingRes.ReferenceId; _bookRecObj.IsBookingAdded = true; _ent.ApplyCurrentValues(obj.EntityKey.EntitySetName, _bookRecObj1); _ent.SaveChanges(); } } } } } else if ((obj.IsProcessed == false && obj.IsGetBookingDetail == false && obj.BookingStatusCode.Trim() == "Confirmed") || (obj.IsBookingAdded == false)) { _getBookingReq.BookingId = obj.GDSBookingId; _getBookingRes = api.GetHotelBooking(_getBookingReq); if (_getBookingRes.Status.StatusNumber == 0) { if (_getBookingRes.BookingDetail != null) { var _bookRecObj = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookRecObj.BookingStatusCode = _getBookingRes.BookingDetail[0].BookingStatus.ToString(); _bookRecObj.BookingReferenceNo = _getBookingRes.BookingDetail[0].BookingRefNo; _bookRecObj.BookingConformationNo = _getBookingRes.BookingDetail[0].ConfirmationNo; _bookRecObj.LastCancilationDate = _getBookingRes.BookingDetail[0].LastCancellationDate; _bookRecObj.IsGetBookingDetail = true; _ent.ApplyCurrentValues(obj.EntityKey.EntitySetName, _bookRecObj); _ent.SaveChanges(); var _bookingRecord = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookingReq.SessionId = _bookingRecord.SearchSessionId; _bookingReq.Index = _bookingRecord.SearchIndex; _bookingReq.CountryName = _bookingRecord.CountryName; HotelCore.Utility.PaymentInformation pinfo = new HotelCore.Utility.PaymentInformation(); pinfo.Amount = _bookingRecord.TotalChargeableAmount; _bookingReq.PaymentInfo = pinfo; List <HotelCore.Utility.Guest> Guest = new List <HotelCore.Utility.Guest>(); var _guest = _ent.Htl_BookingGuestDetail.Where(x => x.BookingRecordId == id); if (_guest != null) { if (_guest.Count() > 0) { foreach (var item in _guest) { HotelCore.Utility.Guest gu = new HotelCore.Utility.Guest(); gu.Age = item.Age; gu.Addressline1 = item.Address1; gu.Addressline2 = item.Address2; gu.Areacode = item.AreaPhCode; gu.City = item.City; gu.Country = item.Country; gu.Countrycode = item.CountryPhCode; gu.Email = item.Email; gu.FirstName = item.FirstName; gu.GuestType = item.GuestType.Trim() == "Child" ? HotelCore.Utility.HotelGuestType.Child : HotelCore.Utility.HotelGuestType.Adult; gu.LastName = item.LastName; gu.LeadGuest = item.IsLeadGuest; gu.MiddleName = item.MiddleName; gu.Phoneno = item.PhoneNo; gu.RoomIndex = item.RoomIndex; gu.State = item.GuestState; gu.Title = item.Title; gu.Zipcode = item.ZipCoade; Guest.Add(gu); } } } _bookingReq.Guest = Guest.ToArray(); _bookingReq.CreatedOn = CurrentDateTime; _bookingReq.DisplayExchangeRate = ExchangeRate; _addBookingReq = api.FillAddBookingRequest(1, _getBookingRes, _bookingReq); _addBookingRes = api.AddHotelBookingDetail(_addBookingReq); if (_addBookingRes.Status.StatusNumber == 0) { var _bookRecObj1 = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookRecObj1.AddBookingRefId = _addBookingRes.ReferenceId; _bookRecObj1.IsBookingAdded = true; _ent.ApplyCurrentValues(_bookRecObj1.EntityKey.EntitySetName, _bookRecObj1); _ent.SaveChanges(); } } } } else if (obj.IsVouchered == false) { _getBookingReq.BookingId = obj.GDSBookingId; _getBookingRes = api.GetHotelBooking(_getBookingReq); var _bookRecObj1 = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); _bookRecObj1.IsVouchered = _getBookingRes.BookingDetail[0].VoucherStatus; _bookRecObj1.IsProcessed = _getBookingRes.BookingDetail[0].VoucherStatus; _ent.ApplyCurrentValues(_bookRecObj1.EntityKey.EntitySetName, _bookRecObj1); _ent.SaveChanges(); } } var _bookRecObj2 = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == id).FirstOrDefault(); if (_bookRecObj2.IsBookingSuccess == true && _bookRecObj2.IsBookingAdded == true && _bookRecObj2.BookingStatusCode == "Confirmed") { _bookRecObj2.IsProcessed = true; _ent.ApplyCurrentValues(_bookRecObj2.EntityKey.EntitySetName, _bookRecObj2); _ent.SaveChanges(); } HotelItinearyModel _itinModel = new HotelItinearyModel(); HotelBookRepository _bookRep = new HotelBookRepository(); HotelBookDetailRepository _bookingDtlRep = new HotelBookDetailRepository(); _model.BookingDetail = _bookingDtlRep.GetHotelBooking(id); _itinModel = _bookRep.GetItineary(id); _model.Itineary = _itinModel.Itineary; if (_itinModel.Itineary.BookingStatusDesc == "Confirmed" || _itinModel.Itineary.IsProcessed == true) { _msg.ActionMessage = "Booking Success"; _msg.MsgNumber = 1; _msg.MsgStatus = true; _msg.MsgType = 0; _model.Message = _msg; } else { _msg.ActionMessage = "Booking can not complete try again."; _msg.MsgNumber = 1001; _msg.MsgStatus = true; _msg.MsgType = 2; _model.Message = _msg; } } else { _msg.ActionMessage = "Invalid Operation."; _msg.MsgNumber = 1000; _msg.MsgStatus = true; _msg.MsgType = 2; _model.Message = _msg; } return(_model); }
public HotelBookingDetailModel GetHotelBooking(long?BookingRecordId) { HotelCore.GetHotelBooking.Response _res = new HotelCore.GetHotelBooking.Response(); HotelCore.GetHotelBooking.Request _req = new HotelCore.GetHotelBooking.Request(); HotelBookingDetailModel model = new HotelBookingDetailModel(); TravelPortalEntity.EntityModel _ent = new TravelPortalEntity.EntityModel(); HotelMessageModel _msg = new HotelMessageModel(); if (BookingRecordId != null) { var obj = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == BookingRecordId).FirstOrDefault(); if (obj != null) { _req.BookingId = obj.GDSBookingId; HotelCore.API _api = new HotelCore.API(); //_res = _api.GetHotelBooking(_req); var _bookingDtl = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == BookingRecordId).FirstOrDefault(); Administrator.Models.AgentModel _agent = new Administrator.Models.AgentModel { AgentName = _bookingDtl.Agents.AgentName, Address = _bookingDtl.Agents.Address, PhoneNo = _bookingDtl.Agents.Phone, AgentId = _bookingDtl.AgentId }; model.CheckInDate = _bookingDtl.CheckInDate; model.CheckOutDate = _bookingDtl.CheckOutDate; model.CityName = _bookingDtl.CityName; model.CountryName = _bookingDtl.CountryName; model.CurrencyCode = _bookingDtl.CurrencyCode; model.Flightinfo = _bookingDtl.FlightInfo; model.HotelRating = _bookingDtl.HotelRating; model.HotelImageUrl = _bookingDtl.HotelImageUrl; model.TotalChargableAmount = _bookingDtl.TotalChargeableAmount; model.BookingId = _bookingDtl.GDSBookingId; model.ConfirmationNo = _bookingDtl.BookingConformationNo; model.ReferenceNo = _bookingDtl.BookingReferenceNo; model.AgentDetail = _agent; var _guests = _ent.Htl_BookingGuestDetail.Where(x => x.BookingRecordId == BookingRecordId); List <GuestDetailModel> _guestList = new List <GuestDetailModel>(); foreach (var item in _guests) { GuestDetailModel _guest = new GuestDetailModel(); _guest.Address1 = item.Address1; _guest.Address2 = item.Address2; _guest.Age = item.Age; _guest.City = item.City; _guest.Country = item.Country; _guest.Email = item.Email; _guest.Title = item.Title; _guest.FirstName = item.FirstName; _guest.GuestState = item.GuestState; _guest.GuestType = item.GuestType; _guest.IsLeadGuest = item.IsLeadGuest; _guest.LastName = item.LastName; _guest.MiddleName = item.MiddleName; _guest.PhoneNo = item.PhoneNo; _guest.RoomIndex = item.RoomIndex; _guest.Title = item.Title; _guest.ZipCoade = item.ZipCoade; _guestList.Add(_guest); } List <HotelCore.Utility.RoomGuestData> _roomGuestList = new List <HotelCore.Utility.RoomGuestData>(); List <int> _childAge = new List <int>(); var _roomDtl = _ent.Htl_BookingRoomDetail.Where(x => x.BookingRecordId == BookingRecordId); foreach (var item in _roomDtl) { HotelCore.Utility.RoomGuestData _roomGuest = new HotelCore.Utility.RoomGuestData(); _roomGuest.NoOfAdults = item.NoOfAdult; _roomGuest.NoOfChild = item.NoOfChild; _roomGuest.RoomTypeName = item.RoomTypeName; _roomGuestList.Add(_roomGuest); } var _roomType = _ent.Htl_BookingRoomDetail.Where(x => x.BookingRecordId == BookingRecordId); List <HotelCore.Utility.HotelRoomsDetails> RoomList = new List <HotelCore.Utility.HotelRoomsDetails>(); var bookingRoomCode = ""; foreach (var item in _roomType) { HotelCore.Utility.HotelRoomsDetails room = new HotelCore.Utility.HotelRoomsDetails(); room.RoomTypeName = item.RoomTypeName; room.NoOfUnits = 1; bookingRoomCode = item.BookingRoomCode; var _nightRate = _ent.Htl_BookingNightRate.Where(x => x.BookingRoomCodeId == item.BookingRoomCodeId); List <HotelCore.Utility.DayRates> _dayRates = new List <HotelCore.Utility.DayRates>(); foreach (var item1 in _nightRate) { HotelCore.Utility.DayRates _dayRate = new HotelCore.Utility.DayRates(); _dayRate.Days = item1.BookingDate; _dayRate.LowRate = item1.BookingRate; _dayRates.Add(_dayRate); } room.DayRates = _dayRates.ToArray(); var _roomRate = _ent.Htl_BookingRoomRate.Where(x => x.BookingRoomCodeId == item.BookingRoomCodeId); List <HotelCore.Utility.RoomRate> _roomRateList = new List <HotelCore.Utility.RoomRate>(); HotelCore.Utility.RoomRate RoomRate = new HotelCore.Utility.RoomRate(); RoomRate.TotalRoomRate = _roomRate.Where(x => x.Particular == "Total-Rate").FirstOrDefault().Amount; RoomRate.ExtraGuestCharges = _roomRate.Where(x => x.Particular == "Extra-Guest-Charge").FirstOrDefault().Amount; RoomRate.TotalRoomTax = _roomRate.Where(x => x.Particular == "Tax").FirstOrDefault().Amount; RoomRate.ServiceTax = _roomRate.Where(x => x.Particular == "Service-Tax").FirstOrDefault().Amount; RoomRate.DisCount = _roomRate.Where(x => x.Particular == "Discount").FirstOrDefault().Amount; RoomRate.TotalTaxesAndFees = RoomRate.TotalRoomTax + RoomRate.ServiceTax; //RoomRate.AgentServiceCharge = _roomRate.Where(x => x.Particular == "Agent-Service-Charge").FirstOrDefault().Amount; RoomRate.CommissionExtraGuestCharge = _roomRate.Where(x => x.Particular == "Commission-Extra-Guest-Charge").FirstOrDefault().Amount; RoomRate.CommissionRatePerRoom = _roomRate.Where(x => x.Particular == "Commission-Rate-Per-Room").FirstOrDefault().Amount; RoomRate.DiscountExtraGuestCharge = _roomRate.Where(x => x.Particular == "Discount-Extra-Guest-Charge").FirstOrDefault().Amount; RoomRate.DiscountRatePerRoom = _roomRate.Where(x => x.Particular == "Discount-Rate-Per-Room").FirstOrDefault().Amount; RoomRate.MarkupExtraGuestCharge = _roomRate.Where(x => x.Particular == "Markup-Extra-Guest-Charge").FirstOrDefault().Amount; RoomRate.MarkupRatePerRoom = _roomRate.Where(x => x.Particular == "Markup-Rate-Per-Room").FirstOrDefault().Amount; room.RoomRate = RoomRate; RoomList.Add(room); } model.RoomDetail = RoomList.ToArray(); model.RoomGuest = _roomGuestList.ToArray(); model.Guests = _guestList.ToArray(); model.HotelAddress = _bookingDtl.HotelAddress; model.HotelEmail = _bookingDtl.HotelEmail; model.HotelName = _bookingDtl.HotelName; model.HotelPhoneNo = _bookingDtl.HotelPhone; model.NoOfRooms = _bookingDtl.NoOfRoom; model.SpecialRequest = _bookingDtl.SpecialRequest; model.BookingDetail = _res.BookingDetail; _msg.ActionMessage = "Success."; _msg.MsgNumber = 1; _msg.MsgStatus = false; _msg.MsgType = 0; model.Message = _msg; } else { _msg.ActionMessage = "Invalid Operation."; _msg.MsgNumber = 1000; _msg.MsgStatus = true; _msg.MsgType = 2; model.Message = _msg; } } else { _msg.ActionMessage = "Invalid Operation."; _msg.MsgNumber = 1000; _msg.MsgStatus = true; _msg.MsgType = 2; model.Message = _msg; } return(model); }