// **************************************************************************************************************************
        // ******************************************************     METHODS   *****************************************************
        // **************************************************************************************************************************

        /// <summary> Gets the epm worksheet. </summary>
        /// <returns> </returns>
        public ExcelWorksheet GetEpmWorksheet()
        {
            var funds  = Allocation.GetFunds();
            var awards = Allocation.GetAwards();

            if (funds.Any(p => p.GetCode().GetValue().StartsWith($"{FundCode.B}")))
            {
                try
                {
                    var grid = new Grid(Worksheet, (10, 2));
                    var hdr  = grid.From.Row - 1;
                    var fund = new Fund($"{FundCode.B}");
                    Budget?.SetWorksheetProperties(grid.GetWorksheet());
                    Budget?.SetBudgetHeaderFormat(grid, fund, Allocation.GetBudgetFiscalYear());

                    var prcdata = Allocation.GetData() != null
                        ? Allocation.GetData().Where(f => f.Field <string>($"{Field.FundCode}").StartsWith($"{FundCode.B}")) != null
                            ? Allocation.GetData().Where(f => f.Field <string>($"{Field.FundCode}").StartsWith($"{FundCode.B}")).Where(f => f.Field <string>($"{Field.BocCode}") != $"{BOC.FTE}") != null
                                ? Allocation.GetData().Where(f => f.Field <string>($"{Field.FundCode}").StartsWith($"{FundCode.B}")).Where(f => f.Field <string>($"{Field.BocCode}") != $"{BOC.FTE}").ToLookup(f => f.Field <string>($"{Field.AccountCode}"), f => f)
                                : null
                            : null
                        : null;

                    var start = grid.From.Row;

                    if (prcdata != null)
                    {
                        foreach (var kvp in prcdata)
                        {
                            Budget?.SetAllocationTableFormat(grid, fund);
                            Budget?.PopulateAccountRows(grid, prcdata, kvp);
                            start++;
                        }
                    }

                    var endrow = start;

                    var query = awards?.Where(a => a.GetFundCode().Equals($"{FundCode.B}"))
                                .Select(a => a);

                    if (query?.Any() ?? false)
                    {
                        Budget?.SetAwardsHeaderFormat(grid);
                        Budget?.SetAwardRowsFormat(grid, fund);
                    }

                    return(Worksheet);
                }
                catch (Exception ex)
                {
                    Fail(ex);
                    return(default);
 /// <summary>
 /// Initializes a new instance of the <see cref = "ExcelBudget"/> class.
 /// </summary>
 /// <param name = "authority" >
 /// The authority.
 /// </param>
 public ExcelBudget(IAuthority authority)
 {
     Excel      = new ExcelPackage(new FileInfo(FilePath));
     Workbook   = Excel.Workbook;
     SheetCount = Workbook.Worksheets.Count;
     Authority  = authority;
     Allocation = Authority.GetAllocation();
     Data       = Allocation.GetData();
     BFY        = Authority.GetBudgetFiscalYear();
     RPIO       = Authority.GetResourcePlanningOffice();
     Fund       = Authority.GetFund();
     AH         = Authority.GetAllowanceHolder();
     ORG        = Authority.GetOrganization();
     RC         = Authority.GetResponsibilityCenter();
     Division   = new Division(RC);
 }