/// <summary>
        /// Get details of Hospitality Product groups and its Fixtures
        /// </summary>
        /// <param name="inputModel">The given hospitality product group list input model</param>
        /// <returns>Hospitality Product groups and its fixtures list</returns>
        public HospitalityProductGroupViewModel GetHospitalityProductGroups(HospitalityProductGroupInputModel inputModel)
        {
            HospitalityProductGroupViewModel viewModel            = new HospitalityProductGroupViewModel(getContentAndAttributes: true);
            DataSet                    dsProductGroupList         = new DataSet();
            DataSet                    dsProductGroupFixturesList = new DataSet();
            ErrorObj                   err      = new ErrorObj();
            DEProductDetails           de       = new DEProductDetails();
            DESettings                 settings = Environment.Settings.DESettings;
            List <ProductGroupDetails> productGroupDetailsList  = new List <ProductGroupDetails>();
            List <ProductDetails>      productGroupFixturesList = new List <ProductDetails>();

            dsProductGroupList = retrieveProductGroups();
            viewModel.Error    = Data.PopulateErrorObject(err, dsProductGroupList, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 2);

            if (!viewModel.Error.HasError)
            {
                productGroupDetailsList = Data.PopulateObjectListFromTable <ProductGroupDetails>(dsProductGroupList.Tables["ProductGroupsDetails"]);
                foreach (ProductGroupDetails productGroup in productGroupDetailsList)
                {
                    HospitalityProductGroupInputModel inputModelProductGroup = new HospitalityProductGroupInputModel();
                    inputModelProductGroup.ProductGroupCode = productGroup.GroupId;
                    dsProductGroupFixturesList = retrieveProductGroupFixtures(inputModelProductGroup.ProductGroupCode);
                    viewModel.Error            = Data.PopulateErrorObject(err, dsProductGroupFixturesList, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 2);

                    if (!viewModel.Error.HasError)
                    {
                        productGroup.ProductGroupFixturesList = new List <ProductDetails>();
                        productGroup.ProductGroupFixturesList = Data.PopulateObjectListFromTable <ProductDetails>(dsProductGroupFixturesList.Tables["ProductGroupFixturesDeatils"]);
                    }
                }
                viewModel.ProductGroupDetailsList = productGroupDetailsList;
            }
            return(viewModel);
        }
Beispiel #2
0
        private List <TicketExchangeProducts> GetTicketExchangeProducts(int YearsOfPastProductsToShow, string ProductCodeDateDescriptionMask)
        {
            List <TicketExchangeProducts> productList = new List <TicketExchangeProducts>();

            // Call Talent Common
            // Retrieve the table form Talent Common
            // Turn this data into a list for the viewmodel
            DEProductDetails deProduct = new DEProductDetails();

            deProduct.ProductType               = GlobalConstants.HOMEPRODUCTTYPE;
            deProduct.ProductSubtype            = string.Empty;
            deProduct.ProductSupertype          = string.Empty;
            deProduct.YearsOfPastProductsToShow = YearsOfPastProductsToShow;
            ErrorObj      err           = new ErrorObj();
            TalentProduct talentProduct = new TalentProduct();

            talentProduct.Settings          = Environment.Settings.DESettings;
            talentProduct.Settings.Cacheing = true;
            talentProduct.De = deProduct;
            err = talentProduct.RetrieveProductsFiltered();
            DataTable products = talentProduct.ResultDataSet.Tables["ProductEntries"];

            if (!err.HasError)
            {
                productList = Data.PopulateObjectListFromTable <TicketExchangeProducts>(products);
                productList = productList.OrderByDescending(x => x.ProductDate).ToList();
            }



            foreach (var product in productList)
            {
                StringBuilder sBProductCodeDateDescriptionMask = new StringBuilder(ProductCodeDateDescriptionMask);
                sBProductCodeDateDescriptionMask.Replace("<<ProductCode>>", Utilities.CheckForDBNull_String(product.ProductCode));
                sBProductCodeDateDescriptionMask.Replace("<<ProductDate>>", Utilities.CheckForDBNull_String(Utilities.ISeriesDate(product.ProductDate.ToString())));
                sBProductCodeDateDescriptionMask.Replace("<<ProductDescription>>", Utilities.CheckForDBNull_String(product.ProductDescription));
                product.ProductMask = sBProductCodeDateDescriptionMask.ToString();
            }


            return(productList);
        }
Beispiel #3
0
        public ProductAvailabilityViewModel GetProductAvailability(ProductAvailabilityInputModel inputModel)
        {
            _viewModel = new ProductAvailabilityViewModel(true, "StandAndAreaSelection.ascx");
            Mapper.CreateMap <ProductAvailabilityInputModel, DEProductDetails>();
            ErrorObj  err = new ErrorObj();
            DataTable dtStadiumAvailability  = new DataTable();
            DataTable dtAvailablePriceBreaks = new DataTable();
            DataTable dtPriceBreakPrices     = new DataTable();
            DataTable dtProductPriceBands    = new DataTable();

            _rovingAreaPrefix        = "*";
            _rovingAreaText          = _viewModel.GetControlText("RovingAreaText");
            _rovingAreaPrefixAndText = _rovingAreaPrefix + _rovingAreaText;
            if (inputModel.StandCode != null)
            {
                if (inputModel.StandCode.Contains(_rovingAreaPrefixAndText))
                {
                    inputModel.StandCode = inputModel.StandCode.Substring(0, inputModel.StandCode.IndexOf(_rovingAreaPrefix));
                }
            }
            _deProdDetails = Mapper.Map <DEProductDetails>(inputModel);

            dtStadiumAvailability = getStadiumAvailability(err);
            if (!_viewModel.Error.HasError)
            {
                dtAvailablePriceBreaks = getAvailablePriceBreaks(err);
                if (!_viewModel.Error.HasError)
                {
                    dtPriceBreakPrices = getPriceBreakPrices(err, inputModel.PriceBreakId);
                    if (!_viewModel.Error.HasError)
                    {
                        dtProductPriceBands = getProductPriceBands(err);
                        if (!_viewModel.Error.HasError)
                        {
                            buildViewModel(dtStadiumAvailability, dtAvailablePriceBreaks, dtPriceBreakPrices, dtProductPriceBands, inputModel.PriceBreakId, inputModel.DefaultPriceBand, inputModel.StandCode, inputModel.AreaCode);
                        }
                    }
                }
            }
            return(_viewModel);
        }
        /// <summary>
        /// Retrieve the list of corporate hospitality packages
        /// </summary>
        /// <param name="inputModel">The given hospitality package list input model</param>
        /// <returns>The formed hospitality package list view model</returns>
        public HospitalityPackageListViewModel GetHospitalityPackageList(HospitalityPackageListInputModel inputModel)
        {
            _packageListViewModel = new HospitalityPackageListViewModel(true);
            _packageListViewModel.FormattedPackagePrice = _packageListViewModel.GetPageText("packagePriceFormat");
            _packageListViewModel.FormattedPackageGroupSizeDescription = _packageListViewModel.GetPageText("packageGroupSizeFormat");

            if (string.IsNullOrEmpty(inputModel.ProductCode) && string.IsNullOrEmpty(inputModel.ProductGroupCode))
            {
                //No product code or product group code is passed in
                DataTable             dtProductListHome   = buildProductListDataTable(GlobalConstants.HOMEPRODUCTTYPE);
                DataTable             dtProductListSeason = buildProductListDataTable(GlobalConstants.SEASONTICKETPRODUCTTYPE);
                List <PackageDetails> packageListHome     = buildPackageList(dtProductListHome);
                List <PackageDetails> packageListSeason   = buildPackageList(dtProductListSeason);
                _packageListViewModel.PackageListDetailsHome   = packageListHome;
                _packageListViewModel.PackageListDetailsSeason = packageListSeason;

                //Calculate Min and Max values for filters on other pages
                if (packageListHome.Count > 0)
                {
                    _packageListViewModel.MinGroupSizeHome = packageListHome.OrderBy((x) => x.GroupSize).Select((x) => x.GroupSize).First();
                    _packageListViewModel.MaxGroupSizeHome = packageListHome.OrderBy((x) => x.GroupSize).Select((x) => x.GroupSize).Last();
                    _packageListViewModel.MinBudgetHome    = packageListHome.OrderBy((x) => x.Price).Select((x) => x.Price).First();
                    _packageListViewModel.MaxBudgetHome    = packageListHome.OrderBy((x) => x.Price).Select((x) => x.Price).Last();
                    foreach (PackageDetails package in _packageListViewModel.PackageListDetailsHome)
                    {
                        string price = TDataObjects.PaymentSettings.FormatCurrency(package.Price, Environment.Settings.BusinessUnit, Environment.Settings.Partner);
                        package.DisplayPrice       = _packageListViewModel.FormattedPackagePrice.Replace("<<PackagePrice>>", price);
                        package.HasSoldOutProducts = false;
                    }
                }
                if (packageListSeason.Count > 0)
                {
                    _packageListViewModel.MinGroupSizeSeason = packageListSeason.OrderBy((x) => x.GroupSize).Select((x) => x.GroupSize).First();
                    _packageListViewModel.MaxGroupSizeSeason = packageListSeason.OrderBy((x) => x.GroupSize).Select((x) => x.GroupSize).Last();
                    _packageListViewModel.MinBudgetSeason    = packageListSeason.OrderBy((x) => x.Price).Select((x) => x.Price).First();
                    _packageListViewModel.MaxBudgetSeason    = packageListSeason.OrderBy((x) => x.Price).Select((x) => x.Price).Last();
                    foreach (PackageDetails package in _packageListViewModel.PackageListDetailsSeason)
                    {
                        string price = TDataObjects.PaymentSettings.FormatCurrency(package.Price, Environment.Settings.BusinessUnit, Environment.Settings.Partner);
                        package.DisplayPrice       = _packageListViewModel.FormattedPackagePrice.Replace("<<PackagePrice>>", price);
                        package.HasSoldOutProducts = false;
                    }
                }
            }
            else if (!string.IsNullOrEmpty(inputModel.ProductCode))
            {
                //A product code has been passed into the viewmodel
                List <PackageDetails> packageListProduct = new List <PackageDetails>();
                DataTable             dtProduct          = new DataTable();
                dtProduct.Columns.Add("ProductCode", typeof(string));
                dtProduct.Rows.Add(inputModel.ProductCode);
                packageListProduct = buildPackageList(dtProduct);
                //If the user has selected a package then it should be removed from the list before bound to the view model
                //This is used to show the related packages for the current fixture that relate to the current package being selected
                packageListProduct = packageListProduct.Where(x => x.PackageID != inputModel.PackageId).ToList();
                _packageListViewModel.PackageListDetailsByProductCode = packageListProduct;
                if (packageListProduct.Count > 0)
                {
                    foreach (PackageDetails package in _packageListViewModel.PackageListDetailsByProductCode)
                    {
                        string price = TDataObjects.PaymentSettings.FormatCurrency(package.Price, Environment.Settings.BusinessUnit, Environment.Settings.Partner);
                        package.DisplayPrice       = _packageListViewModel.FormattedPackagePrice.Replace("<<PackagePrice>>", price);
                        package.HasSoldOutProducts = false;
                    }
                }
            }
            else if (!string.IsNullOrEmpty(inputModel.ProductGroupCode))
            {
                //A product group code has been passed into the viewmodel
                HospitalityProductGroupViewModel viewModel        = new HospitalityProductGroupViewModel(getContentAndAttributes: true);
                DataSet                 dsProductGroupPackageList = new DataSet();
                DataSet                 dsProductGroupFixtures;
                DataSet                 dsSoldOutFixturesList = new DataSet();
                ErrorObj                err      = new ErrorObj();
                DEProductDetails        de       = new DEProductDetails();
                DESettings              settings = Environment.Settings.DESettings;
                List <PackageDetails>   packageListProductGroup  = new List <PackageDetails>();
                List <ProductDetails>   productGroupFixturesList = new List <ProductDetails>();
                List <ComponentDetails> componentsList           = new List <ComponentDetails>();
                List <ComponentDetails> filteredComponentsList;
                List <ComponentDetails> filteredComponentsListPackage;

                dsProductGroupPackageList = retrivePackagesByProductGroup(inputModel.ProductGroupCode);
                viewModel.Error           = Data.PopulateErrorObject(err, dsProductGroupPackageList, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 4);
                if (!viewModel.Error.HasError)
                {
                    packageListProductGroup = Data.PopulateObjectListFromTable <PackageDetails>(dsProductGroupPackageList.Tables["PackageList"]);
                    componentsList          = Data.PopulateObjectListFromTable <ComponentDetails>(dsProductGroupPackageList.Tables["ComponentList"]);

                    //retrieve fixtures for product group
                    dsProductGroupFixtures = new DataSet();
                    dsProductGroupFixtures = retrieveProductGroupFixtures(inputModel.ProductGroupCode);
                    viewModel.Error        = Data.PopulateErrorObject(err, dsProductGroupFixtures, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 2);

                    if (!viewModel.Error.HasError)
                    {
                        productGroupFixturesList = Data.PopulateObjectListFromTable <ProductDetails>(dsProductGroupFixtures.Tables["ProductGroupFixturesDeatils"]).Where(s => (Convert.ToDateTime(s.ProductDate)) > DateTime.Now).ToList();
                        foreach (PackageDetails package in packageListProductGroup)
                        {
                            package.SoldOutProducts  = string.Empty;
                            package.ProductGroupCode = inputModel.ProductGroupCode;
                            //get package group size
                            filteredComponentsListPackage = new List <ComponentDetails>();
                            filteredComponentsListPackage = componentsList.Where(x => (x.PackageID == package.PackageID && x.ProductCode == productGroupFixturesList.Select(s => s.ProductCode).Distinct().FirstOrDefault().Trim() && x.ComponentType == "A")).ToList();

                            if (filteredComponentsListPackage.Count > 0)
                            {
                                package.AvailabilityComponentID = filteredComponentsListPackage[0].ComponentID;
                                package.GroupSize = Int32.Parse(filteredComponentsListPackage.Select(x => x.NumberOfUnits).FirstOrDefault().ToString());
                            }
                            else
                            {
                                package.GroupSize = 1;
                            }
                            if (package.GroupSize == 1)
                            {
                                package.GroupSizeDescription = _packageListViewModel.GetPageText("packageGroupSizePerPersonText");
                            }
                            else
                            {
                                package.GroupSizeDescription = _packageListViewModel.FormattedPackageGroupSizeDescription.Replace("<<GroupSize>>", Convert.ToString(package.GroupSize));
                            }

                            //get sold out products
                            foreach (ProductDetails product in productGroupFixturesList)
                            {
                                filteredComponentsList     = new List <ComponentDetails>();
                                filteredComponentsList     = componentsList.Where(x => (x.PackageID == package.PackageID && x.ProductCode == product.ProductCode)).ToList();
                                product.AvailabilityDetail = getAvailabilityDetails(package, filteredComponentsList);

                                if (product.AvailabilityDetail.AvailabilityText.Replace("-", "").Replace(" ", "").ToUpper() == GlobalConstants.HOSPITALITY_FIXTURE_NOT_AVAILABLE)
                                {
                                    if (string.IsNullOrEmpty(package.SoldOutProducts))
                                    {
                                        package.SoldOutProducts = product.ProductCode.Trim();
                                    }
                                    else
                                    {
                                        package.SoldOutProducts = package.SoldOutProducts + ", " + product.ProductCode;
                                    }
                                }
                            }

                            if (package.SoldOutProducts.Length > 0)
                            {
                                package.HasSoldOutProducts = true;
                            }
                            else
                            {
                                package.HasSoldOutProducts = false;
                            }
                        }
                    }
                }

                _packageListViewModel.PackageListDetailsByProductGroup = packageListProductGroup;
            }
            return(_packageListViewModel);
        }