angular.module('lecta.admin.factories').factory 'PrintCodesService', [
'$filter'
($filter) ->
formatCertificate = (certificate) ->
"""
СЕРТИФИКАТ
Код активации: #{certificate.code}
Активировать до: #{moment(certificate.expires_at).format('DD.MM.YYYY')} г. (включительно)
Чтобы воспользоваться сертификатом:
1. Зарегистрируйтесь на сайте www.lecta.ru или в приложении LECTA.
2. Нажмите «Активировать код» и введите код активации.
-----------------------------------------------------
"""
formatCertificateAsHtml = (certificate) ->
"""
<div>
<h3>Сертификат</h3>
<p>Код активации: <strong>#{certificate.code}</strong></p>
<p>Активировать до: <b>#{moment(certificate.expires_at).format('DD.MM.YYYY')}</b> г. (включительно)</p>
<p class="bot">Чтобы воспользоваться сертификатом:</p>
<p>1. Зарегистрируйтесь на сайте www.lecta.ru или в приложении LECTA.</p>
<p>2. Нажмите «Активировать код» и введите код активации.</p>
</div>
"""
headTemplate = ->
"""
<style type="text/css">
body { font-family: Arial; font-size: 8pt; }
div { border: 1px dashed #b4b3b4; display: inline-block; padding: 14pt; box-sizing: border-box;}
p { line-height: 0.6; }
p.bot { border-top: 1px solid #b4b3b4; margin-top: 15pt; padding-top: 15pt; }
h3 { font-size: 15pt; font-weight: 400; margin: 0; }
strong { font-size: 12pt; }
</style>
<title>Сертификаты LECTA</title>
"""
pageTemplate = (body) ->
"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>LECTA</title>
</head>
<body>#{body}</body>
</html>
"""
certificatesAsHtml = (certificates) ->
certificates.map((certificate) -> formatCertificateAsHtml(certificate)).join('\n')
{
view: (certificates) ->
win = open('LECTA', '_blank')
win.document.write pageTemplate(certificatesAsHtml(certificates))
win.focus()
print: (certificates, no_print) ->
$iframe = $('.printpage')
if $iframe.length == 0
$('<iframe>').hide().addClass('printpage').appendTo 'body'
$iframe = $('.printpage')
$iframe.ready -> $iframe.contents().find('head').append headTemplate()
else
$iframe.contents().find('body').empty()
$iframe.ready ->
$iframe.contents().find('body').append certificatesAsHtml(certificates)
$iframe.get(0).contentWindow.print()
download: (certificates) ->
text = certificates.map((certificate) -> formatCertificate(certificate)).join('')
day = moment(certificates[0].expires_at).format('DD')
month = moment(certificates[0].expires_at).format('MM')
download(text, "certificates_#{certificates.length}_#{day}#{month}.txt", 'text/plain')
}
]