001// --------------------------------------------------------------------------------
002// Copyright 2002-2026 Echo Three, LLC
003//
004// Licensed under the Apache License, Version 2.0 (the "License");
005// you may not use this file except in compliance with the License.
006// You may obtain a copy of the License at
007//
008//     http://www.apache.org/licenses/LICENSE-2.0
009//
010// Unless required by applicable law or agreed to in writing, software
011// distributed under the License is distributed on an "AS IS" BASIS,
012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013// See the License for the specific language governing permissions and
014// limitations under the License.
015// --------------------------------------------------------------------------------
016
017package com.echothree.model.control.campaign.server.graphql;
018
019import com.echothree.model.control.graphql.server.graphql.BaseObject;
020import com.echothree.model.control.graphql.server.graphql.TimeObject;
021import com.echothree.model.data.campaign.server.entity.UserVisitCampaign;
022import graphql.annotations.annotationTypes.GraphQLDescription;
023import graphql.annotations.annotationTypes.GraphQLField;
024import graphql.annotations.annotationTypes.GraphQLName;
025import graphql.annotations.annotationTypes.GraphQLNonNull;
026import graphql.schema.DataFetchingEnvironment;
027
028@GraphQLDescription("user visit campaign object")
029@GraphQLName("UserVisitCampaign")
030public class UserVisitCampaignObject
031        extends BaseObject {
032
033    private final UserVisitCampaign userVisitCampaign; // Always Present
034
035    public UserVisitCampaignObject(UserVisitCampaign userVisitCampaign) {
036        this.userVisitCampaign = userVisitCampaign;
037    }
038
039    @GraphQLField
040    @GraphQLDescription("user visit campaign sequence")
041    @GraphQLNonNull
042    public int getUserVisitCampaignSequence() {
043        return userVisitCampaign.getUserVisitCampaignSequence();
044    }
045
046    @GraphQLField
047    @GraphQLDescription("time")
048    @GraphQLNonNull
049    public TimeObject getTime(final DataFetchingEnvironment env) {
050        return new TimeObject(userVisitCampaign.getTime());
051    }
052
053    @GraphQLField
054    @GraphQLDescription("campaign")
055    public CampaignObject getCampaign(final DataFetchingEnvironment env) {
056        var campaign = userVisitCampaign.getCampaign();
057        return campaign == null ? null :
058                CampaignSecurityUtils.getHasCampaignAccess(env) ? new CampaignObject(userVisitCampaign.getCampaign()) : null;
059    }
060
061    @GraphQLField
062    @GraphQLDescription("campaign source")
063    public CampaignSourceObject getCampaignSource(final DataFetchingEnvironment env) {
064        var campaignSource = userVisitCampaign.getCampaignSource();
065        return campaignSource == null ? null :
066                CampaignSecurityUtils.getHasCampaignSourceAccess(env) ? new CampaignSourceObject(userVisitCampaign.getCampaignSource()) : null;
067    }
068
069    @GraphQLField
070    @GraphQLDescription("campaign medium")
071    public CampaignMediumObject getCampaignMedium(final DataFetchingEnvironment env) {
072        var campaignMedium = userVisitCampaign.getCampaignMedium();
073        return campaignMedium == null ? null :
074                CampaignSecurityUtils.getHasCampaignMediumAccess(env) ? new CampaignMediumObject(userVisitCampaign.getCampaignMedium()) : null;
075    }
076
077    @GraphQLField
078    @GraphQLDescription("campaign content")
079    public CampaignTermObject getCampaignTerm(final DataFetchingEnvironment env) {
080        var campaignTerm = userVisitCampaign.getCampaignTerm();
081        return campaignTerm == null ? null :
082                CampaignSecurityUtils.getHasCampaignTermAccess(env) ? new CampaignTermObject(userVisitCampaign.getCampaignTerm()) : null;
083    }
084
085    @GraphQLField
086    @GraphQLDescription("campaign content")
087    public CampaignContentObject getCampaignContent(final DataFetchingEnvironment env) {
088        var campaignContent = userVisitCampaign.getCampaignContent();
089        return campaignContent == null ? null :
090                CampaignSecurityUtils.getHasCampaignContentAccess(env) ? new CampaignContentObject(userVisitCampaign.getCampaignContent()) : null;
091    }
092
093}