예제 #1
0
        public ActionResult DetailOpenOrder(DetailOpenOrderModelFilter filter = null, int pageNumber = 1)
        {
            int totalRecords = 0;
            var model        = _eventReportingService.GetDetailOpenOrderModel(pageNumber, _pageSize, filter, out totalRecords);

            if (model == null)
            {
                model = new DetailOpenOrderListModel();
            }

            model.Filter = filter;


            var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
            Func <int, string> urlFunc =
                pn =>
                Url.Action(currentAction,
                           new
            {
                pageNumber = pn,
                filter.FromDate,
                filter.ToDate,
                filter.IsRetailEvent,
                filter.IsCorporateEvent,
                filter.IsPublicEvent,
                filter.IsPrivateEvent
            });

            model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);

            return(View(model));
        }
        public DetailOpenOrderListModel Create(IEnumerable <Event> events, IEnumerable <Host> hosts, IEnumerable <Pod> pods, IEnumerable <OrderedPair <long, int> > bookedSlots, IEnumerable <OrderedPair <long, int> > unservicedAppts,
                                               IEnumerable <OrderedPair <long, int> > noShowAppts, IEnumerable <OrderedPair <long, int> > cancelledAppts, IEnumerable <OrderedPair <long, decimal> > eventIdOpenOrderTotalPairs,
                                               IEnumerable <OrderedPair <long, decimal> > eventIdTotalOutstandingRevenuePairs, IEnumerable <OrderedPair <long, decimal> > eventIdNoShowOutstandingRevenuePairs, IEnumerable <OrderedPair <long, decimal> > eventIdCancelledOutstandingRevenuePairs)
        {
            var model = new DetailOpenOrderListModel();
            var detailOpenOrdersModels = new List <DetailOpenOrdersModel>();

            events.ToList().ForEach(e =>
            {
                var host = hosts.Where(h => h.Id == e.HostId).FirstOrDefault();

                var eventPods                   = pods.Where(p => e.PodIds.Contains(p.Id)).ToList();
                var slotCount                   = bookedSlots.Where(bs => bs.FirstValue == e.Id).FirstOrDefault().SecondValue;
                var unservicedAppt              = unservicedAppts.Where(ua => ua.FirstValue == e.Id).Select(ua => ua.SecondValue).SingleOrDefault();
                var noShowAppt                  = noShowAppts.Where(ns => ns.FirstValue == e.Id).Select(ns => ns.SecondValue).SingleOrDefault();
                var cencelledAppt               = cancelledAppts.Where(ca => ca.FirstValue == e.Id).Select(ca => ca.SecondValue).SingleOrDefault();
                var orderAmount                 = eventIdOpenOrderTotalPairs.Where(eo => eo.FirstValue == e.Id).Select(eo => eo.SecondValue).SingleOrDefault();
                var totalOutstandingRevenue     = eventIdTotalOutstandingRevenuePairs.Where(or => or.FirstValue == e.Id).Select(or => or.SecondValue).SingleOrDefault();
                var noShowOutstandingRevenue    = eventIdNoShowOutstandingRevenuePairs.Where(or => or.FirstValue == e.Id).Select(or => or.SecondValue).SingleOrDefault();
                var cancelledOutstandingRevenue = eventIdCancelledOutstandingRevenuePairs.Where(or => or.FirstValue == e.Id).Select(or => or.SecondValue).SingleOrDefault();

                detailOpenOrdersModels.Add(new DetailOpenOrdersModel()
                {
                    EventDate = e.EventDate,
                    Location  = host.OrganizationName + " - " + host.Address.City + ", " + host.Address.State,
                    Pod       =
                        string.Join(", ",
                                    eventPods.Select(
                                        ep => ep.Name)),
                    OpenOrderTotal = orderAmount,
                    OutstandingUnservicedRevenue = totalOutstandingRevenue - cancelledOutstandingRevenue,
                    OutstandingNoShowRevenue     = noShowOutstandingRevenue,
                    OutstandingCancelledRevenue  = cancelledOutstandingRevenue,
                    OutstandingTotalRevenue      = totalOutstandingRevenue,
                    UnPaid = orderAmount - totalOutstandingRevenue,
                    ScheduledAppointments  = slotCount,
                    UnServicedAppointments = unservicedAppt,
                    NoShowAppointments     = noShowAppt,
                    CancelledAppointments  = cencelledAppt,
                    EventId = e.Id
                });
            });

            model.Collection = detailOpenOrdersModels;
            return(model);
        }