protected void buttonIssuePDF_Click(object sender, EventArgs e)
        {
            VoucherBatch batch;

            if (Request.QueryString["batchid"] != null)
            {
                batch = Module.GetObject <VoucherBatch>(Convert.ToInt32(Request.QueryString["batchid"]));
            }
            else
            {
                return;
            }

            var doc = new Document(Server.MapPath("/Userfiles/VoucherTemplates/" + ddlTemplates.SelectedValue));

            //var awPrintDoc = new AsposeWordsPrintDocument(doc);

            #region -- Generate docs --

            var table = new DataTable("Voucher");
            table.Columns.Add("VoucherName");
            table.Columns.Add("Agency");
            table.Columns.Add("ApplyFor");
            table.Columns.Add("Cruise");
            table.Columns.Add("Trip");
            table.Columns.Add("Value");
            table.Columns.Add("ValidUntil");
            table.Columns.Add("IssueDate");
            table.Columns.Add("Code");

            //double total = 0;
            for (int ii = 1; ii <= batch.Quantity; ii++)
            {
                DataRow row = table.NewRow();
                row["VoucherName"] = batch.Name;
                if (batch.Agency != null)
                {
                    row["Agency"] = batch.Agency.Name;
                }

                if (batch.NumberOfPerson == 1)
                {
                    row["ApplyFor"] = "Single person";
                }
                else
                {
                    row["ApplyFor"] = "02 PERSONS, 01 sharing cabin";
                }
                row["Cruise"]     = batch.Cruise.Name;
                row["Trip"]       = batch.Trip.Name;
                row["Value"]      = batch.Value;
                row["ValidUntil"] = batch.ValidUntil.ToString("dd/MM/yyyy");
                if (batch.IssueDate.HasValue)
                {
                    row["IssueDate"] = batch.IssueDate.Value.ToString("dd/MM/yyyy");
                }
                row["Code"] = VoucherCodeEncryption.Encrypt(Convert.ToUInt32(batch.Id * 1000 + ii));
                table.Rows.Add(row);
            }

            doc.MailMerge.Execute(table);

            Response.Clear();
            Response.Buffer      = true;
            Response.ContentType = "application/pdf";
            //Response.ContentType = "application/msword";
            Response.AppendHeader("content-disposition",
                                  "attachment; filename=" + string.Format("{0}.pdf", "voucher" + batch.Id));
            //                  "attachment; filename=" + string.Format("{0}.doc", "voucher" + batch.Id));

            var m = new MemoryStream();

            doc.Save(m, SaveFormat.Doc);

            Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
            Response.OutputStream.Flush();
            Response.OutputStream.Close();

            m.Close();
            Response.End();

            #endregion

            if (!batch.IssueDate.HasValue)
            {
                batch.IssueDate = DateTime.Today;
                batch.Issued    = true;
                Module.SaveOrUpdate(batch, UserIdentity);
            }
        }
        protected void rptVouchers_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            var value = (int)e.Item.DataItem;

            ValueBinder.BindLiteral(e.Item, "litCode", VoucherCodeEncryption.Encrypt(Convert.ToUInt32(value)));
        }