public List <QuoteItemListModel> GetOptionItemsAsQuoteItemList(UserSessionModel user, long quoteItemId)
        {
            var query = from q in this.Db.QuoteItemOptionsByQuoteItemId(user, quoteItemId)
                        join p in this.Db.Products on q.OptionProductId equals p.ProductId into Lp
                        from p in Lp.DefaultIfEmpty()
                        select new QuoteItemListModel
            {
                QuoteId   = q.QuoteId,
                ProductId = q.OptionProductId,
                //PriceNet = q.ListPrice * q.Multiplier,
                PriceList            = q.ListPrice,
                IsCommissionable     = p.AllowCommissionScheme,
                Quantity             = q.Quantity,
                ProductNumber        = q.OptionProductNumber,
                Description          = q.OptionProductDescription,
                QuoteItemId          = q.QuoteItemId,
                ProductClassCode     = p.ProductClassCode,
                SubmittalSheetTypeId = (SubmittalSheetTypeEnum)p.SubmittalSheetTypeId,
                //Tags = q.Tags,
                CodeString = q.CodeString,
                //QuoteItemTypeId = q.QuoteItemTypeId
                //LineItemTypeId = q.LineItemTypeId
            };

            var optionItems = query.ToList();

            return(optionItems);
        }
        public ServiceResponse GetSubmittalPackageQuoteItemListModel(UserSessionModel admin, SearchQuoteItem search)
        {
            Log.Info("Enter GetQuoteItemListModel");
            Log.DebugFormat("CurrentFilter: {0} IsDesc: {1} QuoteId: {2} QuoteItemId: {3} " +
                            "Totals: {4} PreviousFilter: {5} ",
                            search.Filter, search.IsDesc, search.QuoteId, search.QuoteItemId,
                            search.ReturnTotals, search.PreviousFilter);

            var query = from q in this.Db.QuoteItemsQueryBySearch(admin, search)
                        join p in this.Db.Products on q.ProductId equals p.ProductId into Lp
                        from p in Lp.DefaultIfEmpty()
                        select new QuoteItemListModel
            {
                QuoteId                      = q.QuoteId,
                ProductId                    = q.ProductId,
                PriceNet                     = q.ListPrice * q.Multiplier,
                PriceList                    = q.ListPrice,
                IsCommissionable             = p.AllowCommissionScheme,
                Quantity                     = q.Quantity,
                ProductNumber                = q.ProductNumber,
                Description                  = q.Description,
                QuoteItemId                  = q.QuoteItemId,
                ProductClassCode             = p.ProductClassCode,
                ProductStatusTypeId          = p.ProductStatusId,
                ProductStatusTypeDescription = p.ProductStatus.Description,
                InventoryStatusId            = p.InventoryStatusId,
                InventoryStatusDescription   = p.InventoryStatuses.Description,
                SubmittalSheetTypeId         = (SubmittalSheetTypeEnum)p.SubmittalSheetTypeId,
                Tags       = q.Tags,
                CodeString = q.CodeString,
                //QuoteItemTypeId = q.QuoteItemTypeId
                LineItemTypeId = q.LineItemTypeId
            };

            try
            {
                this.Response.Model = query.ToList();
            }
            catch (Exception ex)
            {
                Log.Fatal(ex.Message);
            }

            Log.Info("GetQuoteItemListModel finished.");

            return(this.Response);
        }