Hi Clifford,

There are many different ways to go about this, with many variations. I will
give just one approach.

If you need to tell whether a save was an update or a create, I suggest
modifying the saveHonors() method to return a value that indicates this. For
example:

       <cffunction name="saveHonors" access="public" returntype="boolean"
output="false" hint="Return true if create, false if update">
               <cfargument name="Honors" type="any" required="true"/>

               <cfif val( Honors.getID() ) GT 0 ><!--- Update --->
                       <cfset getHonorsDAO().update( arguments.Honors ) />
                       <cfreturn false />
               <cfelse><!--- Insert --->
                       <cfset getHonorsDAO().create( arguments.Honors ) />
                       <cfreturn true />
               </cfif>
  </cffunction>

Next, modify your HonorsFormSubmitted method to record the save status and
the saved HonorsBean into the event context:

               <cfset var HonorsCreated = "" />
               <cfif isValid >
                       <cfset HonorsCreated = HonorsService.saveHonors(
HonorsBean ) />
                       <cfset
arguments.event.setValue("HonorsCreated", HonorsCreated ) />
                       <cfset
arguments.event.setValue("HonorsBean", HonorsBean ) />
                       <cfset arguments.event.addResult("Success") />
               <cfelse>
                       <cfset arguments.event.setValue("ErrorStruct",
ErrorStruct) />
                       <cfset arguments.event.addResult("Failure") />
               </cfif>

Now, define a controller method called "emailSavedHonors" that uses
arguments.event.getValue("HonorsBean")
and arguments.event.getValue("HonorsCreated")  to generate an email. Ideally
the code that actually does the <cfmail> will be in a service CFC retrieved
from ColdSpring, e.g. getModelGlue().getBean( "EmailService"). Remember to
define an <message-listener> for the controller method.

Next, define a private event handler to broadcast the new message:

       <event-handler name="EmailSavedHonors" access="private">
                       <broadcasts>
                               <message name= "emailSavedHonors" />
                       </broadcasts>
       </event-handler>

Finally, add a result to your existing event handlers to queue this new
event on success:

       <event-handler name="SubmitHighSchoolFormData" type="templatedPage">
                       <broadcasts>
                               <message name= "HonorsFormSubmitted" />
                       </broadcasts>
                       <results>
                               <result name="success" do="EmailSavedHonors"
/>
                               <result name="success"
do="HighSchoolApplicationResponse" />
                               <result name="failure" do="highschool" />
                       </results>
       </event-handler>

With all that in place, your HonorsFormSubmitted controller method should
put all the data needed for emailing into the event context, and the event
handler should queue one event to send the email and another event to return
a response to the client.

We'll be here if you have any further questions. Good luck!

-- Dennis

On Tue, Aug 24, 2010 at 5:36 PM, Clifford Moon <[email protected]>wrote:

> Greetings,
>
> I'm working on our first ModelGlue app, and have modeled it pretty
> much identical to the tutorial that Dan has on the NoDans.com
> website.  I'm saving a form using the controller.cfc, and utilizing
> Service/Gateway/DAO breakdown as was setup in the tutorial.  Here is a
> snippet of the controller.cfc code where I'm actually saving the form.
>        <cffunction name="HonorsFormSubmitted"  access="public"
> returnType="void" output="false" hint="???">
>        <cfargument name="event" type="any">
>                <cfset var HonorsBean = getModelGlue().getBean("HonorsBean")
> /
> >
>        <cfset var HonorsService =
> getModelGlue().getBean( "HonorsService") />
>            <cfset var HonorsList = HonorsService.getHonorsListActive() />
>                <cfset var ErrorStruct = structNew() />
>                <cfset var isValid = false />
>
>                <cfset arguments.event.makeEventBean( HonorsBean ) />
>                <cfset isValid = HonorsBean.validate (ErrorStruct) />
>
>                <cfif isValid >
>                    <cfset HonorsService.saveHonors( HonorsBean ) />
>                        <cfset arguments.event.addResult("Success") />
>                <cfelse>
>                        <cfset arguments.event.setValue("ErrorStruct",
> ErrorStruct) />
>                        <cfset arguments.event.addResult("Failure") />
>                </cfif>
>
>        </cffunction>
>
> My Issue is that after I save this form, I need to email several
> individuals various files/data that they will need.  If the data
> validates and then saves, I'm confused how to get the ID of the record
> that was just saved, and where I need to place the call to the EMAIL
> function.  We are using an Oracle Database for this application.
> Should the call to EMAIL be in the isValid CFIF above, and if so, how
> do I pass something back from the DAO file that can tell me that it
> was CREATED and not UPDATED.
>
> Hope I haven't confused anyone, and thanks in Advance for any help.
> I'm still floundering with the ModelGlue concepts, but reading the
> tutorials and newsgroups have given us lots of help.
>
> I'm including the BEAN, DAO, GW,MODELGLUE.XML and SERVICE Files in
> case they are needed..
>
>

-- 
Model-Glue Sites:
Home Page: http://www.model-glue.com
Documentation: http://docs.model-glue.com
Bug Tracker: http://bugs.model-glue.com
Blog: http://www.model-glue.com/blog

You received this message because you are subscribed to the Google
Groups "model-glue" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en

Reply via email to