/// <summary> /// To map booking and contact records /// </summary> /// <param name="surveyResponse"></param> /// <param name="answers"></param> private void MapBookingContact(Entity surveyResponse, Response response) { trace.Trace("Processing MapBookingContact - start"); var bookingNumber = AnswerHelper.GetBookingNumber(response.Answers, trace); var sourceMarket = AnswerHelper.GetSourceMarket(response.Answers, trace); var tourOperator = AnswerHelper.GetTourOperator(response.Answers, trace); var brand = AnswerHelper.GetBrand(response.Answers, trace); var lastName = ContactHelper.GetLastName(response.Contact, trace); if (string.IsNullOrWhiteSpace(bookingNumber)) { return; } if (string.IsNullOrWhiteSpace(sourceMarket)) { return; } if (string.IsNullOrWhiteSpace(tourOperator)) { return; } if (string.IsNullOrWhiteSpace(brand)) { return; } FetchBookingContact(bookingNumber, sourceMarket, tourOperator, brand, lastName, surveyResponse); trace.Trace("Processing MapBookingContact - end"); }
/// <summary> /// To map Gateway information to survey record /// </summary> /// <param name="surveyResponse"></param> /// <param name="response"></param> private void MapGateway(Entity surveyResponse, Response response) { trace.Trace("Processing MapGateway - start"); surveyResponse[Attributes.SurveyResponse.GatewayId] = null; if (response.Answers == null || response.Answers.Count == 0) { return; } var gatewayCode = AnswerHelper.GetTcdisDestinationAirport(response.Answers, payloadSurvey.Trace); if (string.IsNullOrWhiteSpace(gatewayCode)) { return; } var query = $@"<fetch distinct='false' mapping='logical' output-format='xml-platform' version='1.0'> <entity name='tc_gateway'> <attribute name='tc_gatewayid'/> <filter type='and'> <condition attribute='tc_iata' value='{gatewayCode}' operator='eq'/> </filter> </entity> </fetch>"; var entColGateways = CommonXrm.RetrieveMultipleRecordsFetchXml(query, payloadSurvey.CrmService); if (entColGateways == null || entColGateways.Entities.Count == 0) { return; } surveyResponse.Attributes[Attributes.SurveyResponse.GatewayId] = new EntityReference(EntityName.Gateway, entColGateways.Entities[0].Id); trace.Trace("Processing MapGateway - end"); }
/// <summary> /// To create Feedback records /// </summary> /// <param name="answersToCreate"></param> /// <param name="surveyId"></param> private void CreateFeedback(List <Answer> answersToCreate, Guid surveyId) { trace.Trace("Processing CreateFeedback - start"); if (answersToCreate == null || answersToCreate.Count == 0 || surveyId == Guid.Empty) { return; } for (int i = 0; i < answersToCreate.Count; i++) { var feedbackEntity = AnswerHelper.GetFeedbackEntityFromPayload(answersToCreate[i], payloadSurvey.Trace); feedbackEntity.Attributes[Attributes.SurveyResponseFeedback.SurveyFeedbackId] = new EntityReference(EntityName.SurveyResponse, surveyId); CommonXrm.CreateEntity(feedbackEntity, payloadSurvey.CrmService); } trace.Trace("Processing CreateFeedback - end"); }
/// <summary> /// To process answer records /// </summary> /// <param name="answers"></param> /// <param name="existingFeedback"></param> /// <param name="isSurveyCreate"></param> /// <returns></returns> private EntityCollection ProcessAnswers(List <Answer> answers, Dictionary <Guid, string> existingFeedback, bool isCreateSurvey) { trace.Trace("Processing ProcessAnswers - start"); var feedbackCollection = new EntityCollection(); if (answers != null) { for (int i = 0; i < answers.Count; i++) { trace.Trace("Processing Answer " + i + " - start"); var feedback = AnswerHelper.GetFeedbackEntityFromPayload(answers[i], existingFeedback, isCreateSurvey, trace); if (feedback != null) { feedbackCollection.Entities.Add(feedback); } trace.Trace("Processing Answer " + i + " - end"); } } trace.Trace("Processing ProcessAnswers - end"); return(feedbackCollection); }