示例#1
0
        public void DonorDetailsTest(string notitles, string uselabelname)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                db.SetSetting("NoTitlesOnStatements", notitles);
                db.SetSetting("UseLabelNameForDonorDetails", uselabelname);

                var      bundleList   = CreateTestContributionSet(db, Util.Now.Date);
                var      exportPeople = new ExportPeople(db);
                DateTime startDate    = Util.Now.AddDays(-180);
                DateTime endDate      = Util.Now.AddDays(180);

                DataTable tableResult        = exportPeople.DonorDetails(startDate, endDate, 0, 0, false, null, true, null, null);
                var       dbContributionsQry = db.Contributions
                                               .Where(x => !ContributionTypeCode.ReturnedReversedTypes.Contains(x.ContributionTypeId) && !ContributionTypeCode.Pledge.Equals(x.ContributionTypeId))
                                               .Where(x => x.ContributionDate >= startDate && x.ContributionDate < endDate)
                                               .Select(x => x);

                var tableResultTotals  = tableResult.AsEnumerable().Sum(row => row.Field <decimal>("Amount"));
                var totalContributions = dbContributionsQry.Sum(x => x.ContributionAmount) ?? 0;
                totalContributions.ToDouble().ShouldBe(tableResultTotals.ToDouble());

                foreach (var b in bundleList)
                {
                    MockContributions.DeleteAllFromBundle(db, b);
                }
                db.DeleteSetting("NoTitlesOnStatements");
                db.DeleteSetting("UseLabelNameForDonorDetails");
            }
        }
示例#2
0
        public void ExportDonorFundTotals_Should_Bring_Pledges(int fundid, int campusid, bool?nontaxdeductible,
                                                               bool includeUnclosed, int?tagid, string fundids, int?online)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                var bundleList    = CreateTestContributionSet(db, Util.Now.Date);
                var _exportPeople = new ExportPeople(db);

                DateTime  exportStartDt = Util.Now.AddDays(-180);
                DateTime  exportEndDt   = Util.Now.AddDays(180);
                DataTable tableResult   = _exportPeople.ExcelDonorFundTotals(exportStartDt, exportEndDt, fundid, campusid, true, nontaxdeductible, includeUnclosed, tagid, fundids, (int)online);

                try
                {
                    var q = from c in tableResult.Select() where c.ItemArray[3].ToInt() > 0 select c;
                    if (q.IsNotNull())
                    {
                        var amountpledged = Double.Parse(q.Select(x => x.ItemArray[3]).SingleOrDefault().ToString());
                        //The pledged amount correspond to the pledge amount created in CreateTestContributionSet()
                        amountpledged.ShouldBe(1000.00);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    foreach (var b in bundleList)
                    {
                        MockContributions.DeleteAllFromBundle(db, b);
                    }
                }
            }
        }
示例#3
0
        public ActionResult Excel(Guid id, string format, bool?titles, bool?useMailFlags)
        {
            var ctl = new MailingController {
                UseTitles = titles ?? false, UseMailFlags = useMailFlags ?? false
            };

            switch (format)
            {
            case "Individual":
            case "GroupAddress":
                return(ExportPeople.FetchExcelList(id, maxExcelRows, useMailFlags ?? false).ToExcel());

            case "Library":
                return(ExportPeople.FetchExcelLibraryList(id));

            case "AllFamily":
                return(ExportPeople.FetchExcelListFamily(id));

            case "Family":
                return(ctl.FetchExcelFamily(id, maxExcelRows));

            case "ParentsOf":
                return(ctl.FetchExcelParents(id, maxExcelRows));

            case "CouplesEither":
                return(ctl.FetchExcelCouplesEither(id, maxExcelRows));

            case "CouplesBoth":
                return(ctl.FetchExcelCouplesBoth(id, maxExcelRows));

            case "Involvement":
                return(new ExcelResult(ExportInvolvements.InvolvementList(id), "Involvements.xls"));

            case "Children":
                return(ExportInvolvements.ChildrenList(id, maxExcelRows));

            case "Church":
                return(ExportInvolvements.ChurchList(id, maxExcelRows));

            case "Attend":
                return(ExportInvolvements.AttendList(id, maxExcelRows));

            case "Promotion":
                return(ExportInvolvements.PromoList(id, maxExcelRows));

            case "IndividualPicture":
                return(ExcelExportModel.Result(id));

            case "FamilyMembers":
                return(ExportPeople.FetchExcelListFamilyMembers(id));

            case "OrgMembers":
                return(OrgsMembersExcelModel.Export(Util2.CurrentOrgId ?? 0));

            case "Groups":
                return(ExportInvolvements.OrgMemberListGroups());
            }
            return(Content("no format"));
        }
示例#4
0
        public void ExcelDonorTotals_Should_Not_Bring_Reversed_or_Returned_contributions(int campusid, bool pledges, bool?nontaxdeductible, bool includeUnclosed, int?tagid, string fundids)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                var bundleList    = CreateTestContributionSet(db, Util.Now.Date);
                var _exportPeople = new ExportPeople(db);
                int?online        = null;

                DateTime  exportStartDt      = Util.Now.AddDays(-180);
                DateTime  exportEndDt        = Util.Now.AddDays(180);
                DataTable tableResult        = _exportPeople.ExcelDonorTotals(exportStartDt, exportEndDt, campusid, pledges, nontaxdeductible, online, includeUnclosed, tagid, fundids, false);
                var       dbContributionsQry = db.Contributions
                                               .Where(x => !ContributionTypeCode.ReturnedReversedTypes.Contains(x.ContributionTypeId) && !ContributionTypeCode.Pledge.Equals(x.ContributionTypeId))
                                               .Where(x => ContributionStatusCode.Recorded.Equals(x.ContributionStatusId))
                                               .Where(x => x.ContributionDate >= exportStartDt && x.ContributionDate < exportEndDt)
                                               .Select(x => x);

                dbContributionsQry = nontaxdeductible.HasValue
                    ? (nontaxdeductible is true)
                        ? dbContributionsQry = dbContributionsQry.Where(x => ContributionTypeCode.NonTaxDed.Equals(x.ContributionTypeId)).Select(x => x)
                        : dbContributionsQry = dbContributionsQry.Where(x => !ContributionTypeCode.NonTaxDed.Equals(x.ContributionTypeId)).Select(x => x)
                    : dbContributionsQry;

                if (includeUnclosed is false)
                {
                    dbContributionsQry = from c in dbContributionsQry
                                         join bd in db.BundleDetails on c.ContributionId equals bd.ContributionId
                                         join bh in db.BundleHeaders on bd.BundleHeaderId equals bh.BundleHeaderId
                                         where bh.BundleStatusId == 0
                                         select c;
                }

                var tableResultTotals  = tableResult.AsEnumerable().Sum(row => row.Field <decimal>("Amount"));
                var totalContributions = dbContributionsQry.Sum(x => x.ContributionAmount) ?? 0;

                try
                {
                    totalContributions.ToDouble().ShouldBe(tableResultTotals.ToDouble());
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    foreach (var b in bundleList)
                    {
                        MockContributions.DeleteAllFromBundle(db, b);
                    }
                }
            }
        }
示例#5
0
        public void DonorDetails_Should_Not_Bring_Reversed_or_Returned_contributions(
            int fundid, int campusid, bool pledges, bool?nontaxdeductible, bool includeUnclosed, int?tagid, string fundids)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                var bundleList = CreateTestContributionSet(db, Util.Now.Date);

                var       _exportPeople = new ExportPeople();
                DateTime  exportStartDt = new DateTime(Util.Now.Date.Year, 1, 1);
                DateTime  exportEndDt   = new DateTime(Util.Now.Date.Year, 12, 31);
                DataTable tableResult   = _exportPeople.DonorDetails(exportStartDt, exportEndDt, fundid, campusid, pledges, nontaxdeductible, includeUnclosed, tagid, fundids);

                var dbContributionsQry = db.Contributions
                                         .Where(x => !ContributionTypeCode.ReturnedReversedTypes.Contains(x.ContributionTypeId) && !ContributionTypeCode.Pledge.Equals(x.ContributionTypeId))
                                         .Where(x => ContributionStatusCode.Recorded.Equals(x.ContributionStatusId))
                                         .Where(x => x.ContributionDate >= exportStartDt && x.ContributionDate < exportEndDt)
                                         .Select(x => x);

                dbContributionsQry = nontaxdeductible.HasValue
                    ? (nontaxdeductible is true)
                        ? dbContributionsQry = dbContributionsQry.Where(x => ContributionTypeCode.NonTaxDed.Equals(x.ContributionTypeId)).Select(x => x)
                        : dbContributionsQry = dbContributionsQry.Where(x => !ContributionTypeCode.NonTaxDed.Equals(x.ContributionTypeId)).Select(x => x)
                    : dbContributionsQry;

                if (includeUnclosed is false)
                {
                    dbContributionsQry = from c in dbContributionsQry
                                         join bd in db.BundleDetails on c.ContributionId equals bd.ContributionId
                                         join bh in db.BundleHeaders on bd.BundleHeaderId equals bh.BundleHeaderId
                                         where bh.BundleStatusId == 0
                                         select c;
                }

                var rc = tableResult.AsEnumerable().Where(row => ContributionTypeCode.ReturnedReversedTypes.Contains(row.Field <int>("ContributionTypeId")));
                var tableResultTotals  = tableResult.AsEnumerable().Sum(row => row.Field <decimal>("Amount"));
                var totalContributions = dbContributionsQry.Sum(x => x.ContributionAmount) ?? 0;

                totalContributions.ToDouble().ShouldBe(tableResultTotals.ToDouble());
                rc.Count().ShouldBeLessThan(1);

                foreach (var b in bundleList)
                {
                    MockContributions.DeleteAllFromBundle(db, b);
                }
            }
        }
示例#6
0
        public void DonorDetails_Should_Not_Bring_Reversed_or_Returned_contributions(
            int campusid, bool pledges, bool?nontaxdeductible, bool includeUnclosed, int?tagid, string fundids)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                var      bundleList    = CreateTestContributionSet(db, Util.Now.Date);
                var      _exportPeople = new ExportPeople(db);
                DateTime exportStartDt = Util.Now.AddDays(-180);
                DateTime exportEndDt   = Util.Now.AddDays(180);
                var      tableResult   = _exportPeople.GetValidContributionDetails(exportStartDt, exportEndDt, campusid, pledges, nontaxdeductible, includeUnclosed, tagid, fundids);
                var      rc            = tableResult.Where(row => ContributionTypeCode.ReturnedReversedTypes.Contains(row.ContributionTypeId));
                rc.Count().ShouldBe(0);

                foreach (var b in bundleList)
                {
                    MockContributions.DeleteAllFromBundle(db, b);
                }
            }
        }
示例#7
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var labelNameFormat = Request.QueryString["format"];
            int?qid             = Request.QueryString["id"].ToInt2();
            var r = Response;

            r.Clear();
            var useweb = Request.QueryString["web"];

            string header =
                @"<html xmlns:x=""urn:schemas-microsoft-com:office:excel"">
<head>
	<meta http-equiv=Content-Type content=""text/html; charset=utf-8""> 
    <style>
    <!--table
    br {mso-data-placement:same-cell;}
    tr {vertical-align:top;}
    td.Text {mso-number-format:\@}
    -->
    </style>
</head>
<body>";

            r.Charset = "";

            if (!qid.HasValue && labelNameFormat != "Groups")
            {
                r.Write("no queryid");
                r.Flush();
                r.End();
            }
            if (useweb != "true")
            {
                r.ContentType = "application/vnd.ms-excel";
                r.AddHeader("Content-Disposition", "attachment;filename=CMSPeople.xls");
            }
            r.Write(header);
            var ctl       = new MailingController();
            var useTitles = Request.QueryString["titles"];

            ctl.UseTitles = useTitles == "true";
            var dg = new DataGrid();

            dg.EnableViewState = false;
            switch (labelNameFormat)
            {
            case "Individual":
                dg.DataSource = ExportPeople.FetchExcelList(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "IndividualPicture":
                GridView1.EnableViewState = false;
                GridView1.AllowPaging     = false;
                GridView1.DataSource      = ExportPeople.FetchExcelListPics(qid.Value, maxExcelRows);
                GridView1.DataBind();
                GridView1.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Library":
                dg.DataSource = ExportPeople.FetchExcelLibraryList(qid.Value);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Family":
                dg.DataSource = ctl.FetchExcelFamily(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "FamilyMembers":
                FamilyMembers.EnableViewState = false;
                FamilyMembers.AllowPaging     = false;
                FamilyMembers.DataSource      = ExportPeople.FetchExcelListFamilyMembers(qid.Value);
                FamilyMembers.DataBind();
                FamilyMembers.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "AllFamily":
                dg.DataSource = ExportPeople.FetchExcelListFamily(qid.Value);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "ParentsOf":
                dg.DataSource = ctl.FetchExcelParents(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "CouplesEither":
                dg.DataSource = ctl.FetchExcelCouplesEither(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "CouplesBoth":
                dg.DataSource = ctl.FetchExcelCouplesBoth(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Involvement":
                dg.DataSource = ExportInvolvements.InvolvementList(qid.Value);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Children":
                dg.DataSource = ExportInvolvements.ChildrenList(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Church":
                dg.DataSource = ExportInvolvements.ChurchList(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Attend":
                dg.DataSource = ExportInvolvements.AttendList(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Organization":
                dg.DataSource = ExportInvolvements.OrgMemberList(qid.Value);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Groups":
                dg.DataSource = ExportInvolvements.OrgMemberListGroups();
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;

            case "Promotion":
                dg.DataSource = ExportInvolvements.PromoList(qid.Value, maxExcelRows);
                dg.DataBind();
                dg.RenderControl(new HtmlTextWriter(r.Output));
                break;
            }
            r.Write("</body></HTML>");
            r.Flush();
            r.End();
        }
示例#8
0
        public void ExcelDonorFundTotals_Should_Not_Bring_Reversed_or_Returned_contributions(int fundid, int?campusid, bool pledges, bool?nontaxdeductible, bool includeUnclosed, int?tagid, string fundids, int online)
        {
            using (var db = CMSDataContext.Create(Util.Host))
            {
                var      bundleList    = CreateTestContributionSet(db, Util.Now.Date);
                var      _exportPeople = new ExportPeople(db);
                DateTime exportStartDt = Util.Now.AddDays(-180);
                DateTime exportEndDt   = Util.Now.AddDays(180);

                DataTable tableResult = _exportPeople.ExcelDonorFundTotals(exportStartDt, exportEndDt, fundid, (int)campusid, pledges, nontaxdeductible, includeUnclosed, tagid, fundids, online);

                var nontax = nontaxdeductible is null ? "Both" : nontaxdeductible == true ? "NonTaxDed" : "";

                IQueryable <Contribution> contributions;

                if (!nontax.HasValue())
                {
                    nontax = "TaxDed";
                }

                contributions = db.Contributions;

                if (!includeUnclosed)
                {
                    contributions = from c in contributions
                                    where c.BundleDetails.Any(dd => dd.BundleHeader.BundleStatusId == BundleStatusCode.Closed)
                                    select c;
                }

                switch (nontax)
                {
                case "TaxDed":
                    contributions = pledges
                                        ?
                                    (from c in contributions
                                     where !ContributionTypeCode.NonTaxDed.Equals(c.ContributionTypeId)
                                     select c)
                                        :
                                    (from c in contributions
                                     where !ContributionTypeCode.NonTaxDed.Equals(c.ContributionTypeId)
                                     where !ContributionTypeCode.Pledge.Equals(c.ContributionTypeId)
                                     select c);
                    break;

                case "NonTaxDed":
                    contributions = pledges
                                        ?
                                    (from c in contributions
                                     where ContributionTypeCode.NonTaxDed.Equals(c.ContributionTypeId)
                                     select c).Concat(from c in contributions where c.ContributionTypeId == ContributionTypeCode.Pledge select c)
                                        :
                                    (from c in contributions
                                     where ContributionTypeCode.NonTaxDed.Equals(c.ContributionTypeId)
                                     where !ContributionTypeCode.Pledge.Equals(c.ContributionTypeId)
                                     select c);
                    break;

                case "Both":
                    contributions = pledges
                                        ?
                                    (from c in contributions
                                     select c)
                                        :
                                    (from c in contributions
                                     where !ContributionTypeCode.Pledge.Equals(c.ContributionTypeId)
                                     select c);
                    break;

                case "Pledge":
                    contributions = from c in contributions
                                    where c.ContributionTypeId == ContributionTypeCode.Pledge
                                    select c;
                    break;
                }

                if (exportStartDt.ToDate().HasValue)
                {
                    contributions = from c in contributions
                                    where c.ContributionDate >= exportStartDt
                                    select c;
                }

                if (exportEndDt.ToDate().HasValue)
                {
                    contributions = from c in contributions
                                    where c.ContributionDate < exportEndDt.ToDate().Value.AddDays(1)
                                    select c;
                }

                if (online == 1)
                {
                    contributions = from c in contributions
                                    where c.BundleDetails.Any(dd => dd.BundleHeader.BundleHeaderTypeId == BundleTypeCode.Online)
                                    select c;
                }
                else if (online == 0)
                {
                    contributions = from c in contributions
                                    where c.BundleDetails.All(dd => dd.BundleHeader.BundleHeaderTypeId != BundleTypeCode.Online)
                                    select c;
                }

                if ((campusid ?? 0) != 0)
                {
                    contributions = from c in contributions
                                    where (c.CampusId ?? c.Person.CampusId) == campusid
                                    select c;
                }

                if (fundids.HasValue())
                {
                    if (fundids != null)
                    {
                        contributions = from c in contributions
                                        where fundids.Contains(c.FundId.ToString())
                                        select c;
                    }
                }

                var tableResultTotals  = tableResult.AsEnumerable().Sum(row => row.Field <decimal>("Amount"));
                var totalContributions = contributions.Sum(x => x.ContributionAmount) ?? 0;
                totalContributions.ToDouble().ShouldBe(tableResultTotals.ToDouble());

                foreach (var b in bundleList)
                {
                    MockContributions.DeleteAllFromBundle(db, b);
                }
            }
        }