/// <summary>
        /// This method retrieves template override criterias
        /// </summary>
        /// <param name="inputModel">The given template override input model</param>
        /// <returns>The formed template override view model</returns>
        public TemplateOverrideViewModel RetriveOverrideCriterias()
        {
            TemplateOverrideViewModel viewModel = new TemplateOverrideViewModel(getContentAndAttributes: true);
            DataSet    dsOverrideCriteria       = new DataSet();
            ErrorObj   err      = new ErrorObj();
            DESettings settings = Environment.Settings.DESettings;
            List <TicketingOverrideCriteria> ticketingOverrideCriterias = new List <TicketingOverrideCriteria>();
            List <PackageOverrideCriteria>   packageOverrideCriterias   = new List <PackageOverrideCriteria>();

            dsOverrideCriteria = retriveOverrideCriterias();
            viewModel.Error    = Data.PopulateErrorObject(err, dsOverrideCriteria, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 3);

            if (!viewModel.Error.HasError)
            {
                ticketingOverrideCriterias = Data.PopulateObjectListFromTable <TicketingOverrideCriteria>(dsOverrideCriteria.Tables["TicketingOverrideCriteria"]);
                packageOverrideCriterias   = Data.PopulateObjectListFromTable <PackageOverrideCriteria>(dsOverrideCriteria.Tables["PackageOverrideCriteria"]);

                //Set view model
                viewModel.TicketingOverrideCriterias = ticketingOverrideCriterias.ToList();
                viewModel.PackageOverrideCriterias   = packageOverrideCriterias.ToList();

                foreach (TicketingOverrideCriteria criteria in ticketingOverrideCriterias)
                {
                    criteria.ProductTypeDecsription = viewModel.GetPageText("ProductType-" + criteria.ProductType);
                }
            }

            return(viewModel);
        }
        /// <summary>
        /// This method creates the template override
        /// </summary>
        /// <returns>The formed template override view model</returns>
        public TemplateOverrideViewModel CreateTemplateOverride(TemplateOverrideInputModel inputModel)
        {
            TemplateOverrideViewModel viewModel = new TemplateOverrideViewModel(getContentAndAttributes: true);
            DataSet    dsTemplateOverrideList   = new DataSet();
            ErrorObj   err      = new ErrorObj();
            DESettings settings = Environment.Settings.DESettings;
            List <TemplateOverrideHeader>   templateOverrideList      = new List <TemplateOverrideHeader>();
            List <TemplateOverrideCriteria> templateOverrideCriterias = new List <TemplateOverrideCriteria>();

            inputModel.Mode        = GlobalConstants.TEMPLATE_OVERRIDE_CREATE_MODE;
            dsTemplateOverrideList = createAndRetrieveTemplateOverrides(inputModel);
            viewModel.Error        = Data.PopulateErrorObject(err, dsTemplateOverrideList, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 3);

            if (!viewModel.Error.HasError)
            {
                templateOverrideList      = Data.PopulateObjectListFromTable <TemplateOverrideHeader>(dsTemplateOverrideList.Tables["TemplateOverrideHeader"]);
                templateOverrideCriterias = Data.PopulateObjectListFromTable <TemplateOverrideCriteria>(dsTemplateOverrideList.Tables["TemplateOverrideCriterias"]);

                //Set view model
                viewModel.TemplateOverrideList = templateOverrideList.OrderByDescending(s => s.TemplateOverrideId).ToList();

                foreach (TemplateOverrideCriteria criteria in templateOverrideCriterias)
                {
                    criteria.CriteriaTypeDescription = viewModel.GetPageText("TemplateCriteria-" + criteria.CriteriaType);
                }

                foreach (TemplateOverrideHeader template in viewModel.TemplateOverrideList)
                {
                    template.TemplateOverrideCriterias          = templateOverrideCriterias.Where(s => s.TemplateUseId == template.TemplateOverrideId).ToList();
                    template.TemplateOverrideCriteriasFormatted = template.TemplateOverrideCriterias.GroupBy(g => g.CriteriaTypeDescription).Select(s => new TemplateOverrideCriteriaFormatted {
                        CriteriaTypeDescription = s.Key, CriteriaValues = string.Join(",", s.Select(e => e.CriteriaValue).ToList())
                    }).ToList();
                }
            }


            return(viewModel);
        }
        /// <summary>
        /// This method retrieves template override list
        /// </summary>
        /// <param name="inputModel">The given template override input model</param>
        /// <returns>The formed template override view model</returns>
        public TemplateOverrideViewModel RetrieveTemplateOverrideList(TemplateOverrideInputModel inputModel)
        {
            TemplateOverrideViewModel viewModel = new TemplateOverrideViewModel(getContentAndAttributes: true);
            DataSet    dsTemplateOverrideList   = new DataSet();
            ErrorObj   err      = new ErrorObj();
            DESettings settings = Environment.Settings.DESettings;
            List <TemplateOverrideHeader>   templateOverrideList      = new List <TemplateOverrideHeader>();
            List <TemplateOverrideCriteria> templateOverrideCriterias = new List <TemplateOverrideCriteria>();

            inputModel.Mode        = GlobalConstants.TEMPLATE_OVERRIDE_READ_MODE;
            dsTemplateOverrideList = retrieveTemplateOverrides(inputModel);
            viewModel.Error        = Data.PopulateErrorObject(err, dsTemplateOverrideList, settings, GlobalConstants.STATUS_RESULTS_TABLE_NAME, 3);

            if (!viewModel.Error.HasError)
            {
                templateOverrideList      = Data.PopulateObjectListFromTable <TemplateOverrideHeader>(dsTemplateOverrideList.Tables["TemplateOverrideHeader"]);
                templateOverrideCriterias = Data.PopulateObjectListFromTable <TemplateOverrideCriteria>(dsTemplateOverrideList.Tables["TemplateOverrideCriterias"]);

                //Set view model
                viewModel.TemplateOverrideList = templateOverrideList.OrderByDescending(s => s.TemplateOverrideId).ToList();

                foreach (TemplateOverrideCriteria criteria in templateOverrideCriterias)
                {
                    criteria.CriteriaTypeDescription = viewModel.GetPageText("TemplateCriteria-" + criteria.CriteriaType);
                }

                foreach (TemplateOverrideHeader template in viewModel.TemplateOverrideList)
                {
                    template.TemplateOverrideCriterias          = templateOverrideCriterias.Where(s => s.TemplateUseId == template.TemplateOverrideId).ToList();
                    template.TemplateOverrideCriteriasFormatted = template.TemplateOverrideCriterias.GroupBy(g => g.CriteriaTypeDescription).Select(s => new TemplateOverrideCriteriaFormatted {
                        CriteriaTypeDescription = s.Key, CriteriaValues = string.Join(",", s.Select(e => e.CriteriaValue).ToList())
                    }).ToList();
                    if (template.TemplateOverrideCriterias[0].CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_PRODUCTCODE || template.TemplateOverrideCriterias[0].CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_PACKAGE)
                    {
                        template.ProductPacakgeSpecific = true;
                    }
                    else
                    {
                        template.ProductPacakgeSpecific = false;
                    }

                    foreach (TemplateOverrideCriteria templateOverrideCriteria in template.TemplateOverrideCriterias)
                    {
                        if (templateOverrideCriteria.CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_PRODUCTCODE)
                        {
                            if (template.ProductCriterias == null)
                            {
                                template.ProductCriterias = template.ProductCriterias + templateOverrideCriteria.CriteriaValue;
                            }
                            else
                            {
                                template.ProductCriterias = template.ProductCriterias + "," + templateOverrideCriteria.CriteriaValue;
                            }
                        }
                        if (templateOverrideCriteria.CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_PACKAGE)
                        {
                            if (template.PackageCriterias == null)
                            {
                                template.PackageCriterias = template.PackageCriterias + templateOverrideCriteria.CriteriaValue;
                            }
                            else
                            {
                                template.PackageCriterias = template.PackageCriterias + "," + templateOverrideCriteria.CriteriaValue;
                            }
                        }
                        if (templateOverrideCriteria.CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_SUBTYPE)
                        {
                            if (template.ProductSubTypeCriterias == null)
                            {
                                template.ProductSubTypeCriterias = template.ProductSubTypeCriterias + templateOverrideCriteria.CriteriaValue;
                            }
                            else
                            {
                                template.ProductSubTypeCriterias = template.ProductSubTypeCriterias + "," + templateOverrideCriteria.CriteriaValue;
                            }
                        }
                        if (templateOverrideCriteria.CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_PRODUCTTYPE)
                        {
                            if (template.ProductTypeCriterias == null)
                            {
                                template.ProductTypeCriterias = template.ProductTypeCriterias + templateOverrideCriteria.CriteriaValue;
                            }
                            else
                            {
                                template.ProductTypeCriterias = template.ProductTypeCriterias + "," + templateOverrideCriteria.CriteriaValue;
                            }
                        }
                        if (templateOverrideCriteria.CriteriaType == GlobalConstants.TEMPLATE_OVERRIDE_CRITERIA_STADIUM)
                        {
                            if (template.StadiumCriterias == null)
                            {
                                template.StadiumCriterias = template.StadiumCriterias + templateOverrideCriteria.CriteriaValue;
                            }
                            else
                            {
                                template.StadiumCriterias = template.StadiumCriterias + "," + templateOverrideCriteria.CriteriaValue;
                            }
                        }
                    }
                }
            }
            return(viewModel);
        }