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.control.user.letter.server;
018
019import com.echothree.control.user.letter.common.LetterRemote;
020import com.echothree.control.user.letter.common.form.*;
021import com.echothree.control.user.letter.common.result.*;
022import com.echothree.control.user.letter.server.command.*;
023import com.echothree.model.data.user.common.pk.UserVisitPK;
024import com.echothree.util.common.command.CommandResult;
025import com.echothree.util.common.command.VoidResult;
026import javax.ejb.Stateless;
027import javax.enterprise.inject.spi.CDI;
028
029@Stateless
030public class LetterBean
031        extends LetterFormsImpl
032        implements LetterRemote, LetterLocal {
033    
034    // -------------------------------------------------------------------------
035    //   Testing
036    // -------------------------------------------------------------------------
037    
038    @Override
039    public String ping() {
040        return "LetterBean is alive!";
041    }
042    
043    // --------------------------------------------------------------------------------
044    //   Letter Sources
045    // --------------------------------------------------------------------------------
046    
047    @Override
048    public CommandResult<VoidResult> createLetterSource(UserVisitPK userVisitPK, CreateLetterSourceForm form) {
049        return CDI.current().select(CreateLetterSourceCommand.class).get().run(userVisitPK, form);
050    }
051    
052    @Override
053    public CommandResult<GetLetterSourceChoicesResult> getLetterSourceChoices(UserVisitPK userVisitPK, GetLetterSourceChoicesForm form) {
054        return CDI.current().select(GetLetterSourceChoicesCommand.class).get().run(userVisitPK, form);
055    }
056    
057    @Override
058    public CommandResult<GetLetterSourceResult> getLetterSource(UserVisitPK userVisitPK, GetLetterSourceForm form) {
059        return CDI.current().select(GetLetterSourceCommand.class).get().run(userVisitPK, form);
060    }
061    
062    @Override
063    public CommandResult<GetLetterSourcesResult> getLetterSources(UserVisitPK userVisitPK, GetLetterSourcesForm form) {
064        return CDI.current().select(GetLetterSourcesCommand.class).get().run(userVisitPK, form);
065    }
066    
067    @Override
068    public CommandResult<VoidResult> setDefaultLetterSource(UserVisitPK userVisitPK, SetDefaultLetterSourceForm form) {
069        return CDI.current().select(SetDefaultLetterSourceCommand.class).get().run(userVisitPK, form);
070    }
071    
072    @Override
073    public CommandResult<EditLetterSourceResult> editLetterSource(UserVisitPK userVisitPK, EditLetterSourceForm form) {
074        return CDI.current().select(EditLetterSourceCommand.class).get().run(userVisitPK, form);
075    }
076    
077    @Override
078    public CommandResult<VoidResult> deleteLetterSource(UserVisitPK userVisitPK, DeleteLetterSourceForm form) {
079        return CDI.current().select(DeleteLetterSourceCommand.class).get().run(userVisitPK, form);
080    }
081    
082    // --------------------------------------------------------------------------------
083    //   Letter Source Descriptions
084    // --------------------------------------------------------------------------------
085    
086    @Override
087    public CommandResult<VoidResult> createLetterSourceDescription(UserVisitPK userVisitPK, CreateLetterSourceDescriptionForm form) {
088        return CDI.current().select(CreateLetterSourceDescriptionCommand.class).get().run(userVisitPK, form);
089    }
090    
091    @Override
092    public CommandResult<GetLetterSourceDescriptionsResult> getLetterSourceDescriptions(UserVisitPK userVisitPK, GetLetterSourceDescriptionsForm form) {
093        return CDI.current().select(GetLetterSourceDescriptionsCommand.class).get().run(userVisitPK, form);
094    }
095    
096    @Override
097    public CommandResult<EditLetterSourceDescriptionResult> editLetterSourceDescription(UserVisitPK userVisitPK, EditLetterSourceDescriptionForm form) {
098        return CDI.current().select(EditLetterSourceDescriptionCommand.class).get().run(userVisitPK, form);
099    }
100    
101    @Override
102    public CommandResult<VoidResult> deleteLetterSourceDescription(UserVisitPK userVisitPK, DeleteLetterSourceDescriptionForm form) {
103        return CDI.current().select(DeleteLetterSourceDescriptionCommand.class).get().run(userVisitPK, form);
104    }
105    
106    // --------------------------------------------------------------------------------
107    //   Letters
108    // --------------------------------------------------------------------------------
109    
110    @Override
111    public CommandResult<VoidResult> createLetter(UserVisitPK userVisitPK, CreateLetterForm form) {
112        return CDI.current().select(CreateLetterCommand.class).get().run(userVisitPK, form);
113    }
114    
115    @Override
116    public CommandResult<GetLetterChoicesResult> getLetterChoices(UserVisitPK userVisitPK, GetLetterChoicesForm form) {
117        return CDI.current().select(GetLetterChoicesCommand.class).get().run(userVisitPK, form);
118    }
119    
120    @Override
121    public CommandResult<GetLetterResult> getLetter(UserVisitPK userVisitPK, GetLetterForm form) {
122        return CDI.current().select(GetLetterCommand.class).get().run(userVisitPK, form);
123    }
124    
125    @Override
126    public CommandResult<GetLettersResult> getLetters(UserVisitPK userVisitPK, GetLettersForm form) {
127        return CDI.current().select(GetLettersCommand.class).get().run(userVisitPK, form);
128    }
129    
130    @Override
131    public CommandResult<VoidResult> setDefaultLetter(UserVisitPK userVisitPK, SetDefaultLetterForm form) {
132        return CDI.current().select(SetDefaultLetterCommand.class).get().run(userVisitPK, form);
133    }
134    
135    @Override
136    public CommandResult<EditLetterResult> editLetter(UserVisitPK userVisitPK, EditLetterForm form) {
137        return CDI.current().select(EditLetterCommand.class).get().run(userVisitPK, form);
138    }
139    
140    @Override
141    public CommandResult<VoidResult> deleteLetter(UserVisitPK userVisitPK, DeleteLetterForm form) {
142        return CDI.current().select(DeleteLetterCommand.class).get().run(userVisitPK, form);
143    }
144    
145    // --------------------------------------------------------------------------------
146    //   Letter Descriptions
147    // --------------------------------------------------------------------------------
148    
149    @Override
150    public CommandResult<VoidResult> createLetterDescription(UserVisitPK userVisitPK, CreateLetterDescriptionForm form) {
151        return CDI.current().select(CreateLetterDescriptionCommand.class).get().run(userVisitPK, form);
152    }
153    
154    @Override
155    public CommandResult<GetLetterDescriptionsResult> getLetterDescriptions(UserVisitPK userVisitPK, GetLetterDescriptionsForm form) {
156        return CDI.current().select(GetLetterDescriptionsCommand.class).get().run(userVisitPK, form);
157    }
158    
159    @Override
160    public CommandResult<EditLetterDescriptionResult> editLetterDescription(UserVisitPK userVisitPK, EditLetterDescriptionForm form) {
161        return CDI.current().select(EditLetterDescriptionCommand.class).get().run(userVisitPK, form);
162    }
163    
164    @Override
165    public CommandResult<VoidResult> deleteLetterDescription(UserVisitPK userVisitPK, DeleteLetterDescriptionForm form) {
166        return CDI.current().select(DeleteLetterDescriptionCommand.class).get().run(userVisitPK, form);
167    }
168    
169    // --------------------------------------------------------------------------------
170    //   Letter Contact Mechanism Purposes
171    // --------------------------------------------------------------------------------
172    
173    @Override
174    public CommandResult<VoidResult> createLetterContactMechanismPurpose(UserVisitPK userVisitPK, CreateLetterContactMechanismPurposeForm form) {
175        return CDI.current().select(CreateLetterContactMechanismPurposeCommand.class).get().run(userVisitPK, form);
176    }
177    
178    @Override
179    public CommandResult<GetLetterContactMechanismPurposesResult> getLetterContactMechanismPurposes(UserVisitPK userVisitPK, GetLetterContactMechanismPurposesForm form) {
180        return CDI.current().select(GetLetterContactMechanismPurposesCommand.class).get().run(userVisitPK, form);
181    }
182    
183    @Override
184    public CommandResult<EditLetterContactMechanismPurposeResult> editLetterContactMechanismPurpose(UserVisitPK userVisitPK, EditLetterContactMechanismPurposeForm form) {
185        return CDI.current().select(EditLetterContactMechanismPurposeCommand.class).get().run(userVisitPK, form);
186    }
187    
188    @Override
189    public CommandResult<VoidResult> deleteLetterContactMechanismPurpose(UserVisitPK userVisitPK, DeleteLetterContactMechanismPurposeForm form) {
190        return CDI.current().select(DeleteLetterContactMechanismPurposeCommand.class).get().run(userVisitPK, form);
191    }
192    
193    // --------------------------------------------------------------------------------
194    //   Queued Letters
195    // --------------------------------------------------------------------------------
196
197    @Override
198    public CommandResult<GetQueuedLetterResult> getQueuedLetter(UserVisitPK userVisitPK, GetQueuedLetterForm form) {
199        return CDI.current().select(GetQueuedLetterCommand.class).get().run(userVisitPK, form);
200    }
201
202    @Override
203    public CommandResult<GetQueuedLettersResult> getQueuedLetters(UserVisitPK userVisitPK, GetQueuedLettersForm form) {
204        return CDI.current().select(GetQueuedLettersCommand.class).get().run(userVisitPK, form);
205    }
206
207    @Override
208    public CommandResult<VoidResult> deleteQueuedLetter(UserVisitPK userVisitPK, DeleteQueuedLetterForm form) {
209        return CDI.current().select(DeleteQueuedLetterCommand.class).get().run(userVisitPK, form);
210    }
211
212}