예제 #1
0
        // Old Reservation code to show Popup , assign section color and Show reservation for a Table.
        //private void CheckReservations(AISModels.FloorTable table, DateTime? startTime, DateTime? endTime)
        //{
        //    var design = table.TableDesign;
        //    var TableName = this.GetMatchedTagsFromHtml(design, String.Format("<h3>(.*?)</h3>")).FirstOrDefault();
        //    if (!string.IsNullOrEmpty(TableName))
        //    {
        //        Reservation reservation = null;
        //        if (startTime.HasValue)
        //        {
        //            if (startTime.HasValue && endTime.HasValue)
        //            {
        //                reservation = table.Reservations.Where(r => r.TimeForm <= startTime.Value && r.TimeTo >= endTime.Value).FirstOrDefault();
        //            }
        //            else
        //            {
        //                var start = startTime.Value.Date.AddTicks(DateTime.UtcNow.TimeOfDay.Ticks);
        //                reservation = table.Reservations.Where(r => r.TimeForm <= start && r.TimeTo >= start).FirstOrDefault();
        //            }
        //        }
        //        else
        //        {
        //            reservation = table.Reservations.Where(r => r.TimeForm <= DateTime.UtcNow && r.TimeTo >= DateTime.UtcNow).FirstOrDefault();
        //        }
        //        if (reservation != null)
        //        {
        //            //table.TableDesign = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/red-s.png\" class=\"table-img\">");
        //            design = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/red-s.png\" class=\"table-img\">");
        //            var regex = new Regex(@"([\w-]+)\s*:\s*([^;]+)");
        //            var match = regex.Match(GetMatchedTagsFromHtml(design, String.Format("<div[^>]*?class=([\"'])[^>]*{0}[^>]*\\1[^>]*>", "table-main")).FirstOrDefault());
        //            while (match.Success)
        //            {
        //                var key = match.Groups[1].Value;
        //                var value = match.Groups[2].Value;
        //                if (key == "top")
        //                {
        //                    design = design.Replace(value, reservation.TablePositionTop);
        //                }
        //                if (key == "left")
        //                {
        //                    design = design.Replace(value, reservation.TablePositionLeft);
        //                }
        //                match = match.NextMatch();
        //            }
        //            var popup = this.RenderPartialViewToString("ReservationPopupPartial", reservation);
        //            StringBuilder designer = new StringBuilder();
        //            designer.Append(design.Substring(0, design.Length - 6));
        //            designer.Append(popup + "</div>");
        //            table.TableDesign = designer.ToString();
        //        }
        //        else
        //        {
        //            table.TableDesign = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/green-a.png\" class=\"table-img\">");
        //        }
        //    }
        //}
        private void CheckReservations(AISModels.FloorTable table, DateTime? startTime, DateTime? endTime, int? shiftId, out int coverCount)
        {
            coverCount = 0;
            var design = table.TableDesign;

            var TableName = this.GetMatchedTagsFromHtml(design, String.Format("<h3(.*?)>(.*?)</h3>")).FirstOrDefault();

            if (!string.IsNullOrEmpty(TableName))
            {
                IEnumerable<Reservation> reservation = table.Reservations.Where(r => !r.IsDeleted && r.FloorPlanId == table.FloorPlanId).AsEnumerable();

                if (!shiftId.HasValue)
                {
                    if (startTime.HasValue)
                    {
                        if (startTime.HasValue && endTime.HasValue)
                        {
                            reservation = reservation.Where(r => r.TimeForm <= startTime.Value && r.TimeTo >= endTime.Value).AsEnumerable();
                        }
                        else
                        {
                            var start = startTime.Value.Date.AddTicks(DateTime.UtcNow.TimeOfDay.Ticks);
                            reservation = reservation.Where(r => r.TimeForm <= start && r.TimeTo >= start).AsEnumerable();
                        }
                    }
                    else
                    {
                        reservation = reservation.Where(r => r.TimeForm <= DateTime.UtcNow && r.TimeTo >= DateTime.UtcNow).AsEnumerable();
                    }
                }
                else
                {
                    if (startTime.HasValue)
                    {
                        reservation = reservation.Where(r => r.ReservationDate == startTime.Value.Date).AsEnumerable();
                    }
                    else
                    {
                        reservation = reservation.Where(r => r.ReservationDate == DateTime.UtcNow.Date).AsEnumerable();
                    }

                    if (shiftId.Value != 0)
                    {
                        reservation = reservation.Where(r => r.FoodMenuShiftId == shiftId.Value).AsEnumerable();
                    }
                }

                if (reservation.Count() > 0)
                {
                    //table.TableDesign = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/red-s.png\" class=\"table-img\">");

                    design = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/red-s.png\" class=\"table-img\">");

                    //var regex = new Regex(@"([\w-]+)\s*:\s*([^;]+)");
                    //var match = regex.Match(GetMatchedTagsFromHtml(design, String.Format("<div[^>]*?class=([\"'])[^>]*{0}[^>]*\\1[^>]*>", "table-main")).FirstOrDefault());
                    //while (match.Success)
                    //{
                    //    var key = match.Groups[1].Value;
                    //    var value = match.Groups[2].Value;
                    //    if (key == "top")
                    //    {
                    //        design = design.Replace(value, reservation.TablePositionTop);
                    //    }

                    //    if (key == "left")
                    //    {
                    //        design = design.Replace(value, reservation.TablePositionLeft);
                    //    }

                    //    match = match.NextMatch();
                    //}

                    var popup = this.RenderPartialViewToString("ReservationListPartial", reservation);

                    StringBuilder designer = new StringBuilder();
                    designer.Append(design.Substring(0, design.LastIndexOf("</div>")));
                    designer.Append(popup + "</div>");

                    table.TableDesign = designer.ToString();

                    coverCount = reservation.Sum(r => r.Covers);
                }
                else
                {
                    table.TableDesign = design.Replace(TableName, TableName + "<img alt=\"\" src=\"/images/green-a.png\" class=\"table-img\">");
                }
            }
        }
예제 #2
0
        private void ChangeChairColor(AISModels.FloorTable table)
        {
            var design = table.TableDesign;
            var section = table.Section;

            if (section != null)
            {
                var sectionColor = section.Color;

                var seats = this.GetMatchedTagsFromHtml(design, String.Format("<div[^>]*?class=([\"'])[^>]*{0}[^>]*\\1[^>]*>(\r*?\n*?)(.*?)</div>", "seat "));

                foreach (var seat in seats)
                {
                    if (seat.IndexOf("style") > 0)
                    {
                        design = design.Replace(seat, seat.Replace("style=\"", "style=\"background:" + sectionColor + ";"));
                    }
                    else
                    {
                        design = design.Replace(seat, seat.Replace("<div", "<div style=\"background:" + sectionColor + ";\""));
                    }
                }

                table.TableDesign = design;
            }
        }