예제 #1
0
        public AnywhereRegistration CreateAnywhereRegistration(AnywhereRegistration registration, int projectId, string token)
        {
            try
            {
                var apiToken         = _apiUserRepository.GetToken();
                var mpGroupConnector = _groupConnectorService.GetGroupConnectorByProjectId(projectId, apiToken);
                registration.GroupConnectorId = mpGroupConnector.Id;

                var participantId  = RegistrationContact(registration, token);
                var registrationId = CreateAnywhereRegistrationDto(registration, participantId);
                ChildAgeGroups(registration, registrationId);
                Observable.Start(() => SendMail(registration));
                return(registration);
            }
            catch (DuplicateUserException e)
            {
                _logger.Error(e.Message, e);
                throw;
            }
            catch (Exception e)
            {
                const string msg = "Go Volunteer Service: CreateAnywhereRegistration";
                _logger.Error(msg, e);
                throw new Exception(msg, e);
            }
        }
예제 #2
0
        private void ChildAgeGroups(AnywhereRegistration registration, int registrationId)
        {
            var ageGroup = new ChildrenAttending
            {
                Count = registration.NumberOfChildren,
                Id    = _configurationWrapper.GetConfigIntValue("GoLocalRegistrationChildrenAttribute")
            };

            _registrationService.AddAgeGroup(registrationId, ageGroup.Id, ageGroup.Count);
        }
예제 #3
0
        private int CreateAnywhereRegistrationDto(AnywhereRegistration registration, int participantId)
        {
            var registrationDto = new MpRegistration();

            registrationDto.ParticipantId = participantId;
            var preferredLaunchSiteId = PreferredLaunchSite(registration);

            registrationDto.PreferredLaunchSiteId = preferredLaunchSiteId;
            registrationDto.InitiativeId          = registration.InitiativeId;
            registrationDto.SpouseParticipation   = registration.SpouseParticipation;
            registrationDto.OrganizationId        = registration.OrganizationId == 0 ? _configurationWrapper.GetConfigIntValue("CrossroadsOrganizationId") : registration.OrganizationId;

            var registrationId = Registration(registrationDto);

            registrationDto.RegistrationId = registrationId;

            _groupConnectorService.CreateGroupConnectorRegistration(registration.GroupConnectorId, registrationId);

            return(registrationId);
        }
예제 #4
0
        private Dictionary <string, object> SetupAnywhereMergeData(AnywhereRegistration registration, string projectLeaderName)
        {
            var adultsParticipating = registration.SpouseParticipation ? 2 : 1;
            var birthDate           = DateTime.Parse(registration.Self.DateOfBirth);
            var merge = new Dictionary <string, object>
            {
                { "Nickname", registration.Self.FirstName },
                { "LastName", registration.Self.LastName },
                { "Participant_Email_Address", registration.Self.EmailAddress },
                { "Date_Of_Birth", birthDate.Month + "/" + birthDate.Day + "/" + birthDate.Year },
                { "Mobile_Phone", registration.Self.MobilePhone },
                { "Spouse_Participating", registration.SpouseParticipation ? "Yes": "No" },
                { "Number_Of_Children", registration.NumberOfChildren },
                { "Group_Connector", projectLeaderName },
                { "Adults_Participating", adultsParticipating },
                { "Total_Volunteers", registration.NumberOfChildren + adultsParticipating },
                { "Base_Url", _configurationWrapper.GetConfigValue("BaseUrl") }
            };

            return(merge);
        }
예제 #5
0
 public IHttpActionResult Post([FromBody] AnywhereRegistration goVolunteerRegistration, int projectId)
 {
     try
     {
         if (ModelState.IsValid)
         {
             return(Authorized(token => Ok(_goVolunteerService.CreateAnywhereRegistration(goVolunteerRegistration, projectId, token))));
         }
         var errors    = ModelState.Values.SelectMany(val => val.Errors).Aggregate("", (current, err) => current + err.ErrorMessage);
         var dataError = new ApiErrorDto("Registration Data Invalid", new InvalidOperationException("Invalid Registration Data" + errors));
         throw new HttpResponseException(dataError.HttpResponseMessage);
     }
     catch (DuplicateUserException e)
     {
         throw new HttpResponseException(HttpStatusCode.Conflict);
     }
     catch (Exception e)
     {
         var msg = "GoVolunteerRegistrationController: POST " + goVolunteerRegistration;
         logger.Error(msg, e);
         var apiError = new ApiErrorDto(msg, e);
         throw new HttpResponseException(apiError.HttpResponseMessage);
     }
 }
예제 #6
0
 private MpRegistration BuildRegistrationDto(int participantId, int preferredLaunchSiteId, AnywhereRegistration registration)
 {
     return(new MpRegistration()
     {
         ParticipantId = participantId,
         PreferredLaunchSiteId = preferredLaunchSiteId,
         InitiativeId = registration.InitiativeId,
         SpouseParticipation = registration.SpouseParticipation,
         OrganizationId = _crossroadsOrganizationId
     });
 }