/// <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); }
private List <AccomodationPolicy> CalcBasicRate(List <AccomodationPolicy> roomPolicy, string weekDays, int roomType) { AccomodationPolicy policy = roomPolicy.Find(m => m.WeekDays.Contains(weekDays.ToString()) && m.RoomType == roomType); policy.StayDays = policy.StayDays + 1; policy.Price = policy.StayDays * policy.BasicRate; //policy.SubTotal = policy.Price; return(roomPolicy); }