示例#1
0
        private List <AccomodationPolicy> CalcDiscountRate(List <AccomodationPolicy> roomPolicy, int totalstaydays)
        {
            foreach (AccomodationPolicy policy in roomPolicy)
            {
                int    leftStayDays  = policy.StayDays;
                double totalDiscount = 0;
                AccomodationDiscountPolicy discountPolicy1 = policy.DiscountPolicy[0];
                AccomodationDiscountPolicy discountPolicy2 = policy.DiscountPolicy[1];

                //foreach (AccomodationDiscountPolicy discountPolicy in policy.DiscountPolicy)
                //{
                if (totalstaydays >= discountPolicy1.DiscountDays)
                {
                    totalDiscount = totalDiscount + discountPolicy1.DiscountRate * policy.BasicRate * policy.StayDays;
                    // leftStayDays = totalstaydays - policy.StayDays;
                }
                else if (totalstaydays <= discountPolicy2.DiscountDays)
                {
                    totalDiscount = totalDiscount + discountPolicy2.DiscountRate * policy.BasicRate * policy.StayDays;
                }
                //}
                policy.DiscountPrice = totalDiscount;
                policy.SubTotal      = policy.Price - totalDiscount;
            }
            return(roomPolicy);
        }
示例#2
0
        /// <summary>
        /// online
        /// </summary>
        /// <param name="order"></param>
        private List <AccomodationPolicy> GetRoomPolicy(DateTime checkin, DateTime checkout, List <AccomodationDiscountPolicy> allDiscountRate)
        {
            StringBuilder sql = new StringBuilder();

            sql.AppendLine("SELECT ");
            sql.AppendLine(" P.RoomPolicyID, P.StartDate, P.EndDate, P.RoomType,");
            sql.AppendLine(" P.WeekDays, P.BasicRate as BasicRateID, P.DiscountRate, R.BasicRate");
            sql.AppendLine(" FROM RoomPolicy P WITH(NOLOCK)");
            sql.AppendLine(" left join RoomRate R WITH(NOLOCK) on P.BasicRate = R.RoomRateID and R.IsDelete = 0");
            sql.AppendLine(" WHERE P.IsDelete = 0");
            sql.AppendLine(" and ((P.StartDate <= @CheckinDate and P.EndDate>=@CheckinDate)");
            sql.AppendLine(" or (P.StartDate <= @CheckoutDate and P.EndDate>=@CheckoutDate))");

            SqlParameter[] paras = new SqlParameter[2];
            paras[0] = new SqlParameter("@CheckinDate", checkin);
            paras[1] = new SqlParameter("@CheckoutDate", checkout);

            SqlAccess mySqlAccess = new SqlAccess();
            DataSet   ds          = mySqlAccess.ExecuteAdapter(sql.ToString(), paras);

            List <AccomodationPolicy> accomodationPolicys = new List <AccomodationPolicy>();

            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                foreach (DataRow rw in ds.Tables[0].Rows)
                {
                    AccomodationPolicy policy = new AccomodationPolicy();
                    policy.RoomType  = Convert.ToInt32(rw["RoomType"]);
                    policy.StartDate = Convert.ToDateTime(rw["StartDate"]);
                    policy.EndDate   = Convert.ToDateTime(rw["EndDate"]);
                    policy.WeekDays  = rw["WeekDays"].ToString();

                    policy.BasicRateID = Convert.ToInt32(rw["BasicRateID"]);
                    policy.BasicRate   = Convert.ToDouble(rw["BasicRate"]);

                    policy.DiscountPolicy = new List <AccomodationDiscountPolicy>();

                    List <AccomodationDiscountPolicy> lst = new List <AccomodationDiscountPolicy>();
                    if (!string.IsNullOrEmpty(rw["DiscountRate"].ToString()))
                    {
                        string[] ratesID = rw["DiscountRate"].ToString().Split(',');
                        foreach (string rateID in ratesID)
                        {
                            AccomodationDiscountPolicy discountPolicy = allDiscountRate.Find(m => m.RoomRateID.ToString() == rateID);
                            if (discountPolicy != null)
                            {
                                lst.Add(discountPolicy);
                            }
                        }

                        var a = from t in lst orderby t.DiscountDays descending select t;
                        policy.DiscountPolicy = a.ToList <AccomodationDiscountPolicy>();
                    }
                    accomodationPolicys.Add(policy);
                }
            }

            return(accomodationPolicys);
        }