Update of /var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
In directory 
james.mmbase.org:/tmp/cvs-serv7402/src/nl/natuurmonumenten/activiteiten

Modified Files:
      Tag: BRANCH_NATMM_1_2
        ActiviteitenService.java MockActiviteitenService.java 
        ActiviteitenHelper.java IActiviteitenService.java 
Added Files:
      Tag: BRANCH_NATMM_1_2
        Aanmelding.java Subscription.java 
Log Message:
NMCMS-622 - Added subscribeEvent code


See also: 
http://cvs.mmbase.org/viewcvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten
See also: http://www.mmbase.org/jira/browse/NMCMS-622


Aanmelding.java is new



Subscription.java is new



Index: ActiviteitenService.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenService.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- ActiviteitenService.java    16 Jan 2009 08:43:53 -0000      1.1.2.3
+++ ActiviteitenService.java    19 Jan 2009 11:23:51 -0000      1.1.2.4
@@ -2,17 +2,12 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Calendar;
 import java.util.Date;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
 
 import net.sf.mmapps.modules.cloudprovider.CloudProviderFactory;
-import nl.leocms.util.DoubleDateNode;
 
 import org.apache.log4j.Logger;
 import org.mmbase.bridge.Cloud;
@@ -20,6 +15,7 @@
 import org.mmbase.bridge.NodeIterator;
 import org.mmbase.bridge.NodeList;
 import org.mmbase.bridge.NodeManager;
+import org.mmbase.bridge.RelationList;
 
 /**
  * WebService voor de Centrale Activiteiten Database (CAD)
@@ -28,19 +24,27 @@
  *
  */
 public class ActiviteitenService implements IActiviteitenService {
-    //private static Logger logger = 
Logging.getLoggerInstance(MMBaseActiviteitenService.class);
+    // private static Logger logger =
+    // Logging.getLoggerInstance(MMBaseActiviteitenService.class);
     private static Logger logger = Logger.getLogger(ActiviteitenService.class);
     BeanFactory beanFactory = new BeanFactory();
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getVersion()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getVersion()
      */
     public String getVersion() {
         return "0.2";
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getProvincies()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getProvincies
+     * ()
      */
     public Provincie[] getProvincies() {
         logger.debug("getProvincies");
@@ -57,8 +61,13 @@
         // return null;
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEvents(java.util.Date,
 java.util.Date, java.lang.String[], java.lang.String, java.lang.String)
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEvents(
+     * java.util.Date, java.util.Date, java.lang.String[], java.lang.String,
+     * java.lang.String)
      */
     public Event[] getEvents(Date start, Date eind, String[] eventTypeIds, 
String provincieId, String natuurgebiedenId) {
         logger.debug("getEvents() - eventTypeIds: " + eventTypeIds);
@@ -80,14 +89,17 @@
         }
         logger.debug("beans: " + beans);
         logger.debug("beans.size(): " + beans.size());
-        
         Event[] events = (Event[]) beans.toArray(new Event[beans.size()]);
         logger.debug("events: " + Arrays.asList(events));
         return events;
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEventTypes()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getEventTypes
+     * ()
      */
     public EventType[] getEventTypes() {
         logger.debug("getEventTypes");
@@ -103,8 +115,12 @@
         return (EventType[]) beans.toArray(new EventType[beans.size()]);
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getMediaTypes()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getMediaTypes
+     * ()
      */
     public MediaType[] getMediaTypes() {
         logger.debug("getMediaTypes");
@@ -119,8 +135,11 @@
         return (MediaType[]) beans.toArray(new MediaType[beans.size()]);
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getDeelnemersCategorieen()
+    /*
+     * (non-Javadoc)
+     * 
+     * @seenl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#
+     * getDeelnemersCategorieen()
      */
     public DeelnemersCategorie[] getDeelnemersCategorieen() {
         logger.debug("getDeelnemersCategorieen");
@@ -135,8 +154,12 @@
         return (DeelnemersCategorie[]) beans.toArray(new 
DeelnemersCategorie[beans.size()]);
     }
 
-    /* (non-Javadoc)
-     * @see 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getNatuurgebieden()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see
+     * 
nl.natuurmonumenten.activiteiten.ActiviteitenServiceInterf#getNatuurgebieden
+     * ()
      */
     public Natuurgebied[] getNatuurgebieden() {
         logger.debug("getNatuurgebieden");
@@ -175,5 +198,44 @@
         return (Vertrekpunt[]) beans.toArray(new Vertrekpunt[beans.size()]);
     }
 
-
+    public String subscribeEvent(Subscription subscription) {
+        Cloud cloud = CloudProviderFactory.getCloudProvider().getCloud();
+        Node eventNode = cloud.getNode(subscription.getEvenementId());
+        if (eventNode == null) {
+            throw new IllegalArgumentException("Evenement id does not exist: " 
+ subscription.getEvenementId());
+        }
+        NodeManager manager = cloud.getNodeManager("inschrijvingen");
+        Node subscriptionNode = manager.createNode();
+        subscriptionNode.setLongValue("datum_inschrijving", (new 
Date()).getTime() / 1000);
+        subscriptionNode.setStringValue("source", 
subscription.getMediaTypeId());
+        subscriptionNode.setStringValue("description", 
subscription.getBijzonderheden());
+        subscriptionNode.setStringValue("ticket_office", "website");
+        subscriptionNode.commit();
+        eventNode.createRelation(subscriptionNode, 
cloud.getRelationManager("posrel")).commit();
+        // *** update inschrijvingen,related,inschrijvings_status
+        RelationList relations = subscriptionNode.getRelations("related", 
"inschrijvings_status");
+        for (int r = 0; r < relations.size(); r++) {
+            relations.getRelation(r).delete(true);
+        }
+        String thisStatus = 
cloud.getNode("site_subscription").getStringValue("number");
+        Node statusNode = cloud.getNode(thisStatus);
+        if (statusNode != null) {
+            subscriptionNode.createRelation(cloud.getNode(thisStatus), 
cloud.getRelationManager("related")).commit();
+        } else {
+            logger.error("inschrijvings_status with number " + thisStatus + " 
does not exist.");
+        }
+        Aanmelding[] aanmeldingen = subscription.getAanmeldingen();
+        if (aanmeldingen != null) {
+            for (int i = 0; i < aanmeldingen.length; i++) {
+                if (aanmeldingen[i].getAantal() > 0) {
+                    logger.debug("aanmelding-deelnemerscatid:" + 
aanmeldingen[i].getDeelnemersCategorieId());
+                    logger.debug("aanmelding-aantal:" + 
aanmeldingen[i].getAantal());
+                    ActiviteitenHelper.createParticipant(cloud, eventNode, 
subscriptionNode, aanmeldingen[i]
+                            .getDeelnemersCategorieId(), 
aanmeldingen[i].getAantal(), subscription);
+                }
+            }
+        }
+        // emails worden niet verstuurd zoals in het origineel, dit hoeft niet
+        return  "Aanmelding ontvangen";
+    }
 }


Index: MockActiviteitenService.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/MockActiviteitenService.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- MockActiviteitenService.java        16 Jan 2009 08:00:10 -0000      1.1.2.1
+++ MockActiviteitenService.java        19 Jan 2009 11:23:51 -0000      1.1.2.2
@@ -49,4 +49,9 @@
         // TODO Auto-generated method stub
         return null;
     }
+
+    public String subscribeEvent(Subscription subscription) {
+        // TODO Auto-generated method stub
+        return null;
+    }
 }


Index: ActiviteitenHelper.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/ActiviteitenHelper.java,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -b -r1.1.2.3 -r1.1.2.4
--- ActiviteitenHelper.java     16 Jan 2009 13:02:33 -0000      1.1.2.3
+++ ActiviteitenHelper.java     19 Jan 2009 11:23:51 -0000      1.1.2.4
@@ -8,11 +8,16 @@
 import java.util.Set;
 import java.util.TreeMap;
 
+import nl.leocms.evenementen.Evenement;
+import nl.leocms.evenementen.forms.SubscribeAction;
+
 import org.apache.log4j.Logger;
 import org.mmbase.bridge.Cloud;
 import org.mmbase.bridge.Node;
 import org.mmbase.bridge.NodeIterator;
 import org.mmbase.bridge.NodeList;
+import org.mmbase.bridge.Relation;
+import org.mmbase.bridge.RelationList;
 
 public class ActiviteitenHelper {
     private static Logger logger = Logger.getLogger(ActiviteitenHelper.class);
@@ -182,4 +187,79 @@
     public static int getAantalBeschikbarePlaatsen(Node parentEvent, Node 
childEvent) {
         return parentEvent.getIntValue("max_aantal_deelnemers") - 
childEvent.getIntValue("cur_aantal_deelnemers");
     }
+    
+    public static Node createParticipant(Cloud cloud, Node thisEvent, Node 
thisSubscription, String thisCategory, int thisNumber, Subscription 
subscription) {
+
+        Node thisParticipant = null;
+        thisParticipant = cloud.getNodeManager("deelnemers").createNode();
+
+        thisParticipant.setStringValue("initials", 
subscription.getVoorletter());
+        thisParticipant.setStringValue("firstname", 
subscription.getVoornaam());
+        thisParticipant.setStringValue("suffix", 
subscription.getTussenvoegsel());
+        thisParticipant.setStringValue("lastname", 
subscription.getAchternaam());
+        thisParticipant.setStringValue("email", subscription.getEmail());
+        thisParticipant.setStringValue("privatephone", 
subscription.getTelefoon());
+        thisParticipant.setStringValue("straatnaam", subscription.getStraat());
+        thisParticipant.setStringValue("huisnummer", 
subscription.getHuisnummer());
+        thisParticipant.setStringValue("plaatsnaam", subscription.getPlaats());
+        thisParticipant.setStringValue("land", subscription.getLand());
+        thisParticipant.setStringValue("postcode", subscription.getPostcode());
+        thisParticipant.setStringValue("lidnummer", 
subscription.getLidnummer());
+        thisParticipant.commit();
+
+        Relation thisRel = null;
+        if(thisRel==null) {
+           thisRel = 
thisSubscription.createRelation(thisParticipant,cloud.getRelationManager("posrel"));
+        }
+
+        // set the price for this participant
+        int costs = 9999;
+        String sParent = 
Evenement.findParentNumber(thisEvent.getStringValue("number"));
+        
if(!Evenement.isGroupBooking(cloud,thisParticipant.getStringValue("number"))) {
+           // this is a regular excursion
+           NodeList dcl = cloud.getList( sParent
+                                         
,"evenement,posrel,deelnemers_categorie"
+                                         ,"posrel.pos"
+                                         ,"deelnemers_categorie.number='"+ 
thisCategory+ "'",null,null,null,false);
+           if(dcl.size()>0) {
+              costs = dcl.getNode(0).getIntValue("posrel.pos");
+              logger.debug("costs1: " + costs);
+              // if these are members of a group_excursion, but not the main 
group excursion participant: set costs to zero
+              if(Evenement.isGroupExcursion(cloud,sParent)
+                 && (costs==SubscribeAction.GROUP_EXCURSION_COSTS || 
costs==SubscribeAction.DEFAULT_COSTS )) {
+                       costs = 0;
+              }
+              logger.debug("costs2: " + costs);
+           }
+           costs = costs * thisNumber;
+           logger.debug("costs3: " + costs);
+        } else {
+           // this is the subscription for group excursion
+           costs =  Evenement.getGroupExcursionCosts(cloud, sParent, 
thisSubscription.getStringValue("number"));
+           logger.debug("costs4: " + costs);
+        }
+        logger.debug("costs5: " + costs);
+        thisRel.setIntValue("pos",costs);
+        thisRel.commit();
+
+        // *** update deelnemers,related,deelnemers_categorie
+        
if(!Evenement.isGroupBooking(cloud,thisParticipant.getStringValue("number"))) {
+
+           thisParticipant.setStringValue("bron", String.valueOf(thisNumber));
+           thisParticipant.commit();
+           RelationList relations = 
thisParticipant.getRelations("related","deelnemers_categorie");
+           for(int r=0; r<relations.size(); r++) { 
relations.getRelation(r).delete(true); }
+           if(!thisCategory.equals("-1")) {
+
+             Node thisCategoryNode = cloud.getNode(thisCategory);
+             
thisParticipant.createRelation(thisCategoryNode,cloud.getRelationManager("related")).commit();
+
+           }
+        }
+
+        thisEvent.commit(); // *** save to update cur_aantal_deelnemers
+
+        return thisParticipant;
+     }
+
 }


Index: IActiviteitenService.java
===================================================================
RCS file: 
/var/cvs/contributions/natmm/src/nl/natuurmonumenten/activiteiten/Attic/IActiviteitenService.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -b -r1.1.2.1 -r1.1.2.2
--- IActiviteitenService.java   16 Jan 2009 08:00:10 -0000      1.1.2.1
+++ IActiviteitenService.java   19 Jan 2009 11:23:51 -0000      1.1.2.2
@@ -27,4 +27,6 @@
     public abstract EventDetails getEventDetails(String id);
 
     public abstract Vertrekpunt[] getVertrekpunten();
+    
+    public abstract String subscribeEvent(Subscription subscription);
 }
\ No newline at end of file
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to