//[OutputCache(CacheProfile = "Aggressive", VaryByHeader = "X-Requested-With", Location = OutputCacheLocation.Any, NoStore = true)]
        private ActionResult ItemContainer(string quoteID, string type)
        {
            IQuoteViewService _QuoteViewSrv = new QuoteViewService();

            _QuoteViewSrv.UserVM            = UserVM;
            _itemcontainerPartialSrv.UserVM = UserVM;

            if (type == "View")
            {
                ViewData["SearchCategory"] = _QuoteViewSrv.getQuoteTypeText(Convert.ToInt32(quoteID));
                QuoteViewModel qVM = _QuoteViewSrv.GetQuoteView(Convert.ToInt32(quoteID));
                UserVM.SearchCategory = string.Empty;
                this.AssignUserVM(qVM.UserVM);
                return(View("../TCPViews/QuoteView", qVM));
            }

            ViewData["QuoteID"] = quoteID;
            if (type == "Category")
            {
                CategoriesItemContainerViewModel categoriesItemCVM = new CategoriesItemContainerViewModel();
                categoriesItemCVM.UserVM = UserVM;
                string noofItemsPerPage = "60";
                categoriesItemCVM = _itemcontainerPartialSrv.GetSelectedCollectionItem((int)GroupEnum.EntirePenworthyCollection, 1, noofItemsPerPage, Convert.ToInt32(quoteID), "");
                this.AssignUserVM(categoriesItemCVM.UserVM);
                return(View("../TCPViews/CategoriesItemContainer", categoriesItemCVM));
            }

            KPLItemConatinerViewModel ciCVM = new KPLItemConatinerViewModel();

            ciCVM.UserVM = UserVM;
            ciCVM        = _itemcontainerPartialSrv.FillItemDetails(quoteID, type);
            this.AssignUserVM(ciCVM.UserVM);

            return(View("../TCPViews/KPLItemContainer", ciCVM));
        }
        public ActionResult ExportItemListToExcel()
        {
            IQuoteViewService _QuoteViewSrv = new QuoteViewService();

            _QuoteViewSrv.UserVM  = UserVM;
            ViewData["QuoteType"] = _QuoteViewSrv.getQuoteTypeText(UserVM.CurrentQuoteID);
            KPLItemConatinerViewModel lstkplVM = new KPLItemConatinerViewModel();

            lstkplVM.UserVM = UserVM;
            _itemcontainerPartialSrv.UserVM = UserVM;
            lstkplVM = _itemcontainerPartialSrv.FillItemDetails(UserVM.CurrentQuoteID.ToString(), _QuoteViewSrv.getQuoteTypeText(UserVM.CurrentQuoteID).ToString());

            string userSelection = string.Empty;

            if (lstkplVM.UserVM.Preferences.Count() == 0)
            {
                lstkplVM.UserVM.Preferences.Add("TabularItemPartial", Resources.TCPResources.DefaultKPLValues);
            }
            foreach (KeyValuePair <string, string> item in lstkplVM.UserVM.Preferences)
            {
                userSelection = string.IsNullOrEmpty(item.Value) ? null : "IsChecked," + item.Value;
            }


            string[] preferences = string.IsNullOrEmpty(userSelection) ? null : userSelection.Split(',');
            var      Controller  = DependencyResolver.Current.GetService <TPC.Web.Controllers.TCPControllers.DefaultController>();

            System.Data.DataTable dt = Controller.ConvertToDataTable(lstkplVM.KPLBasedVM, preferences);


            System.Text.StringBuilder sb = new System.Text.StringBuilder();

            string headerText = string.Format(Resources.TCPResources.QuoteEmailExcelHeaderTable, ConfigurationManager.AppSettings["imgLogoPath"], string.Format("{0:d}", DateTime.Today), UserVM.CurrentQuoteID, UserVM.CRMModelProperties.CustNO, UserVM.CRMModelProperties.RepName, UserVM.CRMModelProperties.custName, UserVM.CRMModelProperties.RepEmail, UserVM.CRMModelProperties.CustFirstName + ' ' + UserVM.CRMModelProperties.CustLastName);

            sb.Append(headerText);
            sb.Append("<table style=\"border-collapse:collapse;\">");
            //write column headings
            sb.Append("<tr>");
            foreach (System.Data.DataColumn dc in dt.Columns)
            {
                if (dc.ColumnName.ToLower().Trim() == "series" || dc.ColumnName.ToLower().Trim() == "title" || dc.ColumnName.ToLower().Trim() == "primarycharacter")
                {
                    sb.Append("<td><b><font face=Arial size=" + "10px" + ">" + "X&nbsp;&nbsp;&nbsp;" + "</font></b></td>");
                }
                if (dc.ColumnName.ToLower().Trim() == "ischecked")
                {
                    sb.Append("<td><font face=Arial size=" + "10px" + ">" + "Select" + "</font></td>");
                }

                else
                {
                    sb.Append("<td><b><font face=Arial size=" + "10px" + ">" + dc.ColumnName + "</font></b></td>");
                }
            }
            sb.Append("</tr>");

            //write table data
            foreach (System.Data.DataRow dr in dt.Rows)
            {
                sb.Append("<tr>");
                foreach (System.Data.DataColumn dc in dt.Columns)
                {
                    if (dc.ToString().ToLower().Trim() == "title")
                    {
                        if (lstkplVM.KPLBasedVM.Single(x => x.ItemID == dr["ItemId"].ToString()).IsInCustomerTitles)
                        {
                            sb.Append("<td><font face=Arial size=" + "10px" + ">" + "X" + "</font></td>");
                        }
                        else
                        {
                            sb.Append("<td><font face=Arial size=" + "10px" + ">" + "" + "</font></td>");
                        }
                    }
                    else
                    {
                        //sb.Append("<td><font face=Arial size=" + "10px" + ">" + "" + "</font></td>");
                        if (dc.ToString().ToLower() == "primarycharacter")
                        {
                            if (lstkplVM.KPLBasedVM.Single(x => x.ItemID == dr["ItemId"].ToString()).CharecterBroughtBefore)
                            {
                                sb.Append("<td><font face=Arial size=" + "10px" + ">" + "X" + "</font></td>");
                            }
                            else
                            {
                                sb.Append("<td><font face=Arial size=" + "10px" + ">" + "" + "</font></td>");
                            }
                        }


                        if (dc.ToString().ToLower().Trim() == "series")
                        {
                            if (lstkplVM.KPLBasedVM.Single(x => x.ItemID == dr["ItemId"].ToString()).SeriesBroughtBefore)
                            {
                                sb.Append("<td><font face=Arial size=" + "10px" + ">" + "X" + "</font></td>");
                            }
                            else
                            {
                                sb.Append("<td><font face=Arial size=" + "10px" + ">" + "" + "</font></td>");
                            }
                        }
                    }
                    if (dc.ToString().ToLower().Trim() == "ischecked")
                    {
                        if (dr[dc].ToString() == "checked")
                        {
                            sb.Append("<td><font face=Arial size=" + "10px" + ">" + "X" + "</font></td>");
                        }
                        else
                        {
                            sb.Append("<td><font face=Arial size=" + "10px" + ">" + "" + "</font></td>");
                        }
                    }
                    else if (dc.ToString().ToLower().Trim() == "price")
                    {
                        sb.Append("<td>" + String.Format("{0:0.00}", dr[dc].ToString()) + "</td>");
                    }
                    else
                    {
                        sb.Append("<td><font face=Arial size=" + "10px" + ">" + dr[dc].ToString() + "&nbsp;</font></td>");
                    }
                }
                sb.Append("</tr>");
            }
            sb.Append("</table>");
            this.Response.AddHeader("Content-Disposition", "attachment; filename=ItemList.xls");
            this.Response.ContentType = "application/vnd.ms-excel";
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
            return(File(buffer, "application/vnd.ms-excel"));
        }