public HotelCancellationPolicyModel Get(HotelCancellationPolicyModel model, HotelSearchResultModel _resmodel)
        {
            HotelCore.Utility.HotelDetailSearchRows _rowsForDetail = new HotelCore.Utility.HotelDetailSearchRows();
            _rowsForDetail.CheckInDate  = _resmodel.CheckInDate;
            _rowsForDetail.CheckOutDate = _resmodel.CheckOutDate;
            _rowsForDetail.CityName     = _resmodel.CityName;
            _rowsForDetail.CountryName  = _resmodel.CountryName;
            _rowsForDetail._resultsRows = _resmodel.Result;
            //HotelCancellationPolicyModel _model = new HotelCancellationPolicyModel();
            HotelMessageModel _msg = new HotelMessageModel();

            HotelCore.API api = new HotelCore.API();
            HotelCore.GetCancellationPolicy.Response  _res = new HotelCore.GetCancellationPolicy.Response();
            HotelCore.GetHotelDetails.RoomDescRequest _req = new HotelCore.GetHotelDetails.RoomDescRequest();
            _req.SearchIndex  = model.SearchIndex;
            _req.NoOfRooms    = model.NoOfRoom;
            _req.RatePlanCode = model.RatePlanCode;
            _req.RoomTypeCode = model.RoomTypeCode;
            _req.SessionId    = model.SessiobId;
            _req.HotelCode    = model.HotelCode;
            _req.GDSID        = _resmodel.GDSID;
            _res = api.RoomPolicy(_req, _rowsForDetail);
            _msg.ActionMessage                = _res.Status.Description;
            _msg.MsgNumber                    = _res.Status.StatusNumber == 0 ? 1 : 1000;;
            _msg.MsgStatus                    = _res.Status.StatusNumber == 1 ? false : true;
            _msg.MsgType                      = _res.Status.StatusNumber == 0 ? 1 : 3;
            model.Message                     = _msg;
            model.CancellationPolicy          = _res.CancellationPolicy;
            model.CancellationPolicyAvailable = _res.CancellationPolicyAvailable;
            model.HotelNorms                  = _res.HotelNorms;
            model.HotelNormsAvailable         = _res.HotelNormsAvailable;
            return(model);
        }
        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);
        }
Exemplo n.º 4
0
        public HotelBookingCancelModel GetCancelRequestStatus(long?id)
        {
            HotelCore.GetHotelChangeRequestStatus.Response _res = new HotelCore.GetHotelChangeRequestStatus.Response();
            HotelCore.GetHotelChangeRequestStatus.Request  _req = new HotelCore.GetHotelChangeRequestStatus.Request();
            HotelBookingCancelModel model = new HotelBookingCancelModel();
            HotelMessageModel       _msg  = new HotelMessageModel();

            TravelPortalEntity.EntityModel _ent = new TravelPortalEntity.EntityModel();
            if (id != null)
            {
                var obj = _ent.Htl_BookingCancelDetail.Where(x => x.BookingCancelId == id).FirstOrDefault();
                if (obj != null)
                {
                    using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required))
                    {
                        HotelCore.API _api = new HotelCore.API();
                        _req.ChangeRequestId = Convert.ToInt32(obj.CancellationReqId);
                        _res = _api.GetHotelChangeRequestStatus(_req);
                        obj.CancellationCharge = _res.CancellationCharge;
                        obj.CancellationStatus = _res.ChangeRequestStatus.ToString();
                        obj.RefundableAmount   = _res.RefundedAmount;
                        _ent.ApplyCurrentValues(obj.EntityKey.EntitySetName, obj);
                        _ent.SaveChanges();
                        if (_res.ChangeRequestStatus.ToString() == "Processed")
                        {
                            var obj1 = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == obj.BookingRecordId).FirstOrDefault();
                            obj1.IsCanceled = true;
                            _ent.ApplyCurrentValues(obj1.EntityKey.EntitySetName, obj1);
                            _ent.SaveChanges();
                        }
                        ts.Complete();
                    }

                    if (_res.ChangeRequestStatus.ToString() == "Processed")
                    {
                        _msg.ActionMessage = "Cancellation Success.";
                        _msg.MsgNumber     = 1;
                        _msg.MsgStatus     = true;
                        _msg.MsgType       = 0;
                        model.Message      = _msg;
                    }
                    else
                    {
                        _msg.ActionMessage = "Cancellation is " + _res.ChangeRequestStatus.ToString();
                        _msg.MsgNumber     = 1000;
                        _msg.MsgStatus     = true;
                        _msg.MsgType       = 2;
                        model.Message      = _msg;
                    }
                    HotelBookDetailRepository _dtlRep = new HotelBookDetailRepository();
                    var obj3 = _ent.Htl_BookingCancelDetail.Where(x => x.BookingCancelId == id).FirstOrDefault();
                    model.CancellationCharge = obj3.CancellationCharge == null ? 0 : obj3.CancellationCharge.Value;
                    model.RefundableAmount   = obj3.RefundableAmount;
                    model.CancelStatus       = obj3.CancellationStatus;
                    var BookingRecordId = _ent.Htl_BookingCancelDetail.Where(x => x.BookingCancelId == id).Select(x => x.BookingRecordId).SingleOrDefault();//
                    model.BookingDetail = _dtlRep.GetHotelBooking(BookingRecordId);
                    model.CreatedOn     = obj3.CreatedDate;
                    model.Remark        = obj3.Remark;
                    model.IsProcessed   = obj3.IsProcessed == null ? false : obj3.IsProcessed.Value;
                }
                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);
        }
Exemplo n.º 5
0
        public HotelBookingCancelModel Cancel(HotelBookingCancelModel model)
        {
            HotelCore.SendHotelChangeRequest.Response _res = new HotelCore.SendHotelChangeRequest.Response();
            HotelCore.SendHotelChangeRequest.Request  _req = new HotelCore.SendHotelChangeRequest.Request();
            TravelPortalEntity.EntityModel            _ent = new TravelPortalEntity.EntityModel();
            HotelMessageModel _msg = new HotelMessageModel();

            var obj = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == model.BookingRecordId).FirstOrDefault();
            //checked null model.BookingRecordId
            var _cancelObj = _ent.Htl_BookingCancelDetail.Where(x => x.BookingRecordId == model.BookingRecordId).FirstOrDefault();

            if (_cancelObj == null)
            {
                TravelPortalEntity.Htl_BookingCancelDetail _objCancel = new TravelPortalEntity.Htl_BookingCancelDetail
                {
                    BookingRecordId = model.BookingRecordId,
                    GDSBookingID    = obj.GDSBookingId,
                    GDSID           = obj.GDSID,
                    GDSSessionID    = obj.SearchSessionId,
                    CreatedBy       = LoggedUserId,
                    CreatedDate     = CurrentDateTime,
                    Remark          = model.Remark
                };
                _ent.AddToHtl_BookingCancelDetail(_objCancel);
                _ent.SaveChanges();
                model.BookingCancelId = _objCancel.BookingCancelId;
            }
            else
            {
                var _cancel1 = _ent.Htl_BookingCancelDetail.Where(x => x.BookingRecordId == model.BookingRecordId).FirstOrDefault();
                model.BookingCancelId = _cancel1.BookingCancelId;
                _cancel1.ModifiedBy   = LoggedUserId;
                _cancel1.ModifiedDate = CurrentDateTime;
                _ent.ApplyCurrentValues(_cancel1.EntityKey.EntitySetName, _cancel1);
                _ent.SaveChanges();
            }
            _req.BookingId      = obj.GDSBookingId;
            _req.GDSID          = obj.GDSID;
            _req.ConfirmationNo = obj.BookingReferenceNo;
            _req.Remarks        = model.Remark;
            _req.Email          = obj.RegEmail;
            _req.SessionId      = obj.SearchSessionId;
            HotelCore.API _api = new HotelCore.API();
            _res = _api.SendCancelRequest(_req);
            _res.ChangeRequestId = _res.ChangeRequestId == null ? "-1" : _res.ChangeRequestId;
            if (_res.IsCancilRequest == true)
            {
                using (System.Transactions.TransactionScope ts = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required))
                {
                    TravelPortalEntity.EntityModel _ent1 = new TravelPortalEntity.EntityModel();
                    var _cancel = _ent1.Htl_BookingCancelDetail.Where(x => x.BookingCancelId == model.BookingCancelId).FirstOrDefault();
                    _cancel.CancellationReqId  = _res.ChangeRequestId;
                    _cancel.GDSSessionID       = obj.SearchSessionId;
                    _cancel.CancellationStatus = _res.ChangeRequestStatus.ToString();
                    _cancel.IsCancilRequest    = _res.IsCancilRequest;
                    _cancel.IsProcessed        = _res.IsProcessed;
                    _ent.ApplyCurrentValues(_cancel.EntityKey.EntitySetName, _cancel);
                    _ent.SaveChanges();
                    if (_res.ChangeRequestStatus.ToString() == "Processed")
                    {
                        var _record = _ent.Htl_BookingRecord.Where(x => x.BookingRecordId == model.BookingRecordId).FirstOrDefault();
                        _record.IsCanceled = true;
                        _ent.ApplyCurrentValues(_record.EntityKey.EntitySetName, _record);
                        _ent.SaveChanges();
                    }

                    if (_res.ChangeRequestId != null)
                    {
                        if (_res.ChangeRequestId != "")
                        {
                            if (_res.IsProcessed == true)
                            {
                                _ent.Htl_CancelSalesTransaction(UserTerminalId, model.BookingRecordId, LoggedAgentId, LoggedUserId);
                            }
                        }
                    }
                    ts.Complete();
                }
                model.CancelRequestId = _res.ChangeRequestId;
                HotelBookDetailRepository _dtlRep = new HotelBookDetailRepository();
                model.BookingDetail = _dtlRep.GetHotelBooking(model.BookingRecordId);
                model.CreatedOn     = CurrentDateTime;

                if (_res.IsProcessed == true)
                {
                    _msg.ActionMessage = "Cancel Success";
                    _msg.MsgNumber     = 1;
                    _msg.MsgStatus     = true;
                    _msg.MsgType       = 0;
                    model.Message      = _msg;
                }
                else if (_res.IsCancilRequest == true)
                {
                    _msg.ActionMessage = "Cancelllation is in process";
                    _msg.MsgNumber     = 1000;
                    _msg.MsgStatus     = true;
                    _msg.MsgType       = 2;
                    model.Message      = _msg;
                }
            }
            else
            {
                _msg.ActionMessage = "Cancelllation Can not success.";
                _msg.MsgNumber     = 1000;
                _msg.MsgStatus     = true;
                _msg.MsgType       = 2;
                model.Message      = _msg;
            }

            model.Message = _msg;
            return(model);
        }