/// <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); }
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); }
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); }