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"> </td>
<td id="BaloonTooltipContent" valign="top">
<div style="text-align:right">Для выхода нажмите Esc или <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"> </td>
</tr>
<tr>
<td class="corner bottomLeft"> </td>
<td class="bottom"> </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>
/ <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>
<% 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> ЭПД находится на рассмотрении в библиотеке!</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> На рассмотрении!</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} Мб)", 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>