Beispiel #1
0
        public ActionResult DeferredRevenue(DeferredRevenueListModelFilter filter = null, int pageNumber = 1)
        {
            var filterValidator = IoC.Resolve <DeferredRevenueListModelFilterValidator>();
            var result          = filterValidator.Validate(filter);

            if (result.IsValid)
            {
                int totalRecords = 0;
                var model        = _financeReportingService.GetDeferredRevenue(pageNumber, _pageSize, filter, out totalRecords);

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

                model.Filter = filter;


                var currentAction          = ControllerContext.RouteData.Values["action"].ToString();
                Func <int, string> urlFunc =
                    pn =>
                    Url.Action(currentAction,
                               new
                {
                    pageNumber = pn,
                    filter.FromEventDate,
                    filter.ToEventDate,
                    filter.EventId,
                    filter.Pod,
                    filter.PaidCustomers,
                    filter.UnPaidCustomers,
                    filter.FromRegistrationDate,
                    filter.ToRegistrationDate,
                    filter.IsRetailEvent,
                    filter.IsCorporateEvent,
                    filter.IsPublicEvent,
                    filter.IsPrivateEvent
                });
                model.PagingModel = new PagingModel(pageNumber, _pageSize, totalRecords, urlFunc);

                return(View(model));
            }
            var propertyNames = result.Errors.Select(e => e.PropertyName).Distinct();
            var htmlString    = propertyNames.Aggregate("", (current, property) => current + (result.Errors.Where(e => e.PropertyName == property).FirstOrDefault().ErrorMessage + "<br />"));

            return(View(new DeferredRevenueListModel {
                Filter = filter, FeedbackMessage = FeedbackMessageModel.CreateFailureMessage(htmlString)
            }));
        }
Beispiel #2
0
        public DeferredRevenueListModel Create(IEnumerable <EventCustomer> eventCustomers, IEnumerable <Event> events, IEnumerable <Pod> pods, IEnumerable <Customer> customers, IEnumerable <OrderedPair <long, string> > ecAndPackagePair,
                                               IEnumerable <OrderedPair <long, string> > ecAndTestPair, IEnumerable <OrderedPair <long, long> > orderIdEventCustomerIdPairs, IEnumerable <Host> hosts,
                                               IEnumerable <DeferredRevenueViewModel> eventRevenueWiseDetails, IEnumerable <OrderedPair <long, decimal> > eventCustomerIdOrderTotalPairs, IEnumerable <OrderedPair <long, decimal> > eventCustomerIdTotalPaymentPairs)
        {
            var listModel  = new DeferredRevenueListModel();
            var collection = new List <DeferredRevenueViewModel>();

            foreach (var @event in events)
            {
                var podNames  = string.Join(", ", pods.Where(p => @event.PodIds.Contains(p.Id)).Select(p => p.Name));
                var host      = hosts.Where(h => h.Id == @event.HostId).First();
                var viewModel = eventRevenueWiseDetails != null?eventRevenueWiseDetails.Where(e => e.EventId == @event.Id).SingleOrDefault() : null;

                if (viewModel == null)
                {
                    viewModel = new DeferredRevenueViewModel
                    {
                        EventId        = @event.Id,
                        EventName      = @event.Name,
                        EventDate      = @event.EventDate,
                        EventAddress   = Mapper.Map <Address, AddressViewModel>(host.Address),
                        Pod            = podNames,
                        TotalLiability = 0
                    };
                }
                else
                {
                    viewModel.EventName    = @event.Name;
                    viewModel.EventDate    = @event.EventDate;
                    viewModel.EventAddress = Mapper.Map <Address, AddressViewModel>(host.Address);
                    viewModel.Pod          = podNames;
                }

                var customerModels      = new List <DeferredRevenueCustomerViewModel>();
                var customersOfTheEvent = eventCustomers.Where(ec => ec.EventId == @event.Id);
                foreach (var eventCustomer in customersOfTheEvent)
                {
                    var customer = customers.Where(c => c.CustomerId == eventCustomer.CustomerId).Single();

                    var packagename =
                        string.Join(", ", ecAndPackagePair.Where(p => p.FirstValue == eventCustomer.Id).Select(p => p.SecondValue).ToArray());

                    var tests = string.Join(", ", ecAndTestPair.Where(p => p.FirstValue == eventCustomer.Id).Select(p => p.SecondValue).ToArray());

                    if (string.IsNullOrEmpty(packagename))
                    {
                        packagename = tests;
                    }
                    else if (!string.IsNullOrEmpty(tests))
                    {
                        packagename += " + " + tests;
                    }

                    var orderId =
                        orderIdEventCustomerIdPairs.Where(oe => oe.SecondValue == eventCustomer.Id).Select(oe => oe.FirstValue).Single();

                    var eventCustomerIdOrderTotalPair = eventCustomerIdOrderTotalPairs.Where(ecot => ecot.FirstValue == eventCustomer.Id).Single();

                    var eventCustomerIdTotalPaymentPair = eventCustomerIdTotalPaymentPairs.Where(ectp => ectp.FirstValue == eventCustomer.Id).Single();

                    var customerModel = new DeferredRevenueCustomerViewModel
                    {
                        CustomerId    = customer.CustomerId,
                        CustomerName  = customer.NameAsString,
                        CustomerPhone = customer.HomePhoneNumber,
                        Email         = customer.Email != null?customer.Email.ToString() : "",
                                            CustomerAddress  = Mapper.Map <Address, AddressViewModel>(customer.Address),
                                            CustomerOrder    = packagename,
                                            OrderId          = orderId,
                                            DiscountedTotal  = eventCustomerIdOrderTotalPair.SecondValue,
                                            TotalPayment     = eventCustomerIdTotalPaymentPair.SecondValue,
                                            RegistrationDate = eventCustomer.DataRecorderMetaData.DateCreated
                    };

                    customerModels.Add(customerModel);
                }
                viewModel.Customers = customerModels;
                collection.Add(viewModel);
            }
            listModel.Collection = collection;
            return(listModel);
        }