public GrantModificationDetailViewData(Person currentPerson,
                                               Models.GrantModification grantModification,
                                               EntityNotesViewData internalGrantModificationNotesViewData) : base(currentPerson)
        {
            Check.EnsureNotNull(currentPerson);
            Check.EnsureNotNull(grantModification);

            GrantModification = grantModification;
            PageTitle         = grantModification.GrantModificationName;
            BreadCrumbTitle   = $"{Models.FieldDefinition.GrantModification.GetFieldDefinitionLabel()} Detail";
            InternalGrantModificationNotesViewData = internalGrantModificationNotesViewData;
            ParentGrantUrl = SitkaRoute <GrantController> .BuildUrlFromExpression(gc => gc.GrantDetail(grantModification.GrantID));

            BackToParentGrantUrlText       = $"Back to {Models.FieldDefinition.Grant.GetFieldDefinitionLabel()}: {grantModification.Grant.GrantName}";
            EditGrantModificationBasicsUrl = SitkaRoute <GrantModificationController> .BuildUrlFromExpression(gmc => gmc.EditGrantModification(grantModification.PrimaryKey));

            UserHasEditGrantModificationPermissions = new GrantModificationEditAsAdminFeature().HasPermissionByPerson(currentPerson);

            var canEditDocuments = new GrantModificationEditAsAdminFeature().HasPermission(currentPerson, grantModification).HasPermission;

            GrantModificationDetailFileDetailsViewData = new FileDetailsViewData(
                EntityDocument.CreateFromEntityDocument(new List <IEntityDocument>(grantModification.GrantModificationFileResources)),
                SitkaRoute <GrantModificationController> .BuildUrlFromExpression(x => x.NewGrantModificationFiles(grantModification.PrimaryKey)),
                canEditDocuments,
                Models.FieldDefinition.GrantModification
                );

            var relevantGrant = grantModification.Grant;

            GrantAllocationGridSpec    = new GrantAllocationGridSpec(currentPerson, GrantAllocationGridSpec.GrantAllocationGridCreateButtonType.Shown, relevantGrant);
            GrantAllocationGridName    = "grantAllocationsGridName";
            GrantAllocationGridDataUrl = SitkaRoute <GrantController> .BuildUrlFromExpression(tc => tc.GrantAllocationGridJsonDataByGrantModification(grantModification));
        }
 public GridJsonNetJObjectResult<GrantAllocation> GrantAllocationGridWithoutAnyJsonData()
 {
     // Create button is irrelevant to this data-only usage
     var gridSpec = new GrantAllocationGridSpec(CurrentPerson, GrantAllocationGridSpec.GrantAllocationGridCreateButtonType.Hidden, null);
     var grantAllocations = HttpRequestStorage.DatabaseEntities.GrantAllocations.Where(ga => ga.GrantModification.Grant.GrantNumber == "").ToList();
     var gridJsonNetJObjectResult = new GridJsonNetJObjectResult<GrantAllocation>(grantAllocations, gridSpec);
     return gridJsonNetJObjectResult;
 }
 public GridJsonNetJObjectResult<GrantAllocation> AllGrantAllocationGridJsonData()
 {
     // Create button is irrelevant to this data-only usage
     var gridSpec = new GrantAllocationGridSpec(CurrentPerson, GrantAllocationGridSpec.GrantAllocationGridCreateButtonType.Hidden, null);
     var grantAllocations = HttpRequestStorage.DatabaseEntities.GrantAllocations.ToList();
     var gridJsonNetJObjectResult = new GridJsonNetJObjectResult<GrantAllocation>(grantAllocations, gridSpec);
     return gridJsonNetJObjectResult;
 }
 public GridJsonNetJObjectResult<GrantAllocation> GrantAllocationGridJsonDataByGrant(GrantPrimaryKey grantPrimaryKey)
 {
     var relevantGrant = grantPrimaryKey.EntityObject;
     // Create button is irrelevant to this data-only usage
     var gridSpec = new GrantAllocationGridSpec(CurrentPerson, GrantAllocationGridSpec.GrantAllocationGridCreateButtonType.Hidden, relevantGrant);
     var grantAllocations = relevantGrant.GrantModifications.SelectMany(gm => gm.GrantAllocations).ToList();
     var gridJsonNetJObjectResult = new GridJsonNetJObjectResult<GrantAllocation>(grantAllocations, gridSpec);
     return gridJsonNetJObjectResult;
 }