示例#1
0
        public async Task <BookingDetailRes> GetAllBookingData(BookingDetailReq bookingGetReq, string ticket)
        {
            BookingDetailRes bookingGetRes = new BookingDetailRes();

            bookingGetRes = await serviceProxy.PostData(_configuration.GetValue <string>("DistributionServiceBooking:GetAllBookingData"), bookingGetReq, typeof(BookingDetailRes), ticket, "Distribution");

            return(bookingGetRes);
        }
示例#2
0
        public async Task <BookingInfoRes> GetBookingDetailsByParam(BookingDetailReq bookingDetailReq, string ticket)
        {
            BookingInfoRes bookingInfoRes = new BookingInfoRes();

            bookingInfoRes = await serviceProxy.PostData(_configuration.GetValue <string>("ServiceBooking:GetBookingDetailsByParam"), bookingDetailReq, typeof(BookingInfoRes), ticket);

            return(bookingInfoRes);
        }
示例#3
0
        public async Task <BookingInfoRes> GetBookingDetailsByParam([FromBody] BookingDetailReq request)
        {
            var response = new BookingInfoRes();

            try
            {
                response = await _bookingRepository.GetBookingDetailsByParam(request);

                response.ResponseStatus.Status       = "Success";
                response.ResponseStatus.ErrorMessage = response != null ? "" : "No Records Found.";
            }
            catch (Exception ex)
            {
                response.ResponseStatus.Status       = "Failure";
                response.ResponseStatus.ErrorMessage = "An Error Occurs :- " + ex.Message;
            }

            return(response);
        }
示例#4
0
        public async Task <BookingDetails> GetBookingDetail(BookingDetailReq request, UserCookieDetail userdetails)
        {
            common.GetUserCompanyType(ref userdetails);
            var System = _MongoContext.mSystem.AsQueryable().FirstOrDefault(); //.Where(a => Users.Company_Id == a.CoreCompany_Id)

            BookingDetails booking = new BookingDetails();
            FilterDefinition <mBookings>               filter;
            FilterDefinition <mBookingPax>             filterPax;
            FilterDefinition <mBookingRooms>           filterRooms;
            FilterDefinition <mBookingPositions>       filterPositions;
            FilterDefinition <mBookingPositionPricing> filterPositionPricing;
            FilterDefinition <mFOCDilution>            filterFOC;
            FilterDefinition <mBookingItineraryDetail> filterItin;

            filter          = Builders <mBookings> .Filter.Empty;
            filterPax       = Builders <mBookingPax> .Filter.Empty;
            filterRooms     = Builders <mBookingRooms> .Filter.Empty;
            filterPositions = Builders <mBookingPositions> .Filter.Empty;
            filterItin      = Builders <mBookingItineraryDetail> .Filter.Empty;
            bool            OnAndAfter = false;
            IFormatProvider culture    = new CultureInfo("en-US", true);
            DateTime        dateValue;

            if (!string.IsNullOrWhiteSpace(request.BookingReference))
            {
                filter = filter & Builders <mBookings> .Filter.Where(f => request.BookingReference == f.BookingNumber);

                //filter = filter & Builders<mBookings>.Filter.Where(f => f.ISEHSupp == true);

                var result = await _MongoContext.mBookings.Find(filter).Project(p => new BookingDetails
                {
                    AgentCode         = p.AgentCode,
                    AgentName         = p.AgentName,
                    AgentReference    = p.CUSTREF,
                    EndDate           = (p.ARRIVALDATE == null) ? null : Convert.ToDateTime(p.ARRIVALDATE.ToString()).ToString("yyyy-MM-dd"),
                    BookedDate        = (p.CreaDT == null) ? null : Convert.ToDateTime(p.CreaDT.ToString()).ToString("yyyy-MM-dd"),
                    StartDate         = (p.DEPARTUREDATE == null) ? null : Convert.ToDateTime(p.DEPARTUREDATE.ToString()).ToString("yyyy-MM-dd"),
                    UpdateDate        = (p.MODIDT == null) ? null : Convert.ToDateTime(p.MODIDT.ToString()).ToString("yyyy-MM-dd"),
                    OPTIONDATE        = (p.OPTIONDATE == null) ? null : Convert.ToDateTime(p.OPTIONDATE.ToString()).ToString("yyyy-MM-dd"),
                    BookingReference  = p.BookingNumber,
                    Duration          = Convert.ToString(p.Duration),
                    Status            = p.StatusDesc,
                    Operator          = p.Operator,
                    OperatorEmail     = p.OperatorEmail,
                    TourLeader        = p.TourLeader ?? "",
                    TourLeaderContact = p.TourLeader_Contact ?? "",
                    InvoiceCurrency   = p.Currency,
                    GoAheadDate       = Convert.ToDateTime(p.BookingGoAheadDT.ToString()).ToString("yyyy-MM-dd")
                }).FirstOrDefaultAsync();



                if (result != null)
                {
                    string Booking_Id = (await _MongoContext.mBookings.Find(filter).Project(p => p.BookingId).FirstOrDefaultAsync());
                    string AgentId    = (await _MongoContext.mBookings.Find(filter).Project(p => p.AgentId).FirstOrDefaultAsync());
                    string Suppliers  = (await _MongoContext.mBookings.Find(filter).Project(p => p.Suppliers).FirstOrDefaultAsync());

                    if (userdetails.Company_Id.ToString().ToLower() != System.CoreCompany_Id.ToString().ToLower())
                    {
                        if ((userdetails.IsAgent ?? false))
                        {
                            if (userdetails.Company_Id.Trim().ToLower() != AgentId.Trim().ToLower())
                            {
                                booking = new BookingDetails();
                                return(booking);
                            }
                        }
                        else if ((userdetails.IsSupplier ?? false))
                        {
                            if (!Suppliers.Contains("," + userdetails.Company_Id + ","))
                            {
                                booking = new BookingDetails();
                                return(booking);
                            }
                        }
                    }

                    Booking_Id = Booking_Id.ToLower();
                    if (!string.IsNullOrWhiteSpace(Booking_Id))
                    //if (Booking_Id != null && Booking_Id != Guid.Empty)
                    {
                        filterItin = filterItin & Builders <mBookingItineraryDetail> .Filter.Where(f => request.BookingReference == f.BookingNumber);

                        var bItin = await _MongoContext.mBookingItineraryDetail.Find(filterItin).Project(p => new BookingItineraryDetail
                        {
                            City        = p.CityName,
                            City_Id     = p.City_Id,
                            Country     = p.CountryName,
                            Country_Id  = p.Country_Id,
                            Date        = (p.STARTDATE == null) ? null : Convert.ToDateTime(p.STARTDATE.ToString()).ToString("yyyy-MM-dd"),
                            Name        = p.Description,
                            Position_Id = p.Position_Id ?? "",
                            Remarks     = p.Details,
                            Time        = p.STARTTIME,
                            Type        = p.ProductType
                        }).ToListAsync();

                        filterPax = filterPax & Builders <mBookingPax> .Filter.Where(f => (f.Booking_Id) == Booking_Id && (f.Status == null || (f.Status != "X" && f.Status != "-")));

                        var bpax = await _MongoContext.mBookingPax.Find(filterPax).Project(p => new BookingPax
                        {
                            Pax_Id     = p.BookingPax_Id,
                            Type       = p.PersonType,
                            Count      = p.PERSONS ?? "0",
                            Age        = p.AGE ?? "N/A",
                            ClientName = p.ClientName,
                            StartDate  = (p.STARTDATE == null) ? null : Convert.ToDateTime(p.STARTDATE.ToString()).ToString("yyyy-MM-dd"),
                            EndDate    = (p.ENDDATE == null) ? null : Convert.ToDateTime(p.ENDDATE.ToString()).ToString("yyyy-MM-dd")
                        }).ToListAsync();

                        filterRooms = filterRooms & Builders <mBookingRooms> .Filter.Where(f => (f.Booking_Id) == Booking_Id && (f.Position_Id == null || f.Position_Id == "") && (f.Status == null || (f.Status != "X" && f.Status != "-")));

                        var broom = await _MongoContext.mBookingRooms.Find(filterRooms).Project(p => new BookingRooms
                        {
                            Room_Id = p.BookingRooms_ID,
                            Type    = (p.ProductTemplate == null) ? "" : p.ProductTemplate.Trim(),
                            For     = (p.PersonType == null) ? "Passenger" : p.PersonType.Trim(),
                            Count   = p.ROOMNO ?? 0
                        }).ToListAsync();

                        filterPositions = filterPositions & Builders <mBookingPositions> .Filter.Where(f => (f.Booking) == request.BookingReference && (f.STATUS == null || (f.STATUS != "X" && f.STATUS != "-" && f.STATUS != "J" && f.STATUS != "C")));

                        var bpos = await _MongoContext.mBookingPositions.Find(filterPositions).Project(p => new BookingPositions
                        {
                            City    = p.City.Trim(),
                            Country = p.Country.Trim(),

                            DriverContact = p.DriverContactNumber,
                            DriverName    = p.DriverName ?? "",
                            DropOffPoint  = p.ENDLOC,
                            Duration      = p.DURATION,
                            EmptyLeg      = (p.EmptyLegs == null) ? "" : p.EmptyLegs.Trim(),
                            EndDate       = (p.ENDDATE == null) ? "" : Convert.ToDateTime(p.ENDDATE.ToString()).ToString("yyyy-MM-dd"),
                            EndTime       = p.ENDTIME,
                            No            = p.ORDERNR ?? 0,
                            PickupPoint   = p.STARTLOC,
                            ProductCode   = p.ProductCode,
                            ProductName   = p.Product,
                            StartDate     = (p.STARTDATE == null) ? "" : Convert.ToDateTime(p.STARTDATE.ToString()).ToString("yyyy-MM-dd"),
                            StartTime     = p.STARTTIME,
                            Status        = p.SatusDesc,
                            Supplier      = p.Supplier,
                            SupplierEmail = p.SENDADDR,
                            SupplierNote  = p.PROPMEMO,
                            SupplierPhone = p.SupplierTel,
                            MealPlan      = p.MealPlan,
                            SupplierConfirmationNumber = p.SUPPCONFNR,
                            ProductType          = p.ProductType,
                            Advice               = p.HotelAdvice,
                            CancellationDeadline = (p.CancelDeadline == null) ? "" : Convert.ToDateTime(p.CancelDeadline.ToString()).ToString("yyyy-MM-dd"),
                            CancellationPolicy   = p.CancellationPolicy,
                            EndSupplier          = p.EndSupplier ?? "",
                            LicencePlate         = p.LicencePlate ?? "",
                            OptionDate           = (p.OPTIONDATE == null) ? "" : Convert.ToDateTime(p.OPTIONDATE.ToString()).ToString("yyyy-MM-dd"),
                            Priority             = p.Priority ?? null,
                            StandardPax          = (p.AUTOSPOS == null) ? null : p.AUTOSPOS.ToString(),
                            Type        = p.PositionType,
                            Position_Id = Convert.ToString(p.Position_Id),
                            Country_Id  = Convert.ToString(p.ParentResort_Id),
                            City_Id     = Convert.ToString(p.Resort_Id),
                        }).ToListAsync();

                        foreach (BookingPositions pos in bpos)
                        {
                            filterPositionPricing = Builders <mBookingPositionPricing> .Filter.Empty;
                            filterPositionPricing = filterPositionPricing & Builders <mBookingPositionPricing> .Filter.Where(f => f.BookingNumber == request.BookingReference);

                            filterPositionPricing = filterPositionPricing & Builders <mBookingPositionPricing> .Filter.Where(f => f.PositionNumber == pos.No);

                            var ppos = await _MongoContext.mBookingPositionPricing.Find(filterPositionPricing).Project(p => new BookingPositionPricing
                            {
                                Age            = (p.AGE == null) ? null : (p.AGE).ToString(),
                                BudgetPrice    = (p.BudgetPrice == null) ? null : (p.BudgetPrice).ToString(),
                                Category       = p.Category,
                                ChargeBasis    = p.PersonType,
                                Currency       = p.BPRICECUR,
                                EndDate        = (p.EndDate == null) ? null : Convert.ToDateTime(p.EndDate.ToString()).ToString("yyyy-MM-dd"),
                                OneOff         = "false",
                                PBR_Id         = p.BookingRooms_Id,
                                PP_Id          = p.PositionPricing_Id,
                                PriceConfirmed = (p.ConfirmedReqPrice == null) ? null : (p.ConfirmedReqPrice).ToString(),
                                PurchasePrice  = (p.BPRICE == null) ? null : (p.BPRICE).ToString(),
                                Quantity       = (p.Quantity == null) ? null : (p.Quantity).ToString(),
                                Service        = (p.ProductTemplate == null) ? null : Convert.ToString(p.ProductTemplate),
                                StartDate      = (p.StartDate == null) ? null : Convert.ToDateTime(p.StartDate.ToString()).ToString("yyyy-MM-dd"),
                            }).ToListAsync();

                            if (ppos != null)
                            {
                                if (ppos.Count > 0)
                                {
                                    foreach (BookingPositionPricing pp in ppos)
                                    {
                                        filterFOC = Builders <mFOCDilution> .Filter.Empty;
                                        filterFOC = filterFOC & Builders <mFOCDilution> .Filter.Where(f => (f.PositionNumber) == pos.No && f.BookingNumber == request.BookingReference && f.ProductTemplate == pp.Service);

                                        var foc = await _MongoContext.mFOCDilution.Find(filterFOC).Project(p => new SupplierFOC
                                        {
                                            FoCBuy = (p.TotalUnits == null) ? null : (p.TotalUnits).ToString(),
                                            FoCGet = (p.FreeUnits == null) ? null : (p.FreeUnits).ToString()
                                        }).ToListAsync();

                                        if (foc != null)
                                        {
                                            if (foc.Count > 0)
                                            {
                                                pp.FOC = foc;
                                            }
                                        }
                                    }



                                    pos.Purchasing = ppos;
                                    pos.Purchasing = pos.Purchasing.OrderBy(c => c.StartDate).ThenBy(c => c.ChargeBasis).ToList();
                                }
                            }
                        }


                        if (bpax != null)
                        {
                            if (bpax.Count > 0)
                            {
                                result.BookingPassengers = bpax;
                            }
                        }
                        if (broom != null)
                        {
                            if (broom.Count > 0)
                            {
                                result.BookingRooms = broom;
                            }
                        }
                        if (bpos != null)
                        {
                            if (bpos.Count > 0)
                            {
                                result.Services = bpos;
                                result.Services = result.Services.OrderBy(c => c.StartDate).ThenBy(c => c.StartTime).ToList();
                            }
                        }
                        if (bItin != null)
                        {
                            if (bItin.Count > 0)
                            {
                                result.Itinerary = bItin;
                                result.Itinerary = result.Itinerary.OrderBy(c => c.Date).ThenBy(c => c.Time).ToList();
                            }
                        }
                    }
                    booking = result;
                }
            }

            /*var result = await _MongoContext.mBookings.Find(filter).Project(p => new BookingDetails
             * {
             *  AgentCode = p.AgentCode,
             *  AgentName = p.AgentName,
             *  AgentReference = p.CUSTREF,
             *  EndDate = (p.EndDate == null) ? "" : p.EndDate.ToString("yyyy-MM-dd"),
             *  BookedDate = Convert.ToDateTime(p.CreaDT.ToString()).ToString("yyyy-MM-dd"),
             *  StartDate = (p.StartDate == null) ? "" : (p.StartDate.ToString("yyyy-MM-dd")),
             *  UpdateDate = Convert.ToDateTime(p.MODIDT.ToString()).ToString("yyyy-MM-dd"),
             *  BookingReference = p.BookingNumber,
             *  Duration = Convert.ToString(p.Duration),
             *  Status = p.StatusDesc,
             *
             *  //BookingPassengers = (_MongoContext.mBookingPax.Find(filterPax & Builders<mBookingPax>.Filter.Where(f => p.BookingId == f.Booking_Id)))
             *  //.Project(p => new BookingPax
             *  //{
             *  //    Count = 1
             *  //}).ToListAsync()),
             *
             * }).ToListAsync();*/

            return(booking);
        }
        public async Task <IActionResult> GetBookingDetail([FromBody] BookingDetailReq request)
        {
            var response = new BookingDetailRes();

            try
            {
                if (!ModelState.IsValid)
                {
                    response.ResponseStatus.Status       = "Failure";
                    response.ResponseStatus.ErrorMessage = "Request is not valid";
                    return(BadRequest(response.ResponseStatus));
                }
                else
                {
                    if (request != null)
                    {
                        var userdetails = Helpers.CreateToken.ReadToken(HttpContext);

                        if (!string.IsNullOrWhiteSpace(request.BookingReference))
                        {
                            if (request.BookingReference.Length == 6)
                            {
                                var result = await _bookingRepository.GetBookingDetail(request, userdetails);

                                if (result != null)
                                {
                                    if (result.BookingReference == null)
                                    {
                                        response.ResponseStatus.Status       = "Failure";
                                        response.ResponseStatus.ErrorMessage = "User is not authorised to acess the booking " + request.BookingReference;
                                        //return NotFound(response.ResponseStatus);
                                        return(Unauthorized());
                                    }
                                    else
                                    {
                                        response.ResponseStatus.Status = "Success";
                                        response.Booking = result;
                                    }
                                }
                                else
                                {
                                    response.ResponseStatus.Status       = "Failure";
                                    response.ResponseStatus.ErrorMessage = "User is not authorised to update the booking " + request.BookingReference;
                                    return(NotFound(response.ResponseStatus));
                                }
                            }
                            else
                            {
                                response.ResponseStatus.Status       = "Failure";
                                response.ResponseStatus.ErrorMessage = "InValid Booking Reference";
                                return(BadRequest(response.ResponseStatus));
                            }
                        }
                        else
                        {
                            response.ResponseStatus.Status       = "Failure";
                            response.ResponseStatus.ErrorMessage = "Booking Reference cannot be blank";
                            return(BadRequest(response.ResponseStatus));
                        }
                    }
                    else
                    {
                        response.ResponseStatus.Status       = "Failure";
                        response.ResponseStatus.ErrorMessage = "Booking Reference Number can not be blank.";
                        return(BadRequest(response.ResponseStatus));
                    }
                }
            }
            catch (Exception ex)
            {
                response.ResponseStatus.Status       = "Failure";
                response.ResponseStatus.ErrorMessage = "An error occurs " + ex.Message.ToString();
                return(BadRequest(response.ResponseStatus));
            }
            return(Ok(response));
        }