Exemplo n.º 1
0
        //取消政策條列化
        public static ProductforEcModel setCancelPolicy(ProductforEcModel prod, Dictionary <string, string> uiKey)
        {
            List <CancelPolicy> policyList = new List <CancelPolicy>();
            CancelPolicy        policy     = null;

            int i       = 0;
            int preDate = 0;

            foreach (Policy p in prod.policy_list)
            {
                policy      = new CancelPolicy();
                policy.sort = i;
                policy.ed   = Convert.ToInt32(p.days);
                policy.sd   = (i == 0) ? 0 : preDate + 1;

                if (p.is_over)
                {
                    policy.showRange = policy.ed + uiKey["common_days_more"].ToString();
                }
                else
                {
                    policy.showRange = $"{policy.sd}~{policy.ed}" + uiKey["common_days_prior"].ToString();
                }
                policy.showPercent = p.fee == 0 ? uiKey["product_index_refundable"].ToString() : p.fee == 100 ? uiKey["product_index_non_refundable"] : p.fee + "%";

                policyList.Add(policy);
                preDate = policy.ed;
                i++;
            }

            policyList            = policyList.OrderByDescending(x => x.sort).ToList();
            prod.cancelPolicyList = policyList;

            return(prod);
        }
Exemplo n.º 2
0
        public async Task <CancelPolicy> GETPolicyDetails(string HotelId, string SessionID)
        {
            CancelPolicy policy = new CancelPolicy();

            using (SqlCommand cmd = new SqlCommand("MS_SelectCancelPolicy", Db_Con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("sessionID", SessionID);
                cmd.Parameters.AddWithValue("HotelID", HotelId);
                var reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    CancelPenalty cancel = new CancelPenalty();
                    cancel.currency    = reader["Currency"].ToString();
                    cancel.hoursBefore = int.Parse(reader["hoursBefore"].ToString());
                    cancel.penaltyType = reader["Type"].ToString();
                    cancel.value       = float.Parse(reader["Value"].ToString());
                    policy.refundable  = bool.Parse(reader["PolicyRefundable"].ToString());


                    policy.cancelPenalties.Add(cancel);
                    //    TestList.Add(test);
                }
            }
            return(policy);
        }
Exemplo n.º 3
0
        public async Task <CancelPolicy> GEtPolicyData(string HotelID, string SessionId)
        {
            CancelPolicy cancelPolicy = new CancelPolicy();

            cancelPolicy = await db.GETPolicyDetails(HotelID, SessionId);

            return(cancelPolicy);
        }
 public static void SaveResponseToDB(CheckAvailabilityResult res, double newCost, AvailabilityReq req, string currency, string src)
 {
     try
     {
         using (HotelBookingDBEntities db = new HotelBookingDBEntities())
         {
             AvailabilityRe availabilityRes = new AvailabilityRe();
             availabilityRes.TotalsellPrice = res.TotalCost;
             availabilityRes.NewTotalcost   = newCost;
             availabilityRes.OldTotalcost   = req.TotalCost;
             availabilityRes.BookingNum     = req.BookingNum;
             availabilityRes.PID            = req.PID;
             availabilityRes.SellCurrency   = currency;
             availabilityRes.Sid            = req.Sid;
             availabilityRes.Status         = res.Status;
             availabilityRes.hotelCode      = req.HotelCode;
             db.AvailabilityRes.Add(availabilityRes);
             foreach (var item in res.Result)
             {
                 availabilityRoomRe roomRes = new availabilityRoomRe();
                 roomRes.BookingNum = req.BookingNum;
                 roomRes.Pid        = req.PID;
                 roomRes.Sid        = req.Sid;
                 roomRes.RoomRef    = item.RoomCode;
                 roomRes.Cost       = item.CostPrice;
                 roomRes.Courrency  = currency;
                 roomRes.roomId     = item.RoomIndex;
                 roomRes.SellPrice  = item.TotalSellPrice;
                 if (src == "policy")
                 {
                     foreach (var cancel in item.cancellationRules)
                     {
                         CancelPolicy policy = new CancelPolicy();
                         policy.Cost = (decimal)cancel.Cost;
                         //if (req.PID == "4")
                         //{
                         //policy.Currency = "EUR";
                         policy.Currency = currency;
                         // }
                         //else if (req.PID == "2")
                         //{
                         //policy.Currency = "USD";
                         // }
                         policy.FromDate         = DateTime.Parse(cancel.FromDate);
                         policy.HotelCode        = req.HotelCode;
                         policy.ProviderCurrency = currency;
                         policy.ProviderID       = req.PID;
                         policy.RoomCode         = item.RoomIndex;
                         policy.SellPrice        = (decimal)cancel.Price;
                         policy.Sid = req.Sid;
                         if (cancel.ToDate != null)
                         {
                             policy.ToDate = DateTime.Parse(cancel.ToDate);
                         }
                         db.CancelPolicies.Add(policy);
                     }
                 }
                 db.availabilityRoomRes.Add(roomRes);
             }
             if (res.Status != 0)
             {
                 var bookingData = db.HotelsBookings.FirstOrDefault(a => a.SessionId == req.Sid && a.Booking_No == req.BookingNum);
                 if (bookingData != null)
                 {
                     bookingData.Sell_Price = res.TotalCost;
                 }
             }
             db.SaveChanges();
         }
     }
     catch (Exception ex)
     {
         LoggingHelper.WriteToFile("AvailabilityController/Errors/", "CheckAvailabilityRepo" + "SaveResponseToDB" + req.Sid, ex.InnerException?.Message, ex.Message + ex.StackTrace);
     }
 }
Exemplo n.º 5
0
        public Task <bool> CancelPolicy(string PolicyNumber)
        {
            var obj = new CancelPolicy(PolicyNumber);

            return(obj.ExecuteReaderAsync());
        }