Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 621152)
Контекстум
c:\Contextum\Battle\Contextum.Web\Views\SiteViews\svEfd.ascx(1160): error CS1525: Invalid expression term '.'




<style> .b-content {     overflow: hidden;     padding: 0;     margin-bottom: 20px; }     .b-content-wrapper {         width: 705px; }     .b-content-header {         margin-bottom: 10px; }     .b-item-cover {         cursor: pointer; } .b-content-left {     width: 140px;     float: left; }     .b-content-access {         margin: 5px 0 10px 0;         background: #dce9f4;          padding: 5px; }         .b-content-access > span {             margin: 2px 0 3px 0;             display: block; }             .b-content-access > span > img {                 margin-right: 3px; }     .b-content-social,      .b-content-like,      .b-content-back  {         text-align: center;         margin: 5px 0 10px 0; } <% var bWidth = "555"; %> .b-content-right {     margin-left: 150px;  }     .b-content-description {         width: <%=bWidth%>px;         margin-bottom: 15px; }     .b-content-book {         /*background: #dce9f4;*/         /*padding: 9px 0 5px 0;*/         width: <%=bWidth%>px; }         .b-content-book hr {             color: #C6C9CC;             border-color: #C6C9CC; }         .b-content-book-file {             padding-left: 23px; }         .b-content-book-file,          .b-content-book-file a {             color: #515151; }     .b-content-arch {         width: <%=bWidth%>px; }         .b-content-arch-years {             margin: 0 0 -1px;             padding: 0;              position: relative; }             .b-content-arch-years > li {                 padding: 5px 10px;                  text-transform: uppercase;                  display: inline-block;                  list-style-type: none; }                 .b-content-arch-years > li.active {                     background: #fff;                      border-width: 1px 1px 0px;                      border-style: solid solid none;                      border-color: #e1e1e1 #e1e1e1 currentColor; }             .b-content-arch-years > li > a {                     color: #3692D8; }                 .b-content-arch-years > li > a:hover {                     text-decoration: none; }         .b-content-arch-items {             background: #fff;              margin: 0;              padding: 0;              border: 1px solid #e1e1e1; }             .b-content-arch-wrapper {                 padding: 10px 0 0 0; }             .b-content-arch-item {                 display: inline-block;                 width: 120px;                 margin: 0 5px 10px 10px;                 text-align: left;                 vertical-align: top; }                 .b-content-arch-item a.logo {                     height: 120px;                     width: 90px;                     text-align: center; }                 .b-content-arch-item h4 {                     margin: 2px 0 3px 0; } .b-book-buttons {     width: <%=bWidth%>px;     margin-bottom: 10px; }     .b-book-button,     .b-book-buttons > a,     .b-book-buttons > a.gray {         display: inline-block;         margin: 0 4px 5px 4px;         padding: 5px 0;         width: 31%;         border-radius: 7px; -moz-border-radius: 7px; -webkit-border-radius: 7px;          color: #fff;         text-align: center;          font-size: 120%; }         .b-multi-button > span,         .b-book-buttons > a > span,         .b-book-buttons > a.gray > span {             font-size: 150%;             font-weight: bold;             text-decoration: none; } .b-arch-buttons > a, .b-arch-buttons > a.gray,  .b-content-button {     display: block;     margin: 1px 0 2px 0;     padding: 1px 2px;     border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;      color: #fff;     text-align: center;     white-space: nowrap; }     .b-multi-button:hover,     .b-book-buttons > a:hover,     .b-book-buttons > a.gray:hover,     .b-arch-buttons > a:hover,     .b-arch-buttons > a.gray:hover,      .b-content-button:hover {         color: #fff;         text-decoration: none; }     .b-multi-button,     .b-book-buttons > a,     .b-arch-buttons > a,      .b-content-button {         background: #60A8D9;         border:1px solid #60A8D9;         text-decoration: underline;  }     .b-book-buttons > a.gray,     .b-arch-buttons > a.gray {         background: #969696;         border:1px solid #969696; } .b-multi-button {         cursor: pointer;         /*position: relative;*/ }     .b-multi-button ul {         display: none;         background-color:white;         text-align: left;         min-width: 102px;         padding: 5px 15px 5px 5px;         border: solid 1px #60A8D9; }         .b-book-multi-button ul li {             margin-left: 0;             list-style: none;             white-space: nowrap; }     .b-multi-button:hover ul {         display: block;         position: absolute;  } .b-content-clear {     clear: both; } </style> <script type="text/javascript"> $(document).ready(function() {     $('.refresh[target="_blank"]').removeAttr('onclick').click(function () {         this.style.display = 'none';         this.disabled = 'disabled';         window.location.reload();         });      $(this).keydown(function(eventObject){                 if (eventObject.which == 27) {             if (isopen) {                 isopen=false;                 return;             }             if ($('#BaloonTooltipContainer').is(":visible"))                 $('#BaloonTooltipContainer').hide();         }     });     $('html').click(function() {         if (isopen) {             isopen = false;             return;         }         if ($('#BaloonTooltipContainer').is(":visible"))             $('#BaloonTooltipContainer').hide();      });      $('#BaloonTooltipContainer').click(function(event){              event.stopPropagation();      });     var isopen = false;     $('.b-item-cover').click(function () {         var bigsrc = $(this).data('big');         if (bigsrc == '')             return;         var coverHeight = $(this).data('height') + 50;         var coverWidth = $(this).data('width') + 32;         isopen = true;         $('#imgcover').attr('src', bigsrc);         $('#BaloonTooltipContainer').css("top", Math.max(0, (($(window).height() - coverHeight) / 2) + $(window).scrollTop()) + "px")                         .css("left", Math.max(0, (($(window).width() - coverWidth) / 2) + $(window).scrollLeft()) + "px")                         .show();         //$('#BaloonTooltipContainer').center().show();     }); }); </script> <div id="BaloonTooltipContainer" style="display:none"> <table border="0" cellspacing="0" cellpadding="0" align="center" class="BaloonTooltipPopup">     <tr>         <td class="corner topLeft"></td>         <td class="top"></td>         <td class="corner topRight"></td>     </tr>     <tr>         <td class="left">&nbsp;</td>         <td id="BaloonTooltipContent" valign="top">             <div style="text-align:right">Для выхода нажмите Esc или &nbsp;<img title="Закрыть" onclick="document.getElementById('BaloonTooltipContainer').style.display = 'none';" style="cursor:pointer" src="/_controltemplates/Nephrite.Web/js/BaloonTooltip/img/btn_close.png" /></div>             <img id="imgcover" src="" height="550px"/>         </td>         <td class="right">&nbsp;</td>     </tr>     <tr>         <td class="corner bottomLeft">&nbsp;</td>         <td class="bottom">&nbsp;</td>         <td class="corner bottomRight"></td>     </tr> </table> </div> <%  var _files = descriptionDetails.Files.Where(file => file.FolderID == descriptionDetails.FolderPDFID);  bool isShowAccess = (false && Nephrite.Web.App.AppSettings.GetBool("testsystem")) || !String.IsNullOrEmpty(Query.GetString("testaccess")); %> <div class="b-content BaloonTooltipResult">     <div class="b-content-header">         <% if (descriptionDetails.FirstLevelDescriptionID.HasValue) {%>             <a href='<%=descriptionDetails.FirstLevelUrl%>'><%=descriptionDetails.FirstLevelDescriptionTitle%></a>         <% } %>         <% if (descriptionDetails.IsThirdLevel && descriptionDetails.ParentLevel2Item != null) {%>             <a href='<%=descriptionDetails.ParentLevel2Item.FirstLevelUrl%>'><%=descriptionDetails.ParentLevel2Item.FirstLevelDescriptionTitle%></a>             &nbsp;/&nbsp;<a href='<%=descriptionDetails.ParentLevel2Item.Url%>'><%=descriptionDetails.ParentLevel2Item.TitleL2%></a><br/>         <% } %>         <h1><%=enc(descriptionDetails.Title)%></h1>           <div style="margin-bottom:6px;">             <asp:Label ID="lMsg" runat="server" Text="" ForeColor="Red" />         </div>     </div>     <div class="b-content-left">         <%          var descriptionInfo = descriptionDetails.Level2NewItem == null                     ? descriptionDetails                     : descriptionDetails.Level2NewItem;         var coverBig = descriptionDetails.GetCover(CoverSizeType.Big, descriptionInfo.FolderCoverID ?? 0);         var coverMiddle = descriptionDetails.GetCover(CoverSizeType.Middle, descriptionInfo.FolderCoverID ?? 0);         %>         <img width="140px"              src="<%=coverMiddle != null ? coverMiddle.SrcData : "/i/no_photo_available.jpg"%>"             <% if (coverBig != null) { %>                 class="b-item-cover"                 data-big="<%=coverBig.SrcData%>"                  data-width="<%=coverBig.Width%>"                  data-height="<%=coverBig.Height%>"             <% } %>         />         <%         var downloadFile = descriptionDetails.Files.FirstOrDefault(file => file.FolderID == descriptionInfo.FolderPDFID && file.AccessDownload > 0);         var readFile = descriptionDetails.Files.FirstOrDefault(file => file.FolderID == descriptionInfo.FolderPDFID && file.AccessRead > 0);         %>         <% if (downloadFile != null || readFile != null) { %>             <div class="b-content-access">                 Доступно:                 <% if (downloadFile != null) { %>                     <span><img src="/i/n/pdficon_small.gif"/>PDF <%=string.Format("({0:F1}Mb)", downloadFile.Size)%></span>                 <% } %>                 <% if (readFile != null) { %>                     <span><img src="/i/book_open.png"/>Чтение online</span>                 <% } %>             </div>         <% } %>         <div class="b-content-social">             <%             string host = HttpContext.Current.Request.Url.Port != 80                     ? new UriBuilder(HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host, HttpContext.Current.Request.Url.Port).ToString()                     : new UriBuilder(HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host).ToString();             string currentUrl = HttpUtility.UrlEncode(host + "efd/" + descriptionDetails.EfdDescriptionID);               string linkToCurrentUrl = HttpUtility.UrlEncode("<a href='" + host + "efd/" + descriptionDetails.EfdDescriptionID +"'>"+ descriptionDetails.FirstTitle + "</a>");             %>             <a href="http://vkontakte.ru/share.php?url=<%=currentUrl%>&title=<%=HttpUtility.UrlEncode(descriptionDetails.FirstTitle)%>&description=<%=HttpUtility.UrlEncode(descriptionDetails.PlainDescription)%>" target="_blank" title="ВКонтакте"><img src="/i/vk16.png"/></a>             <a href="http://www.facebook.com/sharer.php?u=<%=currentUrl%>&t=<%=HttpUtility.UrlEncode(descriptionDetails.FirstTitle)%>" target="_blank" title="FaceBook"><img src="/i/FaceBook-icon.png"/></a>             <a href="http://livejournal.com/update.bml?subject=<%=HttpUtility.UrlEncode(descriptionDetails.FirstTitle)%>&event=<%=linkToCurrentUrl%>" target="_blank" title="LiveJournal"><img src="/i/livejournal_icon.gif"/></a>             <a href="http://twitter.com/share?url=<%=currentUrl%>&text=<%=HttpUtility.UrlEncode(descriptionDetails.FirstTitle)%>" target="_blank" title="Twitter"><img src="/i/twitter_icon_16.png"/></a>             <a href="http://odnoklassniki.ru/dk?st.cmd=addShare&st._surl=<%=currentUrl%>" target="_blank" title="Одноклассники"><img src="/i/odnoklassniki.png"/></a>         </div>         <div class="b-content-like">             <% if (!descriptionDetails.IsRecommended && Request.IsAuthenticated) { %>                 <asp:ImageButton runat="server" OnCommand="btnRecommend_Click" CommandName="Recommend" ID="bRecommend" Src="/i/thumbsup16.png" Text="Рекомендовать" />             <% } else { %>                 <img style="vertical-align:top;" src="/i/thumbsup-grayscale.png"/>             <% } %>              <span style="color:green"><b><%=descriptionDetails.PosistiveCount %></b></span>&nbsp;&nbsp;                          <% if ((descriptionDetails.IsRecommended || !descriptionDetails.IsRecommendationsExists) && Request.IsAuthenticated) { %>                 <asp:ImageButton runat="server" OnCommand="btnRecommend_Click" CommandName="NotRecommend" Src="/i/thumbsdown16.png" ID="bNotRecommend" Text="Не рекомендовать" />              <% } else {%>                 <img style="vertical-align:top;" src="/i/thumbsdown-grayscale.png"/>             <% } %>              <span style="color:red"><b><%=descriptionDetails.NegativeCount%></b></span>         </div>         <div class="b-content-back">         </div>         <script type="text/javascript">         if (history.length > 1) {             $(".b-content-back").html("<a class='b-content-button' href='#' onclick='window.history.back(); return false;'>Назад</a>");         }         </script>     </div>     <div class="b-content-right">         <div class="b-content-description">             <%=Layout.FormTableBegin("100%")%>                             <% if (!String.IsNullOrEmpty(descriptionDetails.FirstAuthor)) { %><%=Layout.FormRow("Автор", descriptionDetails.FirstAuthor)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.PublishingHouse)) { %><%=Layout.FormRow("Издательство", descriptionDetails.PublishingHouse)%><% } %>                 <% if (descriptionDetails.PagesCount > 0) { %><%=Layout.FormRow("Страниц", descriptionDetails.PagesCount)%><% } %>             <%=Layout.FormTableEnd()%>         </div>         <nw:ParameterizedLinkManager OnClick="lbBuyManager_Click" runat="server" ID="buyManager" />         <%-- Загрузка на страницу файлов для одноуровневых ЭПД --%>         <% if (!descriptionDetails.IsFirstLevel && _files.Any()) { %>             <div class="b-content-book">                 <%                  var fileAccesses = new List<EfdDescriptionFileAccess>();                 foreach(var file in _files)                     fileAccesses.Add(getAccessForm(descriptionDetails, file, true));                 %>                 <%-- Проверяем права доступа и формируем параметры ссылки для скачивания --%>                 <div class="b-book-buttons">                     <% if (isShowAccess) { %>                         <% foreach(var fileAccess in fileAccesses) { %>                                 <div style="background: pink; padding: 5px; margin-bottom: 5px">                                 Title: <%=fileAccess.FileInfo.Title%> <br />                                  [dbo].f_CheckEfdAccess(<%=fileAccess.FileInfo.FileID%>, <%= currentSubjectID%>, '<%= ipaddress%>')<br />                                 AccessForms: <%=fileAccess.FileInfo.AccessForms%> <br />                                 Download: <%=fileAccess.AccessDownload%><br />                                 Read: <%=fileAccess.AccessRead%>                             </div>                         <% } %>                     <% } %>                          <%-- КУПИТЬ/КОРЗИНА --%>                     <% if (!Request.IsAuthenticated) { %>                         <% if (descriptionDetails.IsPurchase) { %>                             <%=buyManager.RenderLink(string.Format("<span>{0:F2}р</span>", descriptionDetails.Price), descriptionDetails.EfdDescriptionID)%>                         <% } %>                         <% if (descriptionDetails.AccessDownload == 1) { %>                             <%=buyManager.RenderLink("<span>Скачать</span>", descriptionDetails.EfdDescriptionID)%>                         <% } %>                         <% if (descriptionDetails.AccessRead == 1) { %>                             <%=buyManager.RenderLink("<span>Читать</span>", descriptionDetails.EfdDescriptionID)%>                         <% } %>                     <% } else { %>                         <% if (fileAccesses.Any(fa => fa.AccessDownload == 2 || fa.AccessRead == 2)) { %>                             <% if (!descriptionDetails.BillGUID.HasValue) { %>                                 <%=buyManager.RenderLink(string.Format("<span>{0:F2}р</span>", descriptionDetails.Price), descriptionDetails.EfdDescriptionID)%>                                 <% if (!currentCarts.In(descriptionDetails.EfdDescriptionID)) { %>                                                             <a href="#" onclick="return cartManager_click(<%=descriptionDetails.EfdDescriptionID%>)"><span>В корзину</span></a>                                 <% } else { %>                                     <a href="#" class="gray" onclick="return cartManager_click(<%=descriptionDetails.EfdDescriptionID%>)"><span>В корзине</span><%--<img src="/i/n/delete.gif" alt="Удалить" title="Удалить"/>--%></a>                                 <% } %>                             <% } else { %>                                 <% if (currentUserIsSubscribtionUser) { %>                                     <span style="color:red"><strong>Внимание!</strong>&nbsp;ЭПД находится на рассмотрении в библиотеке!</span>                                 <% } %>                             <% } %>                         <% } %>                         <%-- СКАЧАТЬ --%>                         <%= EfdDescriptionFileInfo.RenderButton("<span>Скачать</span>"                                                , "b-book-button b-multi-button"                                                , fileAccesses.Where(fa => fa.AccessDownload == 1).Select(fa => fa.FileInfo)                                                , finfo => (!descriptionDetails.IsFree && descriptionDetails.Price > 0)                                                     //? string.Format("href='{0}' target='_blank' class='refresh' onclick='window.location.reload();'", ((EfdDescriptionPDFInfo)finfo).SrcFile)                                                     ? string.Format("href='{0}'", ((EfdDescriptionPDFInfo)finfo).SrcFile)                                                     : string.Format("href='{0}'", ((EfdDescriptionPDFInfo)finfo).SrcFile) ) %>                         <%-- ЧИТАТЬ --%>                         <%= EfdDescriptionFileInfo.RenderButton("<span>Читать</span>"                                                , "b-book-button b-multi-button"                                                , fileAccesses.Where(fa => fa.AccessRead == 1).Select(fa => fa.FileInfo)                                                , finfo => string.Format("href='{0}' target='_blank'", ((EfdDescriptionPDFInfo)finfo).SrcRead)) %>                                     <% } %>                     <%-- ПРЕДПРОСМОТР --%>                     <%= EfdDescriptionFileInfo.RenderButton("<span>Предпросмотр</span>"                                            , "b-book-button b-multi-button"                                            , descriptionDetails.PreviewFiles.Where(preview => preview.FolderID == descriptionDetails.FolderPreviewID && !descriptionDetails.IsThirdLevel)                                           , finfo => string.Format("href='{0}'", finfo.SrcFile)) %>                     <% if (descriptionDetails.AccessForms == 0 && AppSPM.IsCurrentUserHasRole("ExternalUser")) { %>                         <%= EfdDescriptionFileInfo.RenderInfoLabel("<span>Недоступно для В2С продаж</span>", "width:62%;")%>                     <% } %>                 </div>             </div>         <% } /*Файлы одноуровневого ЭПД*/ %>         <div class="b-content-description">             <%=Layout.FormTableBegin("100%")%>                             <%=Layout.FormRow("ID", descriptionDetails.EfdDescriptionID )%>                 <% if (!String.IsNullOrEmpty(descriptionDetails.Annotation)) { %><%=Layout.FormRow("Аннотация", descriptionDetails.Annotation)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.RecommendedBy)) { %><%=Layout.FormRow("Кем рекомендовано", descriptionDetails.RecommendedBy)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.RecommendedTo)) { %><%=Layout.FormRow("Кому рекомендовано", descriptionDetails.RecommendedTo)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.ISBN)) { %><%=Layout.FormRow("ISBN", descriptionDetails.ISBN)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.UDK)) { %><%=Layout.FormRow("УДК", descriptionDetails.UDK)%><% } %>                 <% if (!String.IsNullOrEmpty(descriptionDetails.BBK)) { %><%=Layout.FormRow("ББК", descriptionDetails.BBK)%><% } %>             <%=Layout.FormTableEnd()%>                          <%=descriptionDetails.PagesCount == 0 ? String.Empty : descriptionDetails.PlainDescription %>             <%-- Отображаем доступные ЭПД 3 уровня--%>             <% if (descriptionDetails.IsThirdLevelApplicable && descriptionDetails.Level3Items.Any()) { %>                 <br/><br/><b>Также для выпуска доступны отдельные статьи:</b><br/>                 <% foreach(var thirdLevelEfd in descriptionDetails.Level3Items) { %>                     <a href='<%=thirdLevelEfd.Url%>'><%=thirdLevelEfd.TitleL3%></a><br/>                 <% } %>             <% } %>             <%if (AppSPM.IsCurrentUserHasRole(new string[]{"Administrator", "Client", "ClientUser", "RemoteReader"}) && !descriptionDetails.IsAvailableInSearch) {%>                 <span style="background: pink; padding: 5px; margin-bottom: 5px; margin-top: 5px; display:block; width:30%; float:right; text-align: center; border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; ">                     Через поиск недоступно.                 </span>             <% } %>         </div>         <%-- Загрузка на страницу файлов второго уровня для многоуровневых ЭПД --%>         <% if (descriptionDetails.IsFirstLevel && descriptionDetails.Level2Items.Any()) { %>             <% if (descriptionDetails.AccessForms.HasValue) { %>                 <div class="b-book-buttons">                     <% if (descriptionDetails.Level2NewItem != null && descriptionDetails.Level2NewItem.IsPurchase) { %>                         <asp:LinkButton ID="lbQuickNewItem" runat="server" CommandName="NewItem" OnCommand="lbQuickBuy_Command">Купить <%=descriptionDetails.WorkTypeID == 2 ? "новый том" : "свежий номер" %><br /><span>за <%=string.Format("{0:F2}р", descriptionDetails.Level2NewItem.Price)%></span></asp:LinkButton>                     <% } %>                     <% if ((descriptionDetails.WorkTypeID == 4 || descriptionDetails.WorkTypeID == 5) && descriptionDetails.Level2Items.Any(l2item => l2item.IsPurchase)) { %>                         <asp:LinkButton ID="lbQuickYear" runat="server" CommandName="Year" OnCommand="lbQuickBuy_Command">Купить весь <%=archYears.CurrentYear%>г<br /><span>за <%=string.Format("{0:F2}р", GetPrices(descriptionDetails.Level2Items.Where(l2item => l2item.IsPurchase).ToList()))%></span></asp:LinkButton>                     <% } %>                     <% if (/*!descriptionDetails.IsFree && */descriptionDetails.Price > 0) { %>                         <asp:LinkButton ID="lbQuickArchive" runat="server" CommandName="Archive" OnCommand="lbQuickBuy_Command">Купить <%=descriptionDetails.WorkTypeID == 2 ? "все тома" : "все номера" %><br /><span>за <%=string.Format("{0:F2}р", descriptionDetails.Price)%></span></asp:LinkButton>                     <% } %>                 </div>             <% } %>             <div class="b-content-arch">                 <% if (descriptionDetails.WorkTypeID == 4 || descriptionDetails.WorkTypeID == 5) { %>                     <ul class="b-content-arch-years">                     <% foreach(var year in archYears) { %>                         <% if (archYears.CurrentYear == year) { %>                             <li class="active"><b><%=year%></b></li>                         <% } else { %>                             <li><a href="/efd/<%=descriptionDetails.EfdDescriptionID%>?year=<%=year%>"><%=year%></a></li>                         <% } %>                     <% } %>                     </ul>                 <% } %>                 <div class="b-content-arch-items">                 <div class="b-content-arch-wrapper">                 <% foreach(var level2Item in descriptionDetails.Level2Items) { %>                     <%                     var cover2Big = descriptionDetails.GetCover(CoverSizeType.Big, level2Item.FolderCoverID ?? 0);                     var cover2Middle = descriptionDetails.GetCover(CoverSizeType.Middle, level2Item.FolderCoverID ?? 0);                     var level2files = descriptionDetails.Files.Where(file => file.FolderID == level2Item.FolderPDFID);                     var filel2Accesses = new List<EfdDescriptionFileAccess>();                     if (level2Item.WorkTypeID != 4 || level2Item.IsPublish)                         //Покупка опубликованного номера                         foreach(var level2file in level2files)                             filel2Accesses.Add(getAccessForm(level2Item, level2file, true));                     else                         //Подписка на номера                         filel2Accesses.Add(getAccessForm(level2Item, null, true));                     %>                     <div class="b-content-arch-item">                         <a class="logo" href="<%=level2Item.Url%>">                             <img <%--width="90px" height="120px"--%>                                  src="<%=cover2Middle != null ? cover2Middle.SrcData : "/i/no_photo_available.jpg"%>"                                 <% if (cover2Middle != null) { %>                                     <% if (cover2Middle.Width/90 > cover2Middle.Height/120) { %>                                          width="90px"                                      <% } else { %>                                          height="120px"                                     <% } %>                                 <% } else { %>                                     width="90px"                                      height="120px"                                 <% } %>                                 <% if (false && cover2Big != null) { %>                                     class="b-item-cover"                                      data-big="<%=cover2Big.SrcData %>"                                      data-width="<%=cover2Big.Width %>"                                      data-height="<%=cover2Big.Height %>"                                 <% } %>                             />                         </a>                             <h4><%=level2Item.TitleArch%></h4>                         <% if (isShowAccess) { %>                             <div style="background: pink; padding: 5px; margin-bottom: 5px; ">                                 Activity: <%=level2Item.ActivitySysName %></ br>                                 IsFree: <%=level2Item.IsFree%></ br>                                 WorkTypeID: <%=level2Item.WorkTypeID%></ br>                                 IsPublish: <%=level2Item.IsPublish%></ br>                                 Price: <%=level2Item.Price%></ br>                                 <% foreach(var filel2Access in filel2Accesses) { %>                                     <hr />                                     <% if (filel2Access.FileInfo != null) { %>                                         [dbo].f_CheckEfdAccess(<%=level2Item.EfdDescriptionID%>, <%=filel2Access.FileInfo.FileID%>, <%=currentSubjectID%>, '<%=ipaddress%>')</ br>                                     <% } %>                                     <% if (currentUserIsB2c) { %>                                         [dbo].f_CheckEfdB2cAccess(<%=level2Item.EfdDescriptionID%>, <%= AppSPM.GetCurrentSubjectID()%>)</ br>                                     <% } %>                                     Download: <%=filel2Access.AccessDownload%></ br>                                      Read: <%=filel2Access.AccessRead%>                                 <% } %>                             </div>                         <% } %>                         <div class="b-arch-buttons">                             <% if (!Request.IsAuthenticated) { %>                                 <% if (level2Item.IsPurchase) { %>                                     <% if (level2Item.WorkTypeID != 4 || level2Item.IsPublish) { %>                                         <%=buyManager.RenderLink(string.Format("Купить за {0:F2}р", level2Item.Price), level2Item.EfdDescriptionID)%>                                     <% } else { %>                                         <%=buyManager.RenderLink(string.Format("Подписка ({0:F2}р)", level2Item.Price), level2Item.EfdDescriptionID)%>                                     <% } %>                                 <% } %>                                 <% if (level2Item.AccessDownload == 1) { %>                                     <%=buyManager.RenderLink("Скачать", descriptionDetails.EfdDescriptionID)%>                                 <% } %>                                 <% if (level2Item.AccessRead == 1) { %>                                     <%=buyManager.RenderLink("Читать", descriptionDetails.EfdDescriptionID)%>                                 <% } %>                             <% } else { %>                                 <% if (filel2Accesses.Any(fa => fa.AccessDownload == 2 || fa.AccessRead == 2)) { %>                                     <% if (!level2Item.BillGUID.HasValue) { %>                                         <% if (level2Item.WorkTypeID != 4 || level2Item.IsPublish) { %>                                             <%=buyManager.RenderLink(string.Format("Купить за {0:F2}р", level2Item.Price), level2Item.EfdDescriptionID)%>                                         <% } else { %>                                             <%=buyManager.RenderLink(string.Format("Подписка ({0:F2}р)", level2Item.Price), level2Item.EfdDescriptionID)%>                                         <% } %>                                                                                      <% if (!currentCarts.In(level2Item.EfdDescriptionID)) { %>                                             <a href="#" onclick="return cartManager_click(<%=level2Item.EfdDescriptionID%>)">В корзину</a>                                         <% } else { %>                                             <a class="gray" href="#" onclick="return cartManager_click(<%=level2Item.EfdDescriptionID%>)">В корзине <img src="/i/n/delete.gif" alt="Удалить" title="Удалить"/></a>                                                                         <% } %>                                     <% } else { %>                                         <% if (currentUserIsSubscribtionUser) { %>                                             <span style="color:red"><strong>*</strong>&nbsp;На рассмотрении!</span>                                         <% } %>                                     <% } %>                                 <% } %>                                 <%-- СКАЧАТЬ --%>                                 <%= EfdDescriptionFileInfo.RenderButton("Скачать"                                                        , "b-content-button b-multi-button"                                                        , filel2Accesses.Where(fa => fa.AccessDownload == 1 && fa.FileInfo != null).Select(fa => fa.FileInfo)                                                        , finfo => (!level2Item.IsFree && level2Item.Price > 0)                                                             //? string.Format("href='{0}' target='_blank' class='refresh' onclick='window.location.reload();'", ((EfdDescriptionPDFInfo)finfo).SrcFile)                                                             ? string.Format("href='{0}'", ((EfdDescriptionPDFInfo)finfo).SrcFile)                                                             : string.Format("href='{0}'", ((EfdDescriptionPDFInfo)finfo).SrcFile) ) %>                                 <%-- ЧИТАТЬ --%>                                 <%= EfdDescriptionFileInfo.RenderButton("Читать"                                                        , "b-content-button b-multi-button"                                                        , filel2Accesses.Where(fa => fa.AccessRead == 1 && fa.FileInfo != null).Select(fa => fa.FileInfo)                                                        , finfo => string.Format("href='{0}' target='_blank'", ((EfdDescriptionPDFInfo)finfo).SrcRead)) %>                             <% } %>                             <%-- ПРЕДПРОСМОТР --%>                             <%= EfdDescriptionFileInfo.RenderButton("Предпросмотр"                                                    , "b-content-button b-multi-button"                                                    , descriptionDetails.PreviewFiles.Where(preview => preview.FolderID == level2Item.FolderPreviewID)                                                   , finfo => string.Format("href='{0}'", finfo.SrcFile)) %>                             <% if (level2Item.AccessForms == 0) { %>                                 <%= EfdDescriptionFileInfo.RenderInfoLabel("Недоступно для В2С продаж", "")%>                             <% } %>                         </div>                         <%--                         <% if (Request.IsAuthenticated) { %>                             <div style="margin-top: 5px;">                                 <% if (filel2.AccessDownload == 0 && filel2.AccessRead == 0 && AppSPM.IsCurrentUserHasRole("Client", "ClientUser")) { %>                                     Нет доступа с данного компьютера, либо скачивание и чтение запрещено правообладателем                                 <% } else { %>                                     <% if (filel2.AccessDownload == 0) { %>                                         <i>*Скачивание запрещено правообладателем</i><br />                                      <% } %>                                     <% if (filel2.AccessRead == 0) { %>                                         <i>*Чтение запрещено правообладателем</i><br />                                     <% } %>                                 <% } %>                             </div>                         <% } %>                         --%>                     </div>                 <% } %>                 </div>                 </div>             </div>         <% } %>              <asp:LinkButton ID="lbCartManager" OnClick="lbCartManager_Click" runat="server" Text="" />         <asp:HiddenField runat="server" ID="hfCartItem" />         <script type="text/javascript">             function cartManager_click(id) {             document.getElementById('<%=hfCartItem.ClientID%>').value = id;             <%=Page.ClientScript.GetPostBackEventReference(lbCartManager, "") %>         }         </script>     </div>     <div class="b-content-clear"></div> </div> <% var sales = getTopSales(); %> <% if (sales.Any()) { %>     <div class="b-content">     <div class="b-content-wrapper">         <hr />         <h2>Популярные</h2>         <% foreach(var top in sales) { %>             <div class="tab-item-list" style="width:95px">                 <a class="tab-item-list-image" href="<%=top.Url%>" >                     <img src="<%=top.CoverUrl%>" alt="<%=top.Title%>" title="<%=top.Title%>" width="60" <%--height="80"--%> />                 </a>                 <a href="<%=top.Url%>">                     <span class="item-name"><%=top.ShortTitle%></span>                     <span class="item-price"><%=top.PriceView%></span>                 </a>             </div>         <% } %>     </div>     </div> <% } %> <% HttpCookie aCookie = Request.Cookies["LastViews"]; %> <% if (false && aCookie != null ) { %>     <h3>Вы уже подсматривали</h3>     <%=aCookie.Value%> <% } %> <% var lasts = getLastViews(); %> <% if (lasts.Any()) { %>     <div class="b-content">     <div class="b-content-wrapper">         <hr />         <h2>Вы уже смотрели</h2>         <% foreach(var last in lasts) { %>             <div class="tab-item-list" style="width:95px">                 <a class="tab-item-list-image" href="<%=last.Url%>" >                     <img src="<%=last.CoverUrl%>" alt="<%=last.Title%>" title="<%=last.Title%>" width="60" <%--height="80"--%> />                 </a>                 <a href="<%=last.Url%>">                     <span class="item-name"><%=last.ShortTitle%></span>                     <span class="item-price"><%=last.PriceView%></span>                 </a>             </div>         <% } %>     </div>     </div> <% } %> <script runat="server"> protected class EfdDescriptionDetails : EfdDescriptionInfo {     public EfdDescriptionDetails()     {         IsRecommended = false;         PosistiveCount = 0;         NegativeCount = 0;     }     public override string Title      {          get          {                 var title =/* this.SecondLevelDescriptionID.HasValue                     ? string.Format("{0} / {1}", this.FirstTitle, this.FirstAuthor)                       :*/ !this.FirstLevelDescriptionID.HasValue                     ? this.FirstTitle                     : string.Format("{0} {1} {2}", this.FirstLevelDescriptionTitle, this.FirstTitle, this.CreateYear);             //return (this.IsFree && this.Price == 0) /*this.IsFree || this.Price == 0*/             //    ? title             //    : (!this.FirstLevelDescriptionID.HasValue && (this.WorkTypeID == 4 || this.WorkTypeID == 5))             //        ? string.Format("{0} (от {1:F2} руб.)", this.FirstTitle, this.MinPrice /*this.Level2Items.Min(o1 => o1.Price)*/)             //        : string.Format("{0} ({1:F2} руб.)", title, this.Price);              return title;         }      }     public string PlainDescription { get; set; }     public string ISSN { get; set; }     public string ISBN { get; set; }     public string UDK { get; set; }     public string BBK { get; set; }     public string PublishingHouse { get; set; }     public string Annotation { get; set; }     public string RecommendedBy { get; set; }     public string RecommendedTo { get; set; }     public int PagesCount { get; set; }     public bool IsRecommended { get; set; }     public bool IsRecommendationsExists { get; set; }     public int PosistiveCount { get; set; }     public int NegativeCount { get; set; }     public bool IsAvailableInSearch { get; set; }     public EfdDescriptionInfo Level2NewItem { get; set; }     public EfdDescriptionInfo ParentLevel2Item { get; set; }     public int Level2NewItemID { get { return this.Level2NewItem != null ? this.Level2NewItem.EfdDescriptionID : 0; } }     public List<EfdDescriptionInfo> Level2Items { get; set; }     public List<EfdDescriptionInfo> Level3Items { get; set; }     public decimal MinPrice { get; set; }     //publishedEfds =   (o.WorkTypeID != 4);     //unPublishedEfds = (o.WorkTypeID == 4);     public List<EfdDescriptionPDFInfo> Files { get; set; }     public List<EfdDescriptionFileInfo> PreviewFiles { get; set; }     public List<EfdDescriptionCoverInfo> Covers { get; set; }     public EfdDescriptionCoverInfo GetCover(char sizeType, int folderCoverID)     {         if (this.Covers == null)             return null;         return this.Covers.FirstOrDefault(cover => cover.FolderID == folderCoverID && cover.SizeType == sizeType);     }     public string MetaTitle      {          get { return this.FirstLevelDescriptionID > 0                  ? String.Format("{0} {1} {2} {3}", this.FirstLevelDescriptionAuthor, this.FirstLevelDescriptionTitle, this.FirstTitle, this.CreateYear)                  : this.FirstTitle;          }      } } protected class EfdDescriptionInfo {     public int EfdDescriptionID { get; set; }     public string FirstTitle { get; set; }     public string FirstAuthor { get; set; }     public virtual string Title { get { return this.IsFree || this.Price == 0                 ? this.FirstTitle                 : string.Format("{0} ({1:F2} руб.)", this.FirstTitle, this.Price); } }     public string TitleArch { get { return (this.CreateYear ?? 0)  == 0                     ? this.FirstTitle                     : string.Format("{0} {1}", this.FirstTitle, this.CreateYear); } }     public string TitleL3      {          get          {                 var title =  string.Format("{0} / {1}", this.FirstTitle, this.FirstAuthor) ;             return (this.IsFree && this.Price == 0)                 ? title                 : string.Format("{0} ({1:F2} руб.)", title, this.Price);          }      }     public string TitleL2     {         get         {             return !this.FirstLevelDescriptionID.HasValue                     ? this.FirstTitle                     : string.Format("{0} {1}", /*this.FirstLevelDescriptionTitle,*/ this.FirstTitle, this.CreateYear);         }     }     public int? FirstLevelDescriptionID { get; set; }     public int? SecondLevelDescriptionID { get; set; }     public string FirstLevelDescriptionTitle { get; set; }     public string FirstLevelDescriptionAuthor { get; set; }     public int WorkTypeID { get; set; }     public bool WorkTypeLevel2 { get; set; }     public string ActivitySysName { get; set; }     public bool IsDeleted { get; set; }     public bool IsFree { get; set; }     public decimal Price { get; set; }     public DateTime? ExpirationDate { get; set; }     public int? FolderPDFID { get; set; }     public int? FolderPreviewID { get; set; }     public int? FolderCoverID { get; set; }     public int? CreateYear { get; set; }     public int? Month { get; set; }     public int? Day { get; set; }     public Guid? BillGUID { get; set; }     public bool IsFirstLevel { get { return this.WorkTypeLevel2 && this.FirstLevelDescriptionID == null; } }     public bool IsThirdLevel { get { return this.WorkTypeID == 18; } }     public bool IsThirdLevelApplicable { get { return this.FirstLevelDescriptionID != null && (this.WorkTypeID == 4 || this.WorkTypeID == 5); } }     public bool IsPublish { get { return this.ActivitySysName == "Approved"; } }     public bool IsPurchase { get { return !this.IsFree && this.Price > 0 && (this.AccessDownload == 2 || this.AccessRead == 2); } }     //для неопубликованной периодики     private int? accessForms;     public int? AccessForms      {          get { return accessForms; }          set          {             accessForms = value;             this.AccessDownload = AccessForms.HasValue ? accessForms.Value / 10 : 0;             this.AccessRead = AccessForms.HasValue ? accessForms.Value % 10 : 0;         }     }     public int AccessDownload { get; private set; }     public int AccessRead  { get; private set; }     public string Url { get { return string.Format("/efd/{0}", this.EfdDescriptionID); } }     public string FirstLevelUrl { get { return FirstLevelDescriptionID.HasValue ? string.Format("/efd/{0}", this.FirstLevelDescriptionID.Value) : ""; } } } protected class EfdDescriptionPDFInfo : EfdDescriptionFileInfo {     private int? accessForms;     public int? AccessForms      {          get { return accessForms; }          set          {             accessForms = value;             this.AccessDownload = AccessForms.HasValue ? accessForms.Value / 10 : 0;             this.AccessRead = AccessForms.HasValue ? accessForms.Value % 10 : 0;         }     }     public int AccessDownload { get; private set; }     public int AccessRead  { get; private set; }     public string SrcRead { get { return string.Format("/read/{0}", this.FileID); } } } protected class EfdDescriptionCoverInfo : EfdDescriptionFileInfo {     public char SizeType { get; set; }     public int Width { get; set; }     public int Height { get; set; } } protected class EfdDescriptionFileInfo {     public int FolderID { get; set; }     public int FileID { get; set; }     public Guid Guid { get; set; }     private string title;     public string Title     {          get { return title; }         set          {              title = value;             TitleEx = title.Replace("_", " ");         }     }     public string TitleEx { get; private set; }     private long length;     public long Length      {          get { return length; }         set          {              length = value;             Size = (double)length / 1024 / 1024;          }     }     public double Size { get; private set; }     public string SrcData { get { return string.Format("/data.ashx?guid={0}", this.Guid); } }     public string SrcFile { get { return string.Format("/file.ashx?guid={0}", this.Guid); } }     public static string RenderButton(string title, string cssClass, IEnumerable<EfdDescriptionFileInfo> fileInfos, Func<EfdDescriptionFileInfo, string> buttonFunc)     {         if (fileInfos == null || !fileInfos.Any())             return string.Empty;         var button = new StringBuilder();         if (fileInfos.Count() > 1)          {              button.AppendFormat("<div class='{0}'>{1}"/*+ "▼"*/, cssClass, title)                   .Append("<ul>");             foreach(var fileInfo in fileInfos)                 button.AppendFormat("<li><a {0}>{1}</a></li>", buttonFunc(fileInfo), fileInfo.Title);             button.Append("</ul>")                   .Append("</div>");         }         else              button.AppendFormat("<a {0}>{1}</a>", buttonFunc(fileInfos.First()), title);         return button.ToString();     }     public static string RenderInfoLabel(string title, string attributes)     {         if (String.IsNullOrEmpty(title))             return string.Empty;         var button = new StringBuilder();         button.AppendFormat("<a style='text-decoration:none;white-space:normal;cursor:pointer;{0}' href='#'>{1}</a>", attributes, title);         return button.ToString();     } } protected class ArchYears : List<int> {     public ArchYears(List<int> years, int year)     {         if (years == null || !years.Any())             return;         this.AddRange(years.OrderByDescending(y => y));         this.CurrentYear = (years.Any(y => y == year)                      ? year                     : years.Max());     }     public int CurrentYear { get; set; } } protected class Carts : List<Solution.Model.Cart> {     public Carts(List<Solution.Model.Cart> carts)     {         if (carts == null || !carts.Any())             return;         this.AddRange(carts);     }     public bool In(int efdDescriptionID)     {         return this.Any(o1 => o1.ObjectKey == efdDescriptionID);     }     public Solution.Model.Cart Get(int efdDescriptionID)     {         return this.FirstOrDefault(o1 => o1.ObjectKey == efdDescriptionID);     }     public string SessionID { get; set; } } protected EfdDescriptionDetails descriptionDetails = null; protected ArchYears archYears = null; protected UserInfo currentUserInfo = null; protected int currentSubjectID = 0; protected string ipaddress = string.Empty; protected bool currentUserIsB2c = false; protected bool currentUserIsSubscribtionUser = false; protected Carts currentCarts = null; protected bool isBanned; protected void Page_Load(object sender, EventArgs e) {     lMsg.Text = string.Empty;     ipaddress = Request.ServerVariables["REMOTE_ADDR"];     if (Request.IsAuthenticated)     {         currentSubjectID = AppSPM.GetCurrentSubjectID();         currentUserInfo = App.DataContext.UserInfo.SingleOrDefault(o => o.SPM_Subject.SubjectID == currentSubjectID);         currentUserIsB2c = AppSPM.IsCurrentUserHasRole("ExternalUser");         //Вынести в отдельный метод         if (currentUserInfo == null && currentSubjectID > 0)         {             currentUserInfo = new UserInfo();             App.DataContext.UserInfo.InsertOnSubmit(currentUserInfo);             currentUserInfo.Status = UserInfoStatus.Created;             currentUserInfo.Type = 'E';             currentUserInfo.SPM_Subject = App.DataContext.SPM_Subject.Single(o => o.SubjectID == currentSubjectID);             currentUserInfo.City = " ";             App.DataContext.SubmitChanges();         }              if (currentUserInfo.Wallet == null)         {             Wallet wallet = new Wallet();             App.DataContext.Wallet.InsertOnSubmit(wallet);             currentUserInfo.Wallet = wallet;             App.DataContext.SubmitChanges();         }     }     descriptionDetails = App.DataContext.EfdDescription                     .Where(ee => ee.EfdDescriptionID == Url.Current.GetInt("efd", 0)                           && !ee.IsDeleted)                     .Select(ee => new EfdDescriptionDetails() {                             EfdDescriptionID = ee.EfdDescriptionID,                             FirstTitle = ee.FirstTitle,                             FirstAuthor = ee.FirstAuthor,                             FirstLevelDescriptionID = ee.FirstLevelDescriptionID,                             SecondLevelDescriptionID = ee.SecondLevelDescriptionID,                             FirstLevelDescriptionTitle = ee.FirstLevelDescription.FirstTitle,                             FirstLevelDescriptionAuthor = ee.FirstLevelDescription.FirstAuthor,                             WorkTypeID = ee.WorkTypeID,                             WorkTypeLevel2 = ee.WorkType.Level2,                             ActivitySysName = ee.Activity.SysName,                             IsDeleted = ee.IsDeleted,                             IsFree = ee.IsFree,                             Price = App.DataContext.EfdPrice.Where(ep => ep.EfdDescriptionID == ee.EfdDescriptionID && ep.PriceType == PriceType.BaseB2C)                                             .Select(ep => (decimal?)ep.Price)                                             .FirstOrDefault() ?? 0,                             ExpirationDate = App.DataContext.F_GetExpirationDateSummary(ee.EfdDescriptionID),                             PublishingHouse = App.DataContext.F_EfdDescription_PublishingHouse(ee.EfdDescriptionID),                             Annotation = ee.Annotation,                             RecommendedBy = ee.RecommendedBy,                             RecommendedTo = ee.RecommendedTo,                             PagesCount = ee.CommonPagesCount,                             CreateYear = ee.CreateYear,                             Month = ee.Month,                             Day = ee.Day,                             FolderPDFID = ee.FolderPDFID,                             FolderPreviewID = ee.FolderPreviewID,                             FolderCoverID = ee.FolderCoverID,                             IsRecommended = App.DataContext.EfdRecommendationStats.Any(o1 => o1.UserID == currentSubjectID && o1.EfdDescriptionID == ee.EfdDescriptionID && o1.IsRecommendation),                             IsRecommendationsExists = App.DataContext.EfdRecommendationStats.Any(o1 => o1.UserID == currentSubjectID && o1.EfdDescriptionID == ee.EfdDescriptionID),                             PosistiveCount = App.DataContext.EfdRecommendationStats.Count(o1 => o1.EfdDescriptionID == ee.EfdDescriptionID && o1.IsRecommendation),                             NegativeCount = App.DataContext.EfdRecommendationStats.Count(o1 => o1.EfdDescriptionID == ee.EfdDescriptionID && !o1.IsRecommendation),                             BillGUID = getEfdDescriptionBillItems().Where(o1 => o1.ObjectKey == ee.EfdDescriptionID).Select(o1 => (Guid?)o1.BillGUID).FirstOrDefault(),                             AccessForms = App.DataContext.F_CheckEfdB2cAccess(ee.EfdDescriptionID, currentSubjectID)                         })                     .SingleOrDefault();     if (descriptionDetails == null)     {         Response.Redirect("~/");         return;         //throw new Exception("Запрашиваемый ресурс не найден");     }     descriptionDetails.IsAvailableInSearch = App.DataContext.EfdDescription.First(o => o.EfdDescriptionID == Url.Current.GetInt("efd", 0)).IsAvailableInSearch;     descriptionDetails.PlainDescription = PlainDescription.BuildDescription(descriptionDetails.EfdDescriptionID);     var issn = App.DataContext.ISSN.FirstOrDefault(o1 => o1.EfdDescriptionID == descriptionDetails.EfdDescriptionID);     if (issn != null)         descriptionDetails.ISSN = issn.Title;     var isbn = App.DataContext.ISBN.FirstOrDefault(o1 => o1.EfdDescriptionID == descriptionDetails.EfdDescriptionID);     if (isbn != null)         descriptionDetails.ISBN = isbn.Title;     descriptionDetails.UDK = App.DataContext.UDK.Where(o1 => o1.EfdDescriptionID == descriptionDetails.EfdDescriptionID).Select(o1 => o1.Title).ToArray().Join("; ");     descriptionDetails.BBK = App.DataContext.BBK.Where(o1 => o1.EfdDescriptionID == descriptionDetails.EfdDescriptionID).Select(o1 => o1.Title).ToArray().Join("; ");     var descriptions = App.DataContext.EfdDescription.Where(efd => efd.EfdDescriptionID == descriptionDetails.EfdDescriptionID || efd.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID);     if (descriptionDetails.IsFirstLevel)     {         archYears = new ArchYears(getEfdDescriptionInfosWithB2B(false)                         .Where(efdInfo => efdInfo.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID && efdInfo.CreateYear > 0)                         .Select(efdInfo => efdInfo.CreateYear ?? 0)                         .Distinct()                         .ToList(), Url.Current.GetInt("year", 0));         descriptionDetails.Level2NewItem = getEfdDescriptionInfos(currentUserIsB2c)                             .Where(efdInfo => efdInfo.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID                                     && App.DataContext.N_File.Any(nf => efdInfo.FolderCoverID != null && nf.FolderID == efdInfo.FolderCoverID))                             .OrderByDescending(o => o.CreateYear)                             .ThenByDescending(o => o.Month)                             .ThenByDescending(o => o.Day)                             .ThenByDescending(o => o.EfdDescriptionID)                             .FirstOrDefault();         descriptionDetails.Level2Items = getEfdDescriptionInfosWithB2B(currentUserIsB2c)                             .Where(efdInfo => efdInfo.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID && efdInfo.CreateYear == archYears.CurrentYear)                             .Distinct()                             .OrderByDescending(o => o.CreateYear)                             .ThenBy(o => o.Month)                             .ThenBy(o => o.Day)                             .ThenBy(o => o.EfdDescriptionID)                             .ToList();         descriptionDetails.MinPrice = App.DataContext.EfdPrice.Where(ep => ep.EfdDescriptionID == descriptionDetails.EfdDescriptionID && ep.PriceType == PriceType.BaseB2C)                                     .Select(ep => ep.MinPrice)                                     .FirstOrDefault() ?? 0;         descriptions = descriptions.Where(efd => efd.CreateYear == archYears.CurrentYear || efd.EfdDescriptionID == descriptionDetails.Level2NewItemID);     }     if (descriptionDetails.IsThirdLevelApplicable)     {         descriptionDetails.Level3Items = getEfdDescriptionInfos(currentUserIsB2c)                             .Where(efdInfo => efdInfo.SecondLevelDescriptionID == descriptionDetails.EfdDescriptionID)                             .Distinct()                             .OrderByDescending(o => o.CreateYear)                             .ThenBy(o => o.Month)                             .ThenBy(o => o.Day)                             .ThenBy(o => o.EfdDescriptionID)                             .ToList();     }     descriptionDetails.Files = (from efd in descriptions                     join file in App.DataContext.N_File on efd.FolderPDFID equals file.FolderID                    where efd.FolderPDFID > 0                    select new EfdDescriptionPDFInfo() {                         FolderID = file.FolderID ?? 0,                         FileID = file.FileID,                         Guid = file.Guid,                         Title = file.Title,                         Length = file.Length,                         AccessForms = Request.IsAuthenticated                                 ? App.DataContext.F_CheckEfdAccess(efd.EfdDescriptionID, file.FileID, AppSPM.GetCurrentSubjectID(), ipaddress)                                 : null                     })                   .ToList();     descriptionDetails.PreviewFiles = descriptions.SelectMany(efd => efd.FolderPreview.Files)                               .Select(file => new EfdDescriptionFileInfo() {                                     FolderID = file.FolderID ?? 0,                                     Guid = file.Guid,                                     Title = file.Title                                 })                               .ToList();     descriptionDetails.Covers = descriptions.SelectMany(efd => efd.FolderCover.Files)                         .Select(file => new EfdDescriptionCoverInfo() {                                 FolderID = file.FolderID ?? 0,                                 Guid = file.Guid,                                  SizeType = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.SizeType : CoverSizeType.Small,                                  Width = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.Width : 0,                                  Height = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.Height : 0                               })                         .ToList();     if (descriptionDetails.IsThirdLevel)     {         descriptionDetails.ParentLevel2Item = getAllEfdDescriptionInfos(currentUserIsB2c)                             .FirstOrDefault(efdInfo => efdInfo.EfdDescriptionID == descriptionDetails.SecondLevelDescriptionID);         if (!descriptionDetails.Covers.Any())         {             descriptionDetails.Covers = descriptions.SelectMany(efd => efd.SecondLevelDescription.FolderCover.Files)                         .Select(file => new EfdDescriptionCoverInfo() {                                 FolderID = file.FolderID ?? 0,                                 Guid = file.Guid,                                  SizeType = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.SizeType : CoverSizeType.Small,                                  Width = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.Width : 0,                                  Height = file.EfdDescriptionCover != null ? file.EfdDescriptionCover.Height : 0                               })                         .ToList();             /***Если у ЭПД 3 уровня нет обложки, подтягиваем ее из ЭПД 2 уровня.***/             if (descriptionDetails.ParentLevel2Item != null)                 descriptionDetails.FolderCoverID = descriptionDetails.ParentLevel2Item.FolderCoverID;         }     }     var cartSessionID = GetSubscribtionSessionID();     currentCarts = new Carts(App.DataContext.Cart.Where(o1 => o1.UserID == currentSubjectID && (cartSessionID == String.Empty || o1.SessionID == cartSessionID)).ToList());     currentCarts.SessionID = cartSessionID;     Solution.Statistics.B2BStatManager.EfdSearch(descriptionDetails.EfdDescriptionID);     if (!IsPostBack)     {         if (descriptionDetails.IsFirstLevel)         {             foreach(var level2Item in descriptionDetails.Level2Items)                 App.DataContext.EfdViewStats.InsertOnSubmit(new EfdViewStats() { EfdDescriptionID = level2Item.EfdDescriptionID, ViewDate = DateTime.Now, UserID = (Request.IsAuthenticated ? currentSubjectID : (int?)null)    });         }         App.DataContext.EfdViewStats.InsertOnSubmit(new EfdViewStats() { EfdDescriptionID = descriptionDetails.EfdDescriptionID, ViewDate = DateTime.Now, UserID = (Request.IsAuthenticated ? currentSubjectID : (int?)null) });         App.DataContext.SubmitChanges();     }     string titleDovesok = ": каталог электронных книг, журналов и статей. Онлайн-библиотека Rucont.ru";     string descDovesok0 = "Электронные книги и статьи из каталога «";     string descDovesok1 = "». Скачайте в онлайн-библиотеке Rucont.";     string keyDovesok = ", купить, читать онлайн, скачать, книга, учебник, монография, журнал, лицензионные, электронная библиотека, магазин, электронно-библиотечная система, эбс, руконт, литература, популярное, бестселлеры, новинки, рекомендуем, электронные книги, цифровые, произведения, ВАК, романы, интересное, pdf, учебная, научная, деловая, жанр";     HttpContext.Current.Items["title"] = descriptionDetails.Title + titleDovesok;     HttpContext.Current.Items["keywords"] = descriptionDetails.Title+keyDovesok;     HttpContext.Current.Items["description"] = descDovesok0 + descriptionDetails.Title + descDovesok1; } private IQueryable<EfdDescriptionInfo> getAllEfdDescriptionInfos(bool isCheckAccess) {     return  from efd in App.DataContext.EfdDescription              join price in App.DataContext.EfdPrice on efd.EfdDescriptionID equals price.EfdDescriptionID              join billItem in getEfdDescriptionBillItems().Take(1) on efd.EfdDescriptionID equals billItem.ObjectKey into _billItem from billItem in _billItem.DefaultIfEmpty()         where !efd.IsDeleted            && price.PriceType == PriceType.BaseB2C          select new EfdDescriptionInfo() {                 EfdDescriptionID = efd.EfdDescriptionID,                 FirstLevelDescriptionID = efd.FirstLevelDescriptionID,                 SecondLevelDescriptionID = efd.SecondLevelDescriptionID,                 /***Проверить быстродействие***/                 FirstLevelDescriptionTitle = efd.FirstLevelDescriptionID != null ? efd.FirstLevelDescription.FirstTitle : "",                 FirstTitle = efd.FirstTitle,                 FirstAuthor = efd.FirstAuthor,                 WorkTypeID = efd.WorkTypeID,                 ActivitySysName = efd.Activity.SysName,                 IsFree = efd.IsFree,                 Price = price.Price,                 CreateYear = efd.CreateYear,                 Month = efd.Month,                 Day = efd.Day,                 FolderPDFID = efd.FolderPDFID,                 FolderPreviewID = efd.FolderPreviewID,                 FolderCoverID = efd.FolderCoverID,                 AccessForms = (!Request.IsAuthenticated || isCheckAccess)                             ? App.DataContext.F_CheckEfdB2cAccess(efd.EfdDescriptionID, AppSPM.GetCurrentSubjectID())                             : null,                 BillGUID = (Guid?)billItem.BillGUID             }; } private IQueryable<EfdDescriptionInfo> getEfdDescriptionInfos(bool isCheckAccess) {     //тут можно еще добавить проверку на режимы доступа, тогда точно можно выделить доступные для покупки ЭПД     IQueryable<EfdDescriptionInfo> b2cItems =             from efd in App.DataContext.EfdDescription              join price in App.DataContext.EfdPrice on efd.EfdDescriptionID equals price.EfdDescriptionID              join eo in App.DataContext.V_EfdDescriptionOwners on efd.EfdDescriptionID equals eo.EfdDescriptionID              join billItem in getEfdDescriptionBillItems().Take(1) on efd.EfdDescriptionID equals billItem.ObjectKey into _billItem from billItem in _billItem.DefaultIfEmpty()         where !efd.IsDeleted            && eo.LicenseAgreementAppendixIsCurrent            && (efd.ExpirationDate == null || efd.ExpirationDate > DateTime.Now)            && price.PriceType == PriceType.BaseB2C             && (efd.IsFree || price.Price > 0)            && (             (efd.WorkTypeID != 4 && efd.Activity.SysName == "Approved")             ||             (efd.WorkTypeID == 4 && (new string[]{ "Created", "FilesUploaded", "Approved"}).Contains(efd.Activity.SysName))               )         select new EfdDescriptionInfo() {                 EfdDescriptionID = efd.EfdDescriptionID,                 FirstLevelDescriptionID = efd.FirstLevelDescriptionID,                 SecondLevelDescriptionID = efd.SecondLevelDescriptionID,                 /***Проверить быстродействие***/                 FirstLevelDescriptionTitle = efd.FirstLevelDescriptionID != null ? efd.FirstLevelDescription.FirstTitle : "",                 FirstTitle = efd.FirstTitle,                 FirstAuthor = efd.FirstAuthor,                 WorkTypeID = efd.WorkTypeID,                 ActivitySysName = efd.Activity.SysName,                 IsFree = efd.IsFree,                 Price = price.Price,                 CreateYear = efd.CreateYear,                 Month = efd.Month,                 Day = efd.Day,                 FolderPDFID = efd.FolderPDFID,                 FolderPreviewID = efd.FolderPreviewID,                 FolderCoverID = efd.FolderCoverID,                 AccessForms = (!Request.IsAuthenticated || isCheckAccess)                             ? App.DataContext.F_CheckEfdB2cAccess(efd.EfdDescriptionID, AppSPM.GetCurrentSubjectID())                             : null,                 BillGUID = (Guid?)billItem.BillGUID             };     return b2cItems; } private IQueryable<EfdDescriptionInfo> getEfdDescriptionInfosWithB2B(bool isCheckAccess) {     IQueryable<EfdDescriptionInfo> b2cItems = getEfdDescriptionInfos(isCheckAccess);     if (AppSPM.IsCurrentUserHasRole(new string[]{"Administrator", "Client", "ClientUser", "RemoteReader"}))     {         IQueryable<EfdDescriptionInfo> result2 =   from efd in App.DataContext.EfdDescription              join eo in App.DataContext.V_EfdDescriptionAvailableB2B on efd.EfdDescriptionID equals eo.EfdDescriptionID              join price in App.DataContext.EfdPrice on efd.EfdDescriptionID equals price.EfdDescriptionID              join billItem in getEfdDescriptionBillItems().Take(1) on efd.EfdDescriptionID equals billItem.ObjectKey into _billItem from billItem in _billItem.DefaultIfEmpty()         where !efd.IsDeleted && eo.SubjectID == AppSPM.GetCurrentSubjectID()            && price.PriceType == PriceType.BaseB2C          select new EfdDescriptionInfo() {                 EfdDescriptionID = efd.EfdDescriptionID,                 FirstLevelDescriptionID = efd.FirstLevelDescriptionID,                 SecondLevelDescriptionID = efd.SecondLevelDescriptionID,                 /***Проверить быстродействие***/                 FirstLevelDescriptionTitle = efd.FirstLevelDescriptionID != null ? efd.FirstLevelDescription.FirstTitle : "",                 FirstTitle = efd.FirstTitle,                 FirstAuthor = efd.FirstAuthor,                 WorkTypeID = efd.WorkTypeID,                 ActivitySysName = efd.Activity.SysName,                 IsFree = efd.IsFree,                 Price = price.Price,                 CreateYear = efd.CreateYear,                 Month = efd.Month,                 Day = efd.Day,                 FolderPDFID = efd.FolderPDFID,                 FolderPreviewID = efd.FolderPreviewID,                 FolderCoverID = efd.FolderCoverID,                 AccessForms = (!Request.IsAuthenticated || isCheckAccess)                             ? App.DataContext.F_CheckEfdB2cAccess(efd.EfdDescriptionID, AppSPM.GetCurrentSubjectID())                             : null,                 //BillGUID = (Guid?)Guid.Empty                 BillGUID = (Guid?)billItem.BillGUID             };         return b2cItems.Union(result2);     }     return b2cItems; } private IQueryable<BillItem> getEfdDescriptionBillItems() {     return App.DataContext.BillItem             .Where(o1 => o1.Bill.UserID == currentSubjectID                   && !o1.Bill.IsPaid                   && o1.ClassName == "EfdDescription"                     && (!o1.Bill.ExpirationDate.HasValue || o1.Bill.ExpirationDate < DateTime.Now)); } struct EfdDescriptionFileAccess {     public string Title;     public int AccessDownload;     public int AccessRead;     public EfdDescriptionPDFInfo FileInfo; } private EfdDescriptionFileAccess getAccessForm(EfdDescriptionInfo descriptionInfo,                         EfdDescriptionPDFInfo fileInfo,                              bool ischeckdownload) {     EfdDescriptionFileAccess fileAccess;     //1. Покупка через корзину     fileAccess.Title = fileInfo != null                 ? String.Format("{0} ({1:F1}&nbsp;Мб)", fileInfo.TitleEx, fileInfo.Size)                 : descriptionInfo.FirstTitle;     fileAccess.AccessDownload = 0;      fileAccess.AccessRead = 0;     fileAccess.FileInfo = fileInfo;     //3. Агентско-сетевая группа через предикат     if (Request.IsAuthenticated      && App.DataContext.SPM_SubjectRole.Any(o => o.SubjectID == AppSPM.GetCurrentSubjectID() && (o.Role.RoleGroupID == 1 || o.Role.RoleGroupID == 3))      && !(new EfdDescriptionController()).GetList().Any(o => o.EfdDescriptionID == descriptionInfo.EfdDescriptionID))     {         if (fileInfo != null)             fileInfo.AccessForms = 0;         else             descriptionInfo.AccessForms = 0;         return fileAccess;     }     fileAccess.AccessDownload = (fileInfo != null) ? fileInfo.AccessDownload : descriptionInfo.AccessDownload;     fileAccess.AccessRead = (fileInfo != null) ? fileInfo.AccessRead : descriptionInfo.AccessRead;     return fileAccess; } protected void lbQuickBuy_Command(object sender, CommandEventArgs e) {     if (!Request.IsAuthenticated)     {         Response.Redirect("~/login?returnurl=" + Query.CreateReturnUrl());         return;     }     IQueryable<EfdDescriptionInfo> efdDescriptionInfos = null;     switch(e.CommandName)         {         case "NewItem":              if (descriptionDetails.Level2NewItem != null)                 efdDescriptionInfos = getEfdDescriptionInfos(currentUserIsB2c)                             .Where(efdInfo => efdInfo.EfdDescriptionID == descriptionDetails.Level2NewItem.EfdDescriptionID);             break;         case "Year":              efdDescriptionInfos = getEfdDescriptionInfos(currentUserIsB2c)                             .Where(efdInfo => efdInfo.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID && efdInfo.CreateYear == archYears.CurrentYear);             break;         case "Archive":              efdDescriptionInfos = getEfdDescriptionInfos(currentUserIsB2c)                             .Where(efdInfo => efdInfo.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID);             break;     }     if (efdDescriptionInfos != null)     {         addToCart(efdDescriptionInfos);         App.DataContext.SubmitChanges();     }     Response.Redirect("~/cart"); } protected void lbBuyManager_Click(object sender, EventArgs e) {     if (!Request.IsAuthenticated)     {         Response.Redirect("~/login?returnurl=" + Query.CreateReturnUrl());         return;     }     var efdDescriptionID = buyManager.Value.ToInt32(0);     if (!currentCarts.In(efdDescriptionID))     {         var descriptionInfo = descriptionDetails.EfdDescriptionID == efdDescriptionID                     ? descriptionDetails                     : descriptionDetails.Level2Items.FirstOrDefault(leitem => leitem.EfdDescriptionID == efdDescriptionID);              if (descriptionInfo != null && descriptionInfo.BillGUID == null)         {             addToCart(descriptionInfo);             App.DataContext.SubmitChanges();         }     }     Response.Redirect("~/cart"); } protected void lbCartManager_Click(object sender, EventArgs e) {     var efdDescriptionID = hfCartItem.Value.ToInt32(0);     var cartItem = currentCarts.Get(efdDescriptionID);     if (cartItem == null)     {         var descriptionInfo = descriptionDetails.EfdDescriptionID == efdDescriptionID                     ? descriptionDetails                     : descriptionDetails.Level2Items.FirstOrDefault(leitem => leitem.EfdDescriptionID == efdDescriptionID);              if (descriptionInfo != null && descriptionInfo.BillGUID == null)             addToCart(descriptionInfo);     }     else     {         currentCarts.Remove(cartItem);         App.DataContext.Cart.DeleteOnSubmit(cartItem);     }     App.DataContext.SubmitChanges(); } private void addToCart(IQueryable<EfdDescriptionInfo> efdDescriptionInfos) {     foreach(var efdDescription in efdDescriptionInfos                     .Where(ee => ee.Price > 0 && ee.BillGUID == null)                     .ToList()                     .Where(ee => ee.IsPurchase))     {         if (currentCarts.In(efdDescription.EfdDescriptionID))             continue;         addToCart(efdDescription);         } } private void addToCart(EfdDescriptionInfo descriptionInfo) {     var cartItem = new Solution.Model.Cart() {                 UserID = currentSubjectID,                 Number = 1,                 ObjectKey = descriptionInfo.EfdDescriptionID,                 Title = descriptionInfo.TitleArch,                 SessionID = currentCarts.SessionID             };     currentCarts.Add(cartItem);     App.DataContext.Cart.InsertOnSubmit(cartItem);     } protected void btnRecommend_Click(object sender, CommandEventArgs e) {     bool isRecommend = (e.CommandName == "Recommend");     var efdStats = App.DataContext.EfdRecommendationStats.FirstOrDefault(o => o.UserID == currentSubjectID && o.EfdDescriptionID == descriptionDetails.EfdDescriptionID);     var efdDescription = App.DataContext.EfdDescription.Single(o => o.EfdDescriptionID == descriptionDetails.EfdDescriptionID);     if (isRecommend)     {         efdDescription.RecommendationsCount = (efdDescription.RecommendationsCount ?? 0) + 1;         if (efdStats != null)             efdDescription.NotRecommendationsCount = (efdDescription.NotRecommendationsCount ?? 0) - 1;     }     else     {         efdDescription.NotRecommendationsCount = (efdDescription.NotRecommendationsCount ?? 0) + 1;         if (efdStats != null)             efdDescription.RecommendationsCount = (efdDescription.RecommendationsCount ?? 0) - 1;     }     var efdController = new EfdDescriptionController();     efdController.Update(efdDescription);     if (descriptionDetails.IsFirstLevel)     {         foreach (var efd in App.DataContext.EfdDescription.Where(o => o.FirstLevelDescriptionID == descriptionDetails.EfdDescriptionID).ToList())         {             if (isRecommend)             {                 efd.RecommendationsCount = (efd.RecommendationsCount ?? 0) + 1;                 if (efdStats != null)                     efd.NotRecommendationsCount = (efd.NotRecommendationsCount ?? 0) - 1;             }             else             {                 efd.NotRecommendationsCount = (efd.NotRecommendationsCount ?? 0) + 1;                 if (efdStats != null)                     efd.RecommendationsCount = (efd.RecommendationsCount ?? 0) - 1;             }             efdController.Update(efd);         }     }     if (efdStats == null)     {         efdStats = new EfdRecommendationStats();         App.DataContext.EfdRecommendationStats.InsertOnSubmit(efdStats);         efdStats.UserID = AppSPM.GetCurrentSubjectID();         efdStats.EfdDescriptionID = descriptionDetails.EfdDescriptionID;     }     efdStats.RecommendationDate = DateTime.Now;     efdStats.IsRecommendation = isRecommend;     App.DataContext.SubmitChanges();     Query.Redirect(); } private decimal GetPrices(List<EfdDescriptionInfo> efds) {     if (efds != null && efds.Any())         return efds.Sum(o => o.Price);     else         return 0; } class EfdDescriptionShortInfo {     public int EfdDescriptionID { get; set; }     public string Title { get; set; }     public string ShortTitle      {          get { return this.Title.Length > 40                 ? this.Title.Substring(0, 40) + "..."                 : this.Title;         }     }     public bool IsFree { get; set; }     public decimal Price { get; set; }     public Guid? CoverID { get; set; }     public string Url { get { return string.Format("/efd/{0}", this.EfdDescriptionID); } }     public string CoverUrl { get { return string.Format("/data.ashx?guid={0}", this.CoverID); } }     public string PriceView { get { return this.IsFree ? String.Empty : String.Format("{0:F2} руб", this.Price); } } } private List<EfdDescriptionShortInfo> getTopSales() {     if(descriptionDetails == null)         return new List<EfdDescriptionShortInfo>();     var tprsales = from tprsale in App.DataContext.SubjectClassificationSale                join sce in App.DataContext.SubjectClassificationElement on tprsale.TPRID equals sce.TPRID                where sce.EfdDescriptionID == descriptionDetails.EfdDescriptionID                select new              {                  EfdDescriptionID = tprsale.EfdDescriptionID,                 Count = tprsale.Count             };     var rubrucsales = from rubrucsale in App.DataContext.SubjectRubricSale                 join rubric in App.DataContext.EfdDescriptionSubjectRubric on rubrucsale.SubjectRubricID equals rubric.SubjectRubricID                   where rubric.EfdDescriptionID == descriptionDetails.EfdDescriptionID                   select new               {                  EfdDescriptionID = rubrucsale.EfdDescriptionID,                 Count = rubrucsale.Count              };     return (from sinfo in getShortInfos()             join sale in tprsales.Union(rubrucsales) on sinfo.EfdDescriptionID equals sale.EfdDescriptionID         orderby sale.Count descending         select sinfo)             .Take(6)             .ToList(); } class EfdDescriptionCookie {     public const string itemMask = "{0}-{1}";     public const string separator = ",";     public int EfdDescriptionID { get; set; }     public int Order { get; set; }     public bool Parse(string cookie)     {         var keys = cookie.Split('-');         if (keys.Length != 2)             return false;         EfdDescriptionID = keys[0].ToInt32(0);         return true;     }     public override string ToString()     {         return string.Format(itemMask, this.EfdDescriptionID, this.Order);     } } private List<EfdDescriptionShortInfo> getLastViews() {     if(!Request.Browser.Cookies || descriptionDetails == null)         return new List<EfdDescriptionShortInfo>();     HttpCookie cookie = Request.Cookies.Get("LastViews");     if(cookie == null)     {         cookie = new HttpCookie("LastViews");         cookie.Expires = DateTime.Now.AddDays(1);     }     int index = 0;     var efdDescriptions = new List<EfdDescriptionCookie>();     if (!string.IsNullOrEmpty(cookie.Value))     {         var lasts = Server.HtmlEncode(cookie.Value);         foreach(var last in lasts.Split(EfdDescriptionCookie.separator[0]))         {             var efdDescriptionCookie = new EfdDescriptionCookie();             if (!efdDescriptionCookie.Parse(last))                 continue;                  if (efdDescriptionCookie.EfdDescriptionID == descriptionDetails.EfdDescriptionID)                 continue;                  efdDescriptionCookie.Order = ++index;             efdDescriptions.Add(efdDescriptionCookie);         }     }     efdDescriptions.Add(new EfdDescriptionCookie() {              EfdDescriptionID = descriptionDetails.EfdDescriptionID,             Order = ++index         });         cookie.Value = string.Join(EfdDescriptionCookie.separator, efdDescriptions.Select(o => o.ToString()));     //cookie.Expires = DateTime.Now.AddDays(-1);     Response.Cookies.Add(cookie);             var shortInfos = getShortInfos().Where(sinfo => efdDescriptions.Select(o => o.EfdDescriptionID).Contains(sinfo.EfdDescriptionID))                     .ToList();     return (from shortInfo in shortInfos             join efdDescription in efdDescriptions on shortInfo.EfdDescriptionID equals efdDescription.EfdDescriptionID         orderby efdDescription.Order descending         select shortInfo).Take(6)                  .ToList(); } private IQueryable<EfdDescriptionShortInfo> getShortInfos() {     var efdDescriptionCovers = App.DataContext.EfdDescriptionCover                         .Where(ec => ec.SizeType == CoverSizeType.Middle)                         .Select(ec => new {                                 FolderID = ec.N_File.FolderID,                                 Guid = ec.N_File.Guid                             });     return  from ea in App.DataContext.V_EfdDescriptionAvailable             join ec in efdDescriptionCovers on ea.FolderCoverID equals ec.FolderID into ec_ from ec in ec_.DefaultIfEmpty()         where ea.EfdDescriptionID != descriptionDetails.EfdDescriptionID            && ea.FolderCoverID > 0         select new EfdDescriptionShortInfo() {                 EfdDescriptionID = ea.EfdDescriptionID,                 Title = ea.Title,                 IsFree = ea.IsFree,                 Price = ea.Price,                 CoverID = (Guid?)ec.Guid             }; } private string GetSubscribtionSessionID() {     if (!Request.IsAuthenticated)         return String.Empty;     var subscriptionUser = App.GetParticipant(ParticipantRole.SubscriptionAgentUser);     if (subscriptionUser != null)     {         currentUserIsSubscribtionUser = true;         var cookie = Request.Cookies.Get(Solution.Controls.CartSubscribtionUserCookie.CookieName);         if (cookie == null)         {             cookie = new HttpCookie(Solution.Controls.CartSubscribtionUserCookie.CookieName);             cookie.Expires = DateTime.Now.AddDays(30);             cookie.Value = Guid.NewGuid().ToString();             Response.Cookies.Add(cookie);         }         return cookie.Value ?? String.Empty;     }     else         return String.Empty;     } </script>