Exemple #1
0
        public async Task <IActionResult> ExportUnchurchedToExcel()
        {
            var applicationDbContext = _context.Children
                                       .Where(c => c.VBSId == this.CurrentVBSId && c.VBS.TenantId == this.TenantId)
                                       .OrderBy(c => c.GuardianLastName)
                                       .ThenBy(c => c.Address1)
                                       .ThenBy(c => c.GradeCompleted);

            List <Child> dbChildren = await applicationDbContext.ToListAsync();

            List <UnchurchedReportViewModel2> vms = new List <UnchurchedReportViewModel2>();

            Dictionary <string, UnchurchedReportViewModel2> vmDictionary = new Dictionary <string, UnchurchedReportViewModel2>();

            foreach (Child dbChild in dbChildren)
            {
                string church = dbChild.HomeChurch;

                if (!dbChild.AttendHostChurch && ChurchHelper.IsNoneChurch(church))
                {
                    if (!vmDictionary.ContainsKey(dbChild.GuardianFirstName + " " + dbChild.GuardianLastName))
                    {
                        UnchurchedReportViewModel2 vm = new UnchurchedReportViewModel2();

                        vm.ChildrenNamesAndGrades = dbChild.FirstName + " " + dbChild.LastName + "(" + dbChild.GradeCompleted + ")";
                        vm.Address = dbChild.Address1 + ", ";
                        if (!string.IsNullOrEmpty(dbChild.Address2))
                        {
                            vm.Address += dbChild.Address2 + ", ";
                        }
                        vm.Address             += dbChild.City + ", ";
                        vm.Address             += dbChild.State + ", ";
                        vm.Address             += dbChild.Zip;
                        vm.GuardianName         = dbChild.GuardianFirstName + " " + dbChild.GuardianLastName;
                        vm.GuardianRelationship = dbChild.GuardianChildRelationship;
                        vm.GuardianEmail        = dbChild.GuardianEmail;
                        vm.GuardianPhone        = dbChild.GuardianPhone;
                        vm.ChurchSpecified      = dbChild.HomeChurch;
                        vm.InvitedBy            = dbChild.InvitedBy;

                        vmDictionary.Add(vm.GuardianName, vm);
                    }
                    else
                    {
                        UnchurchedReportViewModel2 vm = vmDictionary[dbChild.GuardianFirstName + " " + dbChild.GuardianLastName];

                        vm.ChildrenNamesAndGrades += ", " + dbChild.FirstName + " " + dbChild.LastName + "(" + dbChild.GradeCompleted + ")";
                    }
                }
            }

            foreach (UnchurchedReportViewModel2 vm2 in vmDictionary.Values)
            {
                vms.Add(vm2);
            }

            string tenantName = _context.Tenants
                                .Where(t => t.Id == this.TenantId).First().Name;

            string theme = _context.VBS
                           .Where(v => v.Id == this.CurrentVBSId).First().ThemeName;

            string fileName = tenantName + " - " + theme + " - " + "Unchurched Children Export.xlsx";

            byte[] filecontent = ExcelExportHelper.ExportUnchurchedExcel(vms);
            return(File(filecontent, ExcelExportHelper.ExcelContentType, fileName));
        }