private int CreateOrUpdateFormResponse(MpFormResponse formResponse, string token) { var record = new Dictionary <string, object> { { "Form_ID", formResponse.FormId }, { "Response_Date", DateTime.Today }, { "Contact_ID", formResponse.ContactId }, { "Opportunity_ID", formResponse.OpportunityId }, { "Opportunity_Response", formResponse.OpportunityResponseId }, { "Pledge_Campaign_ID", formResponse.PledgeCampaignId } }; // This code is shared by Trips, Camps, and Volunteer Application. For trips, // we want to maintain separate form responses per trip. We can distinguish // trips from other callers because PledgeCampaignId is required for trips. // // TODO: Currently, Camps is sharing form responses if the contact has // registered for multiple camps; this will likely need to change in the // future. int responseId = (formResponse.PledgeCampaignId != null) ? responseId = GetFormResponseIdForFormContactAndPledgeCampaign(formResponse.FormId, formResponse.ContactId, formResponse.PledgeCampaignId.Value) : responseId = GetFormResponseIdForFormContact(formResponse.FormId, formResponse.ContactId); if (responseId == 0) { responseId = _ministryPlatformService.CreateRecord(_formResponsePageId, record, token, true); } else { record.Add("Form_Response_ID", responseId); _ministryPlatformService.UpdateRecord(_formResponsePageId, record, token); } return(responseId); }
public void SetUp() { _ministryPlatformService = new Mock <IMinistryPlatformService>(); _authService = new Mock <IAuthenticationRepository>(); _configWrapper = new Mock <IConfigurationWrapper>(); _dbConnection = new Mock <IDbConnection>(); _ministryPlatformRest = new Mock <IMinistryPlatformRestRepository>(); _configWrapper.Setup(m => m.GetEnvironmentVarAsString("API_USER")).Returns("uid"); _configWrapper.Setup(m => m.GetEnvironmentVarAsString("API_PASSWORD")).Returns("pwd"); _authService.Setup(m => m.Authenticate(It.IsAny <string>(), It.IsAny <string>())).Returns(new AuthToken { AccessToken = "ABC", ExpiresIn = 123 }); _fixture = new FormSubmissionRepository(_ministryPlatformService.Object, _dbConnection.Object, _authService.Object, _configWrapper.Object, _ministryPlatformRest.Object); _mockAnswer1 = new MpFormAnswer { FieldId = 375, FormResponseId = responseId, OpportunityResponseId = 7329, Response = "Test Last Name", EventParticipantId = null }; _mockAnswer2 = new MpFormAnswer { FieldId = 376, FormResponseId = responseId, OpportunityResponseId = 7329, Response = "Test First Name", EventParticipantId = null }; _mockAnswer3 = new MpFormAnswer { FieldId = 377, FormResponseId = responseId, OpportunityResponseId = 7329, Response = "Test Middle Initial", EventParticipantId = null }; _mockForm = new MpFormResponse { FormId = 17, ContactId = 2389887, OpportunityId = 313, OpportunityResponseId = 7329, FormAnswers = new List <MpFormAnswer> { _mockAnswer1, _mockAnswer2, _mockAnswer3 } }; }
public void SaveInvoice(CampProductDTO campProductDto, string token) { var loggedInContact = _contactRepository.GetMyProfile(token); var family = _contactRepository.GetHouseholdFamilyMembers(loggedInContact.Household_ID); family.AddRange(_contactRepository.GetOtherHouseholdMembers(loggedInContact.Household_ID)); if (family.Where(f => f.ContactId == campProductDto.ContactId).ToList().Count <= 0) { throw new ContactNotFoundException(campProductDto.ContactId); } // set finainacial assistance flag in form response var participant = _participantRepository.GetParticipant(campProductDto.ContactId); var eventParticipantId = _eventRepository.GetEventParticipantRecordId(campProductDto.EventId, participant.ParticipantId); var answers = new List <MpFormAnswer> { new MpFormAnswer { Response = campProductDto.FinancialAssistance.ToString(), FieldId = _configurationWrapper.GetConfigIntValue("SummerCampForm.FinancialAssistance"), EventParticipantId = eventParticipantId } }; var formId = _configurationWrapper.GetConfigIntValue("SummerCampFormID"); var formResponse = new MpFormResponse { ContactId = campProductDto.ContactId, FormId = formId, FormAnswers = answers, EventId = campProductDto.EventId }; _formSubmissionRepository.SubmitFormResponse(formResponse); // if an invoice exists for this eventparticipant then don't create a new one if (_invoiceRepository.InvoiceExistsForEventParticipant(eventParticipantId)) { return; } // create the invoice with product from event and best pricing for the current date //get the product id for this event var campEvent = _eventRepository.GetEvent(campProductDto.EventId); var product = _productRepository.GetProductForEvent(campProductDto.EventId); var optionPrices = _productRepository.GetProductOptionPricesForProduct(product.ProductId); var productOptionPriceId = optionPrices.Count > 0 ? ConvertProductOptionPricetoDto(optionPrices, product.BasePrice, campEvent.EventStartDate) .Where(i => i.EndDate > DateTime.Now) .OrderBy(i => i.EndDate).FirstOrDefault()? .ProductOptionPriceId : (int?)null; _invoiceRepository.CreateInvoiceAndDetail(product.ProductId, productOptionPriceId, loggedInContact.Contact_ID, campProductDto.ContactId, eventParticipantId); }
public int SaveApplication(TripApplicationDto dto) { try { UpdateChildSponsorship(dto); var formResponse = new MpFormResponse { ContactId = dto.ContactId, //contact id of the person the application is for FormId = _configurationWrapper.GetConfigIntValue("TripApplicationFormId"), PledgeCampaignId = dto.PledgeCampaignId, FormAnswers = new List <MpFormAnswer>(FormatFormAnswers(dto)) }; var formResponseId = _formSubmissionService.SubmitFormResponse(formResponse); if (dto.InviteGUID != null) { _privateInviteService.MarkAsUsed(dto.PledgeCampaignId, dto.InviteGUID); } if (HasScholarship(dto.ContactId, dto.PledgeCampaignId)) { SendTripApplicantSuccessMessage(dto.ContactId); } else { SendTripApplicantDonationComboMessage(dto); } _logger.Info($"SaveApplication success: ContactId = {dto.ContactId}, PledgeCampaignId = {dto.PledgeCampaignId}"); return(formResponseId); } catch (Exception ex) { // add exception to error log _logger.Error($"SaveApplication exception: ContactId = {dto.ContactId}, PledgeCampaignId = {dto.PledgeCampaignId}", ex); // include form data in error log (serialized json); ignore exceptions during serialization JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Error = (serializer, err) => err.ErrorContext.Handled = true; string json = JsonConvert.SerializeObject(dto, settings); _logger.Error($"SaveApplication data {json}"); // send applicant message SendApplicantErrorMessage(dto.ContactId); // send trip admin message SendTripAdminErrorMessage(dto.PledgeCampaignId); //then re-throw or eat it? return(0); } }
private int CreateOrUpdateFormResponse(MpFormResponse formResponse, string token) { var record = new Dictionary <string, object> { { "Form_ID", formResponse.FormId }, { "Response_Date", DateTime.Now }, { "Contact_ID", formResponse.ContactId }, { "Opportunity_ID", formResponse.OpportunityId }, { "Opportunity_Response", formResponse.OpportunityResponseId }, { "Pledge_Campaign_ID", formResponse.PledgeCampaignId }, { "Event_ID", formResponse.EventId } }; var formResponseId = _configurationWrapper.GetConfigIntValue("FormResponsePageId"); // This code is shared by Trips, Camps, and Volunteer Application. // // For trips: // we want to maintain separate form responses per trip. We can distinguish // trips from other callers because PledgeCampaignId is required for trips. // // TODO: Currently, Camps is sharing form responses if the contact has // registered for multiple camps; this will likely need to change in the // future. var sb = new StringBuilder($"Contact_ID={formResponse.ContactId} AND Form_ID={formResponse.FormId}"); if (formResponse.EventId != null) { sb.Append($" AND Event_ID={formResponse.EventId}"); } if (formResponse.PledgeCampaignId != null) { sb.Append($" AND Pledge_Campaign_ID={formResponse.PledgeCampaignId}"); } var filter = sb.ToString(); const string selectColumns = "Form_Response_ID"; var response = _ministryPlatformRestRepository.UsingAuthenticationToken(token).Search <MpFormResponse>(filter, selectColumns, null, true); var responseId = response?.FirstOrDefault()?.FormResponseId ?? 0; if (responseId == 0) { responseId = _ministryPlatformService.CreateRecord(formResponseId, record, token, true); } else { record.Add("Form_Response_ID", responseId); _ministryPlatformService.UpdateRecord(formResponseId, record, token); } return(responseId); }
public void ShouldCreateAFormResponseWithAnEventId() { const int recordId = 43; var formResponse = new MpFormResponse { ContactId = 123456, EventId = 8976, FormAnswers = new List <MpFormAnswer>(), FormId = 3333 }; var record = new Dictionary <string, object> { { "Form_ID", formResponse.FormId }, { "Response_Date", DateTime.Now }, { "Contact_ID", formResponse.ContactId }, { "Opportunity_ID", formResponse.OpportunityId }, { "Opportunity_Response", formResponse.OpportunityResponseId }, { "Pledge_Campaign_ID", formResponse.PledgeCampaignId }, { "Event_ID", formResponse.EventId } }; var searchString = $"Contact_ID={formResponse.ContactId} AND Form_ID={formResponse.FormId} AND Event_ID={formResponse.EventId}"; const string selectColumns = "Form_Response_ID"; _ministryPlatformRestRepository.Setup(m => m.UsingAuthenticationToken(apiToken)).Returns(_ministryPlatformRestRepository.Object); _ministryPlatformRestRepository.Setup(m => m.Search <MpFormResponse>(It.IsAny <string>(), It.IsAny <string>(), null, true)).Returns((string filter, string column, string orderby, bool distinct) => { Assert.AreEqual(searchString, filter); Assert.AreEqual(selectColumns, column); return(new List <MpFormResponse>()); }); _ministryPlatformService.Setup(m => m.CreateRecord(It.IsAny <int>(), It.IsAny <Dictionary <string, object> >(), apiToken, true)) .Returns((int formRId, Dictionary <string, object> data, string token, bool quickAdd) => { Assert.AreEqual(record["Event_ID"], data["Event_ID"]); return(recordId); }); var result = _fixture.SubmitFormResponse(formResponse); _ministryPlatformService.VerifyAll(); _authenticationRepository.VerifyAll(); _ministryPlatformRestRepository.VerifyAll(); Assert.AreEqual(recordId, result); }
public int SubmitFormResponse(MpFormResponse form) { var token = ApiLogin(); var responseId = CreateOrUpdateFormResponse(form, token); foreach (var answer in form.FormAnswers) { if (answer.Response == null) { continue; } answer.FormResponseId = responseId; CreateOrUpdateFormAnswer(answer, token); } return(responseId); }
public IObservable <int> SaveReferences(GroupLeaderProfileDTO leader) { var form = new MpFormResponse { ContactId = leader.ContactId, FormId = _configWrapper.GetConfigIntValue("GroupLeaderFormId"), FormAnswers = new List <MpFormAnswer> { new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderReferenceFieldId"), Response = leader.ReferenceContactId }, new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderReferenceNameFieldId"), Response = leader.ReferenceDisplayName ?? "" }, new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderHuddleFieldId"), Response = leader.HuddleResponse }, new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderStudentFieldId"), Response = leader.LeadStudents } } }; return(Observable.Create <int>(observer => { var responseId = _formSubmissionRepository.SubmitFormResponse(form); if (responseId == 0) { observer.OnError(new ApplicationException("Unable to submit form response for Group Leader")); } observer.OnNext(responseId); observer.OnCompleted(); return Disposable.Create(() => Console.WriteLine("Observable destroyed")); })); }
public IObservable <int> SaveSpiritualGrowth(SpiritualGrowthDTO spiritualGrowth) { var form = new MpFormResponse() { ContactId = spiritualGrowth.ContactId, FormId = _configWrapper.GetConfigIntValue("GroupLeaderFormId"), FormAnswers = new List <MpFormAnswer> { new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderFormStoryFieldId"), Response = spiritualGrowth.Story }, new MpFormAnswer { FieldId = _configWrapper.GetConfigIntValue("GroupLeaderFormTaughtFieldId"), Response = spiritualGrowth.Taught } } }; return(Observable.Create <int>(observer => { var responseId = _formSubmissionRepository.SubmitFormResponse(form); if (responseId == 0) { observer.OnError(new ApplicationException("Unable to submit Spiritual Growth form for Group Leader")); } SendConfirmationEmail(spiritualGrowth.ContactId, spiritualGrowth.EmailAddress); observer.OnNext(responseId); observer.OnCompleted(); return Disposable.Create(() => Console.WriteLine("Observable Destroyed")); })); }
public bool SaveAdult(AdultApplicationDto application) { var formId = _configurationWrapper.GetConfigIntValue("KidsClubAdultApplicant"); var opportunityResponseId = application.ResponseOpportunityId; _formFields = _formSubmissionService.GetFieldsForForm(formId); var formResponse = new MpFormResponse(); formResponse.ContactId = application.ContactId; //contact id of the person the application is for formResponse.FormId = formId; formResponse.OpportunityId = application.OpportunityId; // we know this from CMS formResponse.OpportunityResponseId = opportunityResponseId; formResponse.FormAnswers.Add(SetCustomField(application.FirstName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.LastName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.MiddleInitial, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.BirthDate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.PreviousName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.NameForNameTag, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(TranslateGender(application.Gender), opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(TranslateMaritalStatus(application.MaritalStatus), opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SpouseName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SpouseGender, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.HowLongAttending, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhatServiceDoYouAttend, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.StreetAddress, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.City, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.State, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Zip, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.CompanyName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Position, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child1Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child1Birthdate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child2Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child2Birthdate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child3Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child3Birthdate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child4Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Child4Birthdate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.EverBeenArrest, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AddictionConcern, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.NeglectingChild, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.PsychiatricDisorder, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SexuallyActiveOutsideMarriage, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionSearchingForAnswers, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionReceivedJesus, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionFocusingOnObedience, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionReplicating, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SpiritualOrientationExplain, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhatPromptedApplication, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SpecialTalents, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityWeek, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityWeekend, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityWeekendSite, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestServingInClassroom, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestWelcomingNewFamilies, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestHelpSpecialNeeds, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestTech, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestRoomPrep, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestAdminTasks, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestShoppingForSupplies, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AreaOfInterestCreatingWeekendExperience, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhatAgeBirthToTwo, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhatAgeThreeToPreK, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhatAgeKToFifth, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1TimeKnown, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Association, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Occupation, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2TimeKnown, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Association, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Occupation, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3TimeKnown, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3Association, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference3Occupation, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Agree, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AgreeDate, opportunityResponseId)); var response = _formSubmissionService.SubmitFormResponse(formResponse); return(response != 0); }
public bool SaveStudent(StudentApplicationDto application) { var formId = _configurationWrapper.GetConfigIntValue("KidsClubStudentApplicant"); var opportunityResponseId = application.ResponseOpportunityId; _formFields = _formSubmissionService.GetFieldsForForm(formId); var formResponse = new MpFormResponse(); formResponse.ContactId = application.ContactId; //contact id of the person the application is for formResponse.FormId = formId; formResponse.OpportunityId = application.OpportunityId; // we know this from CMS formResponse.OpportunityResponseId = opportunityResponseId; formResponse.FormAnswers.Add(SetCustomField(application.FirstName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.LastName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.MiddleInitial, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.BirthDate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(TranslateGender(application.Gender), opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.NameForNameTag, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.School, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.HowLongAttending, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ServiceAttend, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.StreetAddress, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.City, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.State, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Zip, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Grade, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionSearchingForAnswers, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionReceivedJesus, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionFocusingOnObedience, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ReligionReplicating, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ExplainFaith, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.WhyServe, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.SpecialTalents, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityDuringWeek, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityDuringWeekend, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.AvailabilityWeekendSite, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ServeAgeKids1To2, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ServeAgeKids3ToPreK, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ServeAgeKidsKto5Grade, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1TimeKnown, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Association, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference1Occupation, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Name, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2TimeKnown, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2HomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2MobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2WorkPhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Email, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Association, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.Reference2Occupation, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentLastName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentFirstName, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentHomePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentMobilePhone, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentEmail, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentSignature, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.ParentSignatureDate, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.StudentSignature, opportunityResponseId)); formResponse.FormAnswers.Add(SetCustomField(application.StudentSignatureDate, opportunityResponseId)); var response = _formSubmissionService.SubmitFormResponse(formResponse); return(response != 0); }
public CampReservationDTO SaveCampReservation(CampReservationDTO campReservation, int eventId, string token) { var nickName = string.IsNullOrWhiteSpace(campReservation.PreferredName) ? campReservation.FirstName : campReservation.PreferredName; var contactId = Convert.ToInt32(campReservation.ContactId); var minorContact = new MpContact { FirstName = campReservation.FirstName, LastName = campReservation.LastName, PreferredName = $"{campReservation.LastName}, {campReservation.FirstName}", MiddleName = campReservation.MiddleName, MobilePhone = campReservation.MobilePhone, BirthDate = Convert.ToDateTime(campReservation.BirthDate), Gender = campReservation.Gender, Nickname = nickName, SchoolAttending = campReservation.SchoolAttending, HouseholdId = (_contactRepository.GetMyProfile(token)).Household_ID, HouseholdPositionId = 2 }; MpParticipant participant; if (campReservation.ContactId == null || campReservation.ContactId == 0) { var newMinorContact = _contactRepository.CreateContact(minorContact); contactId = newMinorContact[0].RecordId; participant = _participantRepository.GetParticipant(contactId); campReservation.ContactId = contactId; } else { var updateToDictionary = new Dictionary <String, Object> { { "Contact_ID", Convert.ToInt32(campReservation.ContactId) }, { "First_Name", minorContact.FirstName }, { "Last_Name", minorContact.LastName }, { "Middle_Name", minorContact.MiddleName }, { "Nickname", nickName }, { "Mobile_Phone", minorContact.MobilePhone }, { "Gender_ID", campReservation.Gender }, { "Date_Of_Birth", minorContact.BirthDate }, { "Current_School", minorContact.SchoolAttending }, { "Congregation_Name", (_congregationRepository.GetCongregationById(campReservation.CrossroadsSite)).Name } }; _contactRepository.UpdateContact(Convert.ToInt32(campReservation.ContactId), updateToDictionary); participant = _participantRepository.GetParticipant(Convert.ToInt32(campReservation.ContactId)); } // Save shirt size if set var configuration = MpObjectAttributeConfigurationFactory.Contact(); _objectAttributeService.SaveObjectAttributes(contactId, campReservation.AttributeTypes, campReservation.SingleAttributes, configuration); // Save students in selected grade group var group = _groupRepository.GetGradeGroupForContact(contactId, _apiUserRepository.GetToken()); if (group.Status && group.Value.GroupId != campReservation.CurrentGrade) { _groupRepository.endDateGroupParticipant(group.Value.GroupParticipantId, group.Value.GroupId, DateTime.Now); _groupRepository.addParticipantToGroup(participant.ParticipantId, campReservation.CurrentGrade, _configurationWrapper.GetConfigIntValue("Group_Role_Default_ID"), false, DateTime.Now); } else if (!group.Status) { _groupRepository.addParticipantToGroup(participant.ParticipantId, campReservation.CurrentGrade, _configurationWrapper.GetConfigIntValue("Group_Role_Default_ID"), false, DateTime.Now); } // Check if this person is already an event participant var eventParticipant = _eventParticipantRepository.GetEventParticipantEligibility(eventId, contactId); var currentlyActive = (eventParticipant != null && (eventParticipant.EndDate == null || eventParticipant.EndDate >= DateTime.Now)); var rulesPass = true; if (!currentlyActive) { rulesPass = _campRules.VerifyCampRules(eventId, campReservation.Gender); } // ALL OF THE BELOW CODE SHOULD ONLY HAPPEN IF THE RULES PASS if (rulesPass) { //Create eventParticipant int eventParticipantId; // This is a new event participant, determine their pending timeout and create their entry in the database if (eventParticipant == null) { var endDate = DetermineEndDate(eventId); eventParticipantId = _eventRepository.RegisterInterestedParticipantWithEndDate(participant.ParticipantId, eventId, endDate); } else { eventParticipantId = eventParticipant.EventParticipantId; // If the participant had previously started an application which expired, update its End Date now if (eventParticipant.EndDate != null && eventParticipant.EndDate < DateTime.Now) { var endDate = DetermineEndDate(eventId); _eventRepository.UpdateParticipantEndDate(eventParticipantId, endDate); } } var crossroadsSite = _congregationRepository.GetCongregationById(campReservation.CrossroadsSite); //form response var answers = new List <MpFormAnswer> { new MpFormAnswer { Response = campReservation.SchoolAttendingNext, FieldId = _configurationWrapper.GetConfigIntValue("SummerCampForm.SchoolAttendingNextYear"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = campReservation.RoomMate, FieldId = _configurationWrapper.GetConfigIntValue("SummerCampForm.PreferredRoommate"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = crossroadsSite.Name, FieldId = _configurationWrapper.GetConfigIntValue("SummerCampForm.CamperCongregation"), EventParticipantId = eventParticipantId } }; var formId = _configurationWrapper.GetConfigIntValue("SummerCampFormID"); var formResponse = new MpFormResponse { ContactId = contactId, FormId = formId, FormAnswers = answers, EventId = eventId }; _formSubmissionRepository.SubmitFormResponse(formResponse); return(campReservation); } throw new ApplicationException("Rules do not pass!"); }
public void SaveCamperEmergencyContactInfo(List <CampEmergencyContactDTO> emergencyContacts, int eventId, int contactId, string token) { var loggedInContact = _contactRepository.GetMyProfile(token); var family = _contactRepository.GetHouseholdFamilyMembers(loggedInContact.Household_ID); family.AddRange(_contactRepository.GetOtherHouseholdMembers(loggedInContact.Household_ID)); if (family.Where(f => f.ContactId == contactId).ToList().Count <= 0) { throw new ContactNotFoundException(contactId); } var participant = _participantRepository.GetParticipant(contactId); var eventParticipantId = _eventRepository.SafeRegisterParticipant(eventId, participant.ParticipantId); var answers = new List <MpFormAnswer>(); if (emergencyContacts.Count == 1) { var existingEmergencyContacts = GetCamperEmergencyContactInfo(eventId, contactId, token); if (existingEmergencyContacts.Count > 1) { emergencyContacts.Add(new CampEmergencyContactDTO { Email = "", FirstName = "", LastName = "", MobileNumber = "", PrimaryEmergencyContact = false, Relationship = "" }); } } foreach (var emergencyContact in emergencyContacts) { answers.AddRange(new List <MpFormAnswer> { new MpFormAnswer { Response = emergencyContact.FirstName, FieldId = emergencyContact.PrimaryEmergencyContact ? _configurationWrapper.GetConfigIntValue("SummerCampForm.EmergencyContactFirstName") : _configurationWrapper.GetConfigIntValue("SummerCampForm.AdditionalEmergencyContactFirstName"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = emergencyContact.LastName, FieldId = emergencyContact.PrimaryEmergencyContact ? _configurationWrapper.GetConfigIntValue("SummerCampForm.EmergencyContactLastName") : _configurationWrapper.GetConfigIntValue("SummerCampForm.AdditionalEmergencyContactLastName"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = emergencyContact.MobileNumber, FieldId = emergencyContact.PrimaryEmergencyContact ? _configurationWrapper.GetConfigIntValue("SummerCampForm.EmergencyContactMobilePhone") : _configurationWrapper.GetConfigIntValue("SummerCampForm.AdditionalEmergencyContactMobilePhone"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = emergencyContact.Email, FieldId = emergencyContact.PrimaryEmergencyContact ? _configurationWrapper.GetConfigIntValue("SummerCampForm.EmergencyContactEmail") : _configurationWrapper.GetConfigIntValue("SummerCampForm.AdditionalEmergencyContactEmail"), EventParticipantId = eventParticipantId }, new MpFormAnswer { Response = emergencyContact.Relationship, FieldId = emergencyContact.PrimaryEmergencyContact ? _configurationWrapper.GetConfigIntValue("SummerCampForm.EmergencyContactRelationship") : _configurationWrapper.GetConfigIntValue("SummerCampForm.AdditionalEmergencyContactRelationship"), EventParticipantId = eventParticipantId } }); } var formId = _configurationWrapper.GetConfigIntValue("SummerCampFormID"); var formResponse = new MpFormResponse { ContactId = contactId, FormId = formId, FormAnswers = answers, EventId = eventId }; _formSubmissionRepository.SubmitFormResponse(formResponse); }
public void SubmitFormResponse() { var expectedResponseDict = new Dictionary <string, object> { { "Form_ID", _mockForm.FormId }, { "Response_Date", DateTime.Today }, { "Contact_ID", _mockForm.ContactId }, { "Opportunity_ID", _mockForm.OpportunityId }, { "Opportunity_Response", _mockForm.OpportunityResponseId }, { "Pledge_Campaign_ID", null } }; var expectedAnswerDict1 = new Dictionary <string, object> { { "Form_Response_ID", _mockAnswer1.FormResponseId }, { "Form_Field_ID", _mockAnswer1.FieldId }, { "Response", _mockAnswer1.Response }, { "Opportunity_Response", _mockAnswer1.OpportunityResponseId }, { "Event_Participant_ID", null } }; var expectedAnswerDict2 = new Dictionary <string, object> { { "Form_Response_ID", _mockAnswer2.FormResponseId }, { "Form_Field_ID", _mockAnswer2.FieldId }, { "Response", _mockAnswer2.Response }, { "Opportunity_Response", _mockAnswer2.OpportunityResponseId }, { "Event_Participant_ID", null } }; var expectedAnswerDict3 = new Dictionary <string, object> { { "Form_Response_ID", _mockAnswer3.FormResponseId }, { "Form_Field_ID", _mockAnswer3.FieldId }, { "Response", _mockAnswer3.Response }, { "Opportunity_Response", _mockAnswer3.OpportunityResponseId }, { "Event_Participant_ID", null } }; _ministryPlatformService.Setup(m => m.CreateRecord(formResponsePageId, expectedResponseDict, It.IsAny <string>(), true)).Returns(responseId); _ministryPlatformService.Setup(m => m.CreateRecord(formAnswerPageId, expectedAnswerDict1, It.IsAny <string>(), true)); _ministryPlatformService.Setup(m => m.CreateRecord(formAnswerPageId, expectedAnswerDict2, It.IsAny <string>(), true)); _ministryPlatformService.Setup(m => m.CreateRecord(formAnswerPageId, expectedAnswerDict3, It.IsAny <string>(), true)); _ministryPlatformRest.Setup(m => m.UsingAuthenticationToken(It.IsAny <string>())).Returns(_ministryPlatformRest.Object); var formResult = new List <MpFormResponse>(); var f = new MpFormResponse { FormResponseId = 0 }; formResult.Add(f); _ministryPlatformRest.Setup(m => m.Search <MpFormResponse>(It.IsAny <string>(), It.IsAny <string>(), null, true)).Returns(formResult); var ansResult = new List <MpFormAnswer>(); var a = new MpFormAnswer { FormResponseAnswerId = 0 }; _ministryPlatformRest.Setup(m => m.Search <MpFormAnswer>(It.IsAny <string>(), It.IsAny <string>(), null, true)).Returns(ansResult); var result = _fixture.SubmitFormResponse(_mockForm); Assert.AreEqual(responseId, result); _ministryPlatformService.VerifyAll(); }