public ActionResult ViewMembersReportBuild(LeagueReportBuilderModel model)
        {
            try
            {
                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                bool isSec = MemberCache.IsSecretaryOrBetterOfLeague(memId);
                var league = MemberCache.GetLeagueOfMember(memId);
                //MembersReportEnum en = new MembersReportEnum();
                long reportSelected = 0;

                if (Int64.TryParse(model.SelectedReport, out reportSelected))
                {
                    var oldReport = LeagueReportBuilder.GetReport(league.LeagueId, reportSelected);
                    model.SelectedColumnsHidden = oldReport.leagueReportEnums;
                    model.SaveReport = false;
                    model.SavedReportName = oldReport.Name;
                }

                var items = model.SelectedColumnsHidden.Split(',');

                if (String.IsNullOrEmpty(model.SavedReportName))
                    model.SavedReportName = "ReportBuilder";
                if (model.SaveReport)
                    LeagueReportBuilder.SaveReport(league.LeagueId, model.SelectedColumnsHidden, model.SavedReportName);

                using (ExcelPackage p = new ExcelPackage())
                {
                    try
                    {
                        p.Workbook.Properties.Author = "RDNation.com";
                        p.Workbook.Properties.Title = "Report For " + league.Name;

                        //we create the first sheet.
                        ExcelWorksheet reportSheet = p.Workbook.Worksheets.Add("Report");
                        reportSheet.Name = "Report"; //Setting Sheet's name
                        reportSheet.Cells.Style.Font.Size = 11; //Default font size for whole sheet
                        reportSheet.Cells.Style.Font.Name = "Calibri"; //Default Font name for whole sheet

                        int column = 1;
                        int row = 1;
                        foreach (var item in items)
                        {
                            if (!String.IsNullOrEmpty(item))
                            {
                                MembersReportEnum temp = (MembersReportEnum)Enum.Parse(typeof(MembersReportEnum), item);
                                reportSheet.Cells[row, column].Value = RDN.Portable.Util.Enums.EnumExt.ToFreindlyName(temp);
                                row += 1;
                                for (int i = 0; i < league.LeagueMembers.Count; i++)
                                {
                                    switch (temp)
                                    {
                                        case MembersReportEnum.Phone_Number:
                                            if (!league.LeagueMembers[i].Settings.Hide_Phone_Number_From_League || (league.LeagueMembers[i].Settings.Hide_Phone_Number_From_League && isSec))
                                                reportSheet.Cells[row, column].Value = league.LeagueMembers[i].PhoneNumber;
                                            else
                                                reportSheet.Cells[row, column].Value = "hidden";
                                            break;
                                        case MembersReportEnum.Email:
                                            if (!league.LeagueMembers[i].Settings.Hide_Email_From_League || (league.LeagueMembers[i].Settings.Hide_Email_From_League && isSec))
                                                reportSheet.Cells[row, column].Value = league.LeagueMembers[i].Email;
                                            else
                                                reportSheet.Cells[row, column].Value = "hidden";
                                            break;

                                        case MembersReportEnum.Birthday:
                                            if (!league.LeagueMembers[i].Settings.Hide_DOB_From_League || (league.LeagueMembers[i].Settings.Hide_DOB_From_League && isSec))
                                                reportSheet.Cells[row, column].Value = league.LeagueMembers[i].DOB.ToShortDateString();
                                            else
                                                reportSheet.Cells[row, column].Value = "hidden";
                                            break;
                                        case MembersReportEnum.CRDI_Insurance_Number:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].InsuranceNumCRDI;
                                            break;
                                        case MembersReportEnum.Derby_Name:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].DerbyName;
                                            break;
                                        case MembersReportEnum.Derby_Number:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].PlayerNumber;
                                            break;
                                        case MembersReportEnum.First_Name:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].Firstname;
                                            break;
                                        case MembersReportEnum.Inactive_Indicator:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].IsInactiveFromCurrentLeague;
                                            break;
                                        case MembersReportEnum.Last_Name:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].LastName;
                                            break;
                                        case MembersReportEnum.Other_Insurance_Number:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].InsuranceNumOther;
                                            break;
                                        case MembersReportEnum.Skating_Level:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].LeagueClassificationOfSkatingLevel;
                                            break;
                                        case MembersReportEnum.USARS_Insurance_Number:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].InsuranceNumUsars;
                                            break;
                                        case MembersReportEnum.WFTDA_Insurance_Number:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].InsuranceNumWftda;
                                            break;
                                        case MembersReportEnum.Skills_Test_Date:
                                            if (league.LeagueMembers[i].Leagues.FirstOrDefault() != null && league.LeagueMembers[i].Leagues.FirstOrDefault().SkillsTestDate.HasValue)
                                                reportSheet.Cells[row, column].Value = league.LeagueMembers[i].Leagues.FirstOrDefault().SkillsTestDate.GetValueOrDefault().ToShortDateString();
                                            break;
                                        case MembersReportEnum.League_Departure_Date:
                                            if (league.LeagueMembers[i].Leagues.FirstOrDefault() != null && league.LeagueMembers[i].Leagues.FirstOrDefault().DepartureDate.HasValue)
                                                reportSheet.Cells[row, column].Value = league.LeagueMembers[i].Leagues.FirstOrDefault().DepartureDate.GetValueOrDefault().ToShortDateString();
                                            break;
                                        case MembersReportEnum.Day_Job:
                                            reportSheet.Cells[row, column].Value = league.LeagueMembers[i].DayJob;
                                            break;
                                        //case MembersReportEnum.Groups:
                                        //    reportSheet.Cells[row, column].Value = league.LeagueMembers[i];
                                        //    break;
                                    }
                                    row += 1;
                                }
                                row = 1;
                                column += 1;

                            }
                        }


                        reportSheet.Cells["A1:Z100"].AutoFitColumns();
                    }
                    catch (Exception exception)
                    {
                        ErrorDatabaseManager.AddException(exception, exception.GetType());
                    }
                    //Generate A File with Random name
                    Byte[] bin = p.GetAsByteArray();
                    if (String.IsNullOrEmpty(model.SavedReportName))
                        model.SavedReportName = "ReportBuilder";
                    string file = model.SavedReportName + "_" + DateTime.UtcNow.ToString("yyyyMMdd") + ".xlsx";
                    return File(bin, RDN.Utilities.IO.FileExt.GetMIMEType(file), file);
                }
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType(), additionalInformation: "columns:" + model.SelectedColumnsHidden);
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww.ToString()));
        }
        public ActionResult ViewMembersReportBuilder()
        {
            try
            {

                var memId = RDN.Library.Classes.Account.User.GetMemberId();
                var league = MemberCache.GetLeagueOfMember(memId);
                LeagueReportBuilderModel model = new LeagueReportBuilderModel();
                model.LeagueName = league.Name;
                model.LeagueId = league.LeagueId;
                model.SavedReports = new SelectList(LeagueReportBuilder.GetReports(league.LeagueId), "ReportId", "Name");
                model.ColumnsAvailable = Enum.GetValues(typeof(MembersReportEnum)).Cast<MembersReportEnum>().OrderBy(x => x.ToString()).ToList();
                return View(model);
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            return Redirect(Url.Content("~/?u=" + SiteMessagesEnum.sww.ToString()));
        }