Beispiel #1
0
        public ActionResult Csv(Guid id, string format, bool? sortzip, bool? titles, bool? useMailFlags)
        {
            var ctl = new MailingController {UseTitles = titles ?? false, UseMailFlags = useMailFlags ?? false};

            var sort = "Name";
            if (sortzip ?? false)
                sort = "Zip";

            switch (format)
            {
                case "Individual":
                case "GroupAddress":
                    return new CsvResult(ctl.FetchIndividualList(sort, id));
                case "FamilyMembers":
                    return new CsvResult(ctl.FetchFamilyMembers(sort, id));
                case "Family":
                    return new CsvResult(ctl.FetchFamilyList(sort, id));
                case "ParentsOf":
                    return new CsvResult(ctl.FetchParentsOfList(sort, id));
                case "CouplesEither":
                    return new CsvResult(ctl.FetchCouplesEitherList(sort, id));
                case "CouplesBoth":
                    return new CsvResult(ctl.FetchCouplesBothList(sort, id));
            }
            return Content("no format");
        }
Beispiel #2
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            var document = new Document();
            document.SetPageSize(new Rectangle(72 * W, 72 * H));
            document.SetMargins(14f, 0f, 3.6f, 1f);
            var w = PdfWriter.GetInstance(document, Response.OutputStream);
            document.Open();
            dc = w.DirectContent;

            var ctl = new MailingController {UseTitles = titles, UseMailFlags = useMailFlags};

            IEnumerable<MailingController.MailingInfo> q = null;
            switch (format)
            {
                case "Individual":
                case "GroupAddress":
                    q = ctl.FetchIndividualList(sort, qid);
                    break;
                case "FamilyMembers":
                case "Family":
                    q = ctl.FetchFamilyList(sort, qid);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(sort, qid);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(sort, qid);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(sort, qid);
                    break;
            }
            AddLabel(document, "=========", $"{Util.UserName}\n{q.Count()},{DateTime.Now:g}", String.Empty);
            foreach (var m in q)
            {
                var label = m.LabelName;
                if (m.CoupleName.HasValue() && format.StartsWith("Couples"))
                    label = m.CoupleName;
                var address = "";
                if (m.MailingAddress.HasValue())
                    address = m.MailingAddress;
                else
                {
                    var sb = new StringBuilder(m.Address);
                    if (m.Address2.HasValue())
                        sb.AppendFormat("\n{0}", m.Address2);
                    sb.AppendFormat("\n{0}", m.CSZ);
                    address = sb.ToString();
                }
                AddLabel(document, label, address, Util.PickFirst(m.CellPhone.FmtFone("C "), m.HomePhone.FmtFone("H ")));
            }
            document.Close();
        }
Beispiel #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var context = HttpContext.Current;
            int? qid = context.Request.QueryString["id"].ToInt2();
            var labelNameFormat = context.Request.QueryString["format"];
            var ctl = new MailingController();
            var sortZip = context.Request.QueryString["sortZip"];
            var sort = "Name";
            var useTitles = context.Request.QueryString["titles"];
                ctl.UseTitles = useTitles == "true";
            if (sortZip == "true")
                sort = "Zip";
            IEnumerable<MailingController.MailingInfo> q = null;
            switch (labelNameFormat)
            {
                case "Individual":
                case "GroupAddress":
                    q = ctl.FetchIndividualList(sort, qid.Value);
                    break;
                case "FamilyMembers":
                    q = ctl.FetchFamilyMembers(sort, qid.Value);
                    break;
                case "Family":
                    q = ctl.FetchFamilyList(sort, qid.Value);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(sort, qid.Value);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(sort, qid.Value);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(sort, qid.Value);
                    break;
            }
            var r = context.Response;
            if (q == null)
            {
                r.Write("no format");
                return;
            }

            r.Clear();
            r.ContentType = "text/plain";
            r.AddHeader("Content-Disposition", "attachment;filename=CMSPeople.csv");
            r.Charset = "";
            if (!qid.HasValue)
            {
                r.Write("no queryid");
                r.Flush();
                r.End();
            }
            foreach (var mi in q)
                r.Write(string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",{5},{6}\r\n",
                    mi.LabelName, mi.Address, mi.Address2, mi.City, mi.State, mi.Zip.FmtZip(), mi.PeopleId));
        }
Beispiel #4
0
        public override void ExecuteResult(ControllerContext context)
        {
            var Response = context.HttpContext.Response;
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            var document = new Document();
            document.SetPageSize(new Rectangle(72 * W, 72 * H));
            document.SetMargins(14f, 0f, 3.6f, 1f);
            var w = PdfWriter.GetInstance(document, Response.OutputStream);
            document.Open();
            dc = w.DirectContent;

            var ctl = new MailingController();
            ctl.UseTitles = titles;

            IEnumerable<MailingController.MailingInfo> q = null;
            switch (format)
            {
                case "Individual":
                case "GroupAddress":
                    q = ctl.FetchIndividualList(sort, qid);
                    break;
                case "FamilyMembers":
                case "Family":
                    q = ctl.FetchFamilyList(sort, qid);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(sort, qid);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(sort, qid);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(sort, qid);
                    break;
            }
            AddLabel(document, "=========", Util.UserName, "{0} labels printed".Fmt(q.Count()), "{0:g}".Fmt(DateTime.Now), String.Empty);
            foreach (var m in q)
                AddLabel(document, m.LabelName, m.Address, m.Address2, m.CityStateZip, Util.PickFirst(m.CellPhone.FmtFone("C "), m.HomePhone.FmtFone("H ")));

            document.Close();
        }
Beispiel #5
0
        public override void ExecuteResult(ControllerContext context)
        {
            var ctl = new MailingController {
                UseTitles = Titles ?? false, UseMailFlags = UseMailFlags ?? false
            };
            var response = context.HttpContext.Response;
            IEnumerable <MailingController.MailingInfo> q = null;

            switch (Format)
            {
            case "Individual":
                q = ctl.FetchIndividualList(Sort, id);
                break;

            case "GroupAddress":
                q = ctl.GroupByAddress(Sort, id);
                break;

            case "Family":
            case "FamilyMembers":
                q = ctl.FetchFamilyList(Sort, id);
                break;

            case "ParentsOf":
                q = ctl.FetchParentsOfList(Sort, id);
                break;

            case "CouplesEither":
                q = ctl.FetchCouplesEitherList(Sort, id);
                break;

            case "CouplesBoth":
                q = ctl.FetchCouplesBothList(Sort, id);
                break;

            default:
                response.Write("unknown format");
                return;
            }

            var  bytes    = AveryLabelTemplate() ?? Resource1.DocxAveryLabel;
            var  ms       = new MemoryStream(bytes);
            var  docx     = DocX.Load(ms);
            var  row      = 0;
            var  col      = 0;
            DocX finaldoc = null;
            DocX currpage = null;

            foreach (var p in q)
            {
                if (currpage == null || (row == 0 && col == 0))
                {
                    currpage = docx.Copy();
                }

                if (Skip > 0)
                {
                    row = Skip / 3;
                    col = Skip % 3;
                    if (col > 0)
                    {
                        col *= 2;
                    }
                    Skip = 0;
                }
                var cell = currpage.Tables[0].Rows[row].Cells[col];
                var pg   = cell.Paragraphs[0];

                if (Format == "GroupAddress")
                {
                    pg.InsertText(p.LabelName + " " + p.LastName);
                }
                else if ((Format == "CouplesEither" || Format == "CouplesBoth") && p.CoupleName.HasValue())
                {
                    pg.InsertText(p.CoupleName);
                }
                else
                {
                    pg.InsertText(p.LabelName);
                }

                if (p.MailingAddress.HasValue())
                {
                    pg.InsertText($"\n{p.MailingAddress.Trim()}");
                }
                else
                {
                    pg.InsertText($"\n{p.Address}");
                    if (p.Address2.HasValue())
                    {
                        pg.InsertText($"\n{p.Address2}");
                    }
                    pg.InsertText($"\n{p.CSZ}");
                }
                if (UsePhone == true)
                {
                    var phone = Util.PickFirst(p.CellPhone.FmtFone("C "), p.HomePhone.FmtFone("H "));
                    pg.InsertText($"\n{phone}");
                }

                col += 2;
                if (col != 6)
                {
                    continue;
                }
                col = 0;
                row++;
                if (row != 10)
                {
                    continue;
                }
                row = 0;
                if (finaldoc == null)
                {
                    finaldoc = currpage;
                }
                else
                {
                    finaldoc.InsertDocument(currpage);
                }
                currpage = null;
            }
            if (finaldoc == null && currpage == null)
            {
                response.Write("no data found");
                return;
            }
            if (finaldoc == null)
            {
                finaldoc = currpage;
            }
            else if (currpage != null)
            {
                finaldoc.InsertDocument(currpage);
            }

            response.Clear();
            response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            response.AddHeader("content-disposition", $"attachment;filename=AveryLabels-{DateTime.Now.ToSortableDateTime()}.docx");

            ms = new MemoryStream();
            finaldoc.SaveAs(ms);
            ms.WriteTo(response.OutputStream);
            response.End();
        }
Beispiel #6
0
        public override void ExecuteResult(ControllerContext context)
        {
            var ctl = new MailingController { UseTitles = titles ?? false, UseMailFlags = useMailFlags ?? false };
            var Response = context.HttpContext.Response;

            IEnumerable<MailingController.MailingInfo> q = null;
            switch (format)
            {
                case "Individual":
                    q = ctl.FetchIndividualList(sort, id);
                    break;
                case "GroupAddress":
                    q = ctl.GroupByAddress(id);
                    break;
                case "Family":
                case "FamilyMembers":
                    q = ctl.FetchFamilyList(sort, id);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(sort, id);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(sort, id);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(sort, id);
                    break;
                default:
                    Response.Write("unknown format");
                    return;
            }
            if (!q.Any())
            {
                Response.Write("no data found");
                return;
            }
            Response.ContentType = "application/pdf";
            Response.AddHeader("content-disposition", "filename=foo.pdf");

            var document = new Document(PageSize.LETTER);
            document.SetMargins(50f, 36f, 32f, 36f);
            var w = PdfWriter.GetInstance(document, Response.OutputStream);
            document.Open();
            dc = w.DirectContent;

            var cols = new float[] { W, W, W - 25f };
            var t = new PdfPTable(cols);
            t.SetTotalWidth(cols);
            t.HorizontalAlignment = Element.ALIGN_CENTER;
            t.LockedWidth = true;
            t.DefaultCell.Border = PdfPCell.NO_BORDER;
            t.DefaultCell.FixedHeight = H;
            t.DefaultCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE;
            t.DefaultCell.PaddingLeft = 8f;
            t.DefaultCell.PaddingRight = 8f;
            t.DefaultCell.SetLeading(2.0f, 1f);

            if (skip > 0)
            {
                var blankCell = new PdfPCell(t.DefaultCell);

                for (int iX = 0; iX < skip; iX++)
                {
                    t.AddCell(blankCell);
                }
            }

            foreach (var m in q)
            {
                var c = new PdfPCell(t.DefaultCell);
                var ph = new Paragraph();
                if (format == "GroupAddress")
                    ph.AddLine(m.LabelName + " " + m.LastName, font);
                else
                    ph.AddLine(m.LabelName, font);
                ph.AddLine(m.Address, font);
                ph.AddLine(m.Address2, font);
                ph.AddLine(m.CityStateZip, font);
                c.AddElement(ph);
                if (usephone)
                {
                    var phone = Util.PickFirst(m.CellPhone.FmtFone("C "), m.HomePhone.FmtFone("H "));
                    var p = new Paragraph();
                    c.PaddingRight = 7f;
                    p.Alignment = Element.ALIGN_RIGHT;
                    p.Add(new Chunk(phone, smfont));
                    p.ExtraParagraphSpace = 0f;
                    c.AddElement(p);
                }
                t.AddCell(c);
            }
            t.CompleteRow();
            document.Add(t);

            document.Close();
        }
        public override void ExecuteResult(ControllerContext context)
        {
            var ctl = new MailingController { UseTitles = titles ?? false, UseMailFlags = useMailFlags ?? false };
            var Response = context.HttpContext.Response;

            IEnumerable<MailingController.MailingInfo> q = null;
            switch (format)
            {
                case "Individual":
                    q = ctl.FetchIndividualList(sort, id);
                    break;
                case "GroupAddress":
                    q = ctl.GroupByAddress(sort, id);
                    break;
                case "Family":
                case "FamilyMembers":
                    q = ctl.FetchFamilyList(sort, id);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(sort, id);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(sort, id);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(sort, id);
                    break;
                default:
                    Response.Write("unknown format");
                    return;
            }
            if (!q.Any())
            {
                Response.Write("no data found");
                return;
            }
            using (var ms = new MemoryStream())
            {
                var dd = DocX.Create("ttt.docx");
                dd.MarginLeft = 30;
                dd.MarginRight = 24;
                dd.MarginTop = 48;
                dd.MarginBottom = 30;
                dd.PageHeight = 1056;
                dd.PageWidth = 816;
                var col = 0;
                var row = 0;
                Table tt = null;
                foreach (var p in q)
                {
                    if (tt == null || col == 0 && row == 0)
                    {
                        tt = dd.InsertTable(10, 5);
                        foreach (var rr in tt.Rows)
                            for (var i = 0; i < 5; i++)
                            {
                                rr.Cells[i].VerticalAlignment = VerticalAlignment.Center;
                                rr.Height = 96.0;
                                rr.Cells[i].Width = i % 2 == 0
                                    ? 252.4667
                                    : 11.4;
                                if (i % 2 == 0)
                                    rr.Cells[i].MarginLeft = 30;
                            }
                    }
                    if (skip > 0)
                    {
                        row = skip / 3;
                        col = skip % 3;
                        if (col > 0)
                            col++;
                        if (col > 2)
                            col++;
                    }
                    var c = tt.Rows[row].Cells[col];

                    if (format == "GroupAddress")
                        c.Paragraphs[0].InsertText(p.LabelName + " " + p.LastName);
                    else if ((format == "CouplesEither" || format == "CouplesBoth") && p.CoupleName.HasValue())
                        c.Paragraphs[0].InsertText(p.CoupleName);
                    else
                        c.Paragraphs[0].InsertText(p.LabelName);


                    if (p.MailingAddress.HasValue())
                        c.InsertParagraph(p.MailingAddress.Trim());
                    else
                    {
                        c.InsertParagraph(p.Address);
                        if (p.Address2.HasValue())
                            c.InsertParagraph(p.Address2);
                        c.InsertParagraph(p.CSZ);
                    }

                    col += 2;
                    if (col == 6)
                    {
                        row++;
                        col = 0;
                        if (row == 10)
                            row = 0;
                    }
                }
                dd.SaveAs(ms);
                Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
                Response.AddHeader("content-disposition", "filename=avery-labels.docx");
                Response.AddHeader("content-length", ms.Length.ToString());
                Response.BinaryWrite(ms.ToArray());
                Response.End();
            }
        }
Beispiel #8
0
        public override void ExecuteResult(ControllerContext context)
        {
            var ctl = new MailingController { UseTitles = Titles ?? false, UseMailFlags = UseMailFlags ?? false };
            var response = context.HttpContext.Response;
            IEnumerable<MailingController.MailingInfo> q = null;
            switch (Format)
            {
                case "Individual":
                    q = ctl.FetchIndividualList(Sort, id);
                    break;
                case "GroupAddress":
                    q = ctl.GroupByAddress(Sort, id);
                    break;
                case "Family":
                case "FamilyMembers":
                    q = ctl.FetchFamilyList(Sort, id);
                    break;
                case "ParentsOf":
                    q = ctl.FetchParentsOfList(Sort, id);
                    break;
                case "CouplesEither":
                    q = ctl.FetchCouplesEitherList(Sort, id);
                    break;
                case "CouplesBoth":
                    q = ctl.FetchCouplesBothList(Sort, id);
                    break;
                default:
                    response.Write("unknown format");
                    return;
            }

            var bytes = AveryLabelTemplate() ?? Resource1.DocxAveryLabel;
            var ms = new MemoryStream(bytes);
            var docx = DocX.Load(ms);
            var row = 0;
            var col = 0;
            DocX finaldoc = null;
            DocX currpage = null;
            foreach (var p in q)
            {
                if(currpage == null || (row == 0 && col == 0))
                    currpage = docx.Copy();

                if (Skip > 0)
                {
                    row = Skip/3;
                    col = Skip%3;
                    if (col > 0)
                        col *= 2;
                    Skip = 0;
                }
                var cell = currpage.Tables[0].Rows[row].Cells[col];
                var pg = cell.Paragraphs[0];

                if (Format == "GroupAddress")
                    pg.InsertText(p.LabelName + " " + p.LastName);
                else if ((Format == "CouplesEither" || Format == "CouplesBoth") && p.CoupleName.HasValue())
                    pg.InsertText(p.CoupleName);
                else
                    pg.InsertText(p.LabelName);

                if (p.MailingAddress.HasValue())
                    pg.InsertText($"\n{p.MailingAddress.Trim()}");
                else
                {
                    pg.InsertText($"\n{p.Address}");
                    if (p.Address2.HasValue())
                        pg.InsertText($"\n{p.Address2}");
                    pg.InsertText($"\n{p.CSZ}");
                }

                col+=2;
                if (col != 6)
                    continue;
                col = 0;
                row++;
                if (row != 10)
                    continue;
                row = 0;
                if (finaldoc == null)
                    finaldoc = currpage;
                else
                    finaldoc.InsertDocument(currpage);
                currpage = null;
            }
            if(finaldoc == null && currpage == null)
            {
                response.Write("no data found");
                return;
            }
            if (finaldoc == null)
                finaldoc = currpage;
            else if(currpage != null)
                finaldoc.InsertDocument(currpage);

            context.HttpContext.Response.Clear();
            context.HttpContext.Response.ContentType =
                "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
            context.HttpContext.Response.AddHeader("Content-Disposition",
                $"attachment;filename=AveryLabels-{DateTime.Now.ToSortableDateTime()}.docx");
            finaldoc.SaveAs(context.HttpContext.Response.OutputStream);
        }