private List <InternalOrder> BuildOrders(IEnumerable <InternalOrder> temp) { var result = new List <InternalOrder>(); foreach (InternalOrder item in temp) { for (int i = 0; i < item.LengthOfStay; i++) { var order = new InternalOrder { BookingTime = item.BookingTime, CheckIn = item.CheckIn.AddDays(i), Type = item.Type, LengthOfStay = item.LengthOfStay, RoomPrice = item.RoomPrice, MealPrice = item.MealPrice, RoomType = item.RoomType, CategoryInfo = item.CategoryInfo, Status = item.Status, MealType = item.MealType }; BuildOrder(order); result.Add(order); } } return(result); }
private void BuildOrder(InternalOrder order, bool withCategory) { order.SeasonType = 0; int w = order.CheckIn.GetWeekNumber(); foreach (SeasonDescription x in _config.ConfigurationRoot.Seasons.SeasonDescriptions) { if (w >= x.Start && w <= x.Finish) { order.SeasonType = x.Number; break; } } order.WeekdayType = 0; switch (order.CheckIn.DayOfWeek) { case DayOfWeek.Sunday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Sunday; break; case DayOfWeek.Monday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Monday; break; case DayOfWeek.Tuesday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Tuesday; break; case DayOfWeek.Wednesday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Wednesday; break; case DayOfWeek.Thursday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Thursday; break; case DayOfWeek.Friday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Friday; break; case DayOfWeek.Saturday: order.WeekdayType = _config.ConfigurationRoot.Weekdays.Saturday; break; } if (withCategory) { order.CategoryInfo = _config.ConfigurationRoot.GetCategoryId(order.LengthOfStay, (order.CheckIn.Date - order.BookingTime.Date).Days); //order.CategoryInfo = 0; //foreach (OptionDescription x in _config.ConfigurationRoot.Categories.StayPeriods) // if (order.LengthOfStay >= x.LowerBound && order.LengthOfStay <= x.UpperBound) // { // order.CategoryInfo = x.Number; // break; // } //var total = _config.ConfigurationRoot.Categories.BookingPeriods.Count(); //if (total > 0) // order.CategoryInfo *= total; //foreach (OptionDescription x in _config.ConfigurationRoot.Categories.BookingPeriods) // if ((order.CheckIn.Date - order.BookingTime.Date).Days >= x.LowerBound && (order.CheckIn.Date - order.BookingTime.Date).Days <= x.UpperBound) // { // order.CategoryInfo += x.Number; // break; // } } }
private IEnumerable <InternalOrder> ParseOrders(string ordersPath) { return(System.IO.File.ReadAllLines(ordersPath).Select(x => { string[] s = x.Split(';'); var item = new InternalOrder { BookingTime = DateTime.Parse(s[0]), CheckIn = DateTime.Parse(s[1]), LengthOfStay = int.Parse(s[2]), RoomPrice = double.Parse(s[3]), RoomType = int.Parse(s[4]), Type = (BookingType)int.Parse(s[5]), Status = (BookingStatus)int.Parse(s[6]), MealType = s.Length < 8?0:int.Parse(s[7]) }; BuildOrder(item, true); return item; })); }