public InteractionEventDetailViewData(Person currentPerson, Models.InteractionEvent interactionEvent, string locationMapFormID, MapInitJson interactionEventLocationSummaryMapInitJson) : base(currentPerson)
        {
            IndexUrl = SitkaRoute <InteractionEventController> .BuildUrlFromExpression(x => x.Index());

            EditInteractionEventBasicsUrl = SitkaRoute <InteractionEventController> .BuildUrlFromExpression(x => x.EditInteractionEvent(interactionEvent.PrimaryKey));

            EditInteractionEventLocationSimpleUrl =
                SitkaRoute <InteractionEventController> .BuildUrlFromExpression(x =>
                                                                                x.EditInteractionEventLocation(interactionEvent.PrimaryKey));

            UserHasInteractionEventManagePermissions = new InteractionEventManageFeature().HasPermissionByPerson(currentPerson);
            InteractionEvent         = interactionEvent;
            InteractionEventContacts = interactionEvent.InteractionEventContacts.ToList();
            InteractionEventProjects = interactionEvent.InteractionEventProjects.ToList();
            LocationMapFormID        = locationMapFormID;
            InteractionEventLocationSummaryMapInitJson = interactionEventLocationSummaryMapInitJson;
            PageTitle = interactionEvent.InteractionEventTitle;

            var canEditDocuments = new InteractionEventManageFeature().HasPermissionByPerson(CurrentPerson);

            InteractionEventDetailFileDetailsViewData = new FileDetailsViewData(
                EntityDocument.CreateFromEntityDocument(new List <IEntityDocument>(interactionEvent.InteractionEventFileResources)),
                SitkaRoute <InteractionEventController> .BuildUrlFromExpression(x => x.NewInteractionEventFiles(interactionEvent.PrimaryKey)),
                canEditDocuments,
                Models.FieldDefinition.InteractionEvent
                );
        }
Beispiel #2
0
        private void InteractionEventGridSpecConstructorImpl(Person currentPerson, Models.Project optionalProjectToAssociate, Person optionalPersonToAssociate)
        {
            // ReSharper disable twice ConditionIsAlwaysTrueOrFalse
            Check.Ensure((optionalProjectToAssociate == null && optionalPersonToAssociate == null) ||
                         (optionalProjectToAssociate == null && optionalPersonToAssociate != null) ||
                         (optionalProjectToAssociate != null && optionalPersonToAssociate == null));

            ObjectNameSingular = $"{Models.FieldDefinition.InteractionEvent.GetFieldDefinitionLabel()}";
            ObjectNamePlural   = $"{Models.FieldDefinition.InteractionEvent.GetFieldDefinitionLabelPluralized()}";

            SaveFiltersInCookie = true;
            var userHasManagePermissions = new InteractionEventManageFeature().HasPermissionByPerson(currentPerson);

            if (userHasManagePermissions)
            {
                var contentUrl = SitkaRoute <InteractionEventController> .BuildUrlFromExpression(t => t.New());

                if (optionalPersonToAssociate != null)
                {
                    contentUrl = SitkaRoute <InteractionEventController> .BuildUrlFromExpression(t => t.NewForAPerson(optionalPersonToAssociate));
                }
                else if (optionalProjectToAssociate != null)
                {
                    contentUrl = SitkaRoute <InteractionEventController> .BuildUrlFromExpression(t => t.NewForAProject(optionalProjectToAssociate));
                }
                CreateEntityModalDialogForm = new ModalDialogForm(contentUrl, 950, $"Create a new {ObjectNameSingular}");
            }

            if (userHasManagePermissions)
            {
                Add(string.Empty,
                    x => DhtmlxGridHtmlHelpers.MakeDeleteIconAndLinkBootstrap(x.GetDeleteUrl(), userHasManagePermissions, true),
                    30, DhtmlxGridColumnFilterType.None);
            }

            if (userHasManagePermissions)
            {
                Add(string.Empty,
                    x => DhtmlxGridHtmlHelpers.MakeEditIconAsModalDialogLinkBootstrap(
                        new ModalDialogForm(x.GetEditUrl(), $"Edit {ObjectNameSingular} - {x.InteractionEventTitle}"),
                        userHasManagePermissions), 30, DhtmlxGridColumnFilterType.None);
            }

            Add("Title", x => UrlTemplate.MakeHrefString(x.GetDetailUrl(), x.InteractionEventTitle), 150, DhtmlxGridColumnFilterType.Html);
            Add("Description", x => x.InteractionEventDescription, 200, DhtmlxGridColumnFilterType.Text);
            Add("Date", x => x.InteractionEventDate, 80, DhtmlxGridColumnFormatType.Date);
            Add(Models.FieldDefinition.InteractionEventType.ToGridHeaderString(), x => x.InteractionEventType?.InteractionEventTypeDisplayName, 180, DhtmlxGridColumnFilterType.SelectFilterStrict);
            Add(Models.FieldDefinition.DNRStaffPerson.ToGridHeaderString(), x => x.StaffPerson?.FullNameFirstLast, 180, DhtmlxGridColumnFilterType.SelectFilterStrict);
        }