Пример #1
0
        public TemplateViewModel FindTemplateToDisplay(ParticipantJourneySearchViewModel psm, int formID, int selectedModalityId, bool embed, TemplateFieldMode fieldMode, out string message)
        {
            TemplateViewModel model = null;

            using (var unitOfWork = CreateUnitOfWork())
            {
                ParticipantJourneyModality participantJourneyModality = RetrieveParticipantJourneyModality(psm, formID, selectedModalityId, out message);

                if (participantJourneyModality != null)
                {
                    var template = participantJourneyModality.TemplateID.HasValue ? unitOfWork.FormRepository.GetTemplate(participantJourneyModality.TemplateID.Value) : FindLatestTemplate(formID, unitOfWork);

                    if (template != null)
                    {
                        model       = TemplateViewModel.CreateFromObject(template, Constants.TemplateFieldMode.INPUT);
                        model.Embed = embed;

                        bool valueRequiredForRegistration = false;

                        if (Internal_Form_Type_Registration.Equals(model.InternalFormType))
                        {
                            if (participantJourneyModality.EntryId == Guid.Empty)
                            {
                                valueRequiredForRegistration = true;
                            }
                        }

                        foreach (var field in model.Fields)
                        {
                            field.Mode            = fieldMode;
                            field.ParticipantNric = psm.Nric;
                            field.IsValueRequiredForRegistration = valueRequiredForRegistration;
                            field.EntryId = participantJourneyModality.EntryId.ToString();
                        }
                    }
                }

                else
                {
                    throw new Exception("No participantJourneyModality found");
                }

                return(model);
            }
        }
Пример #2
0
        protected override void HandleAdditionalInsert(TemplateViewModel templateView, Template template, FormCollection formCollection, Guid entryId, IDictionary <int, string> submissionFields)
        {
            IDictionary <string, object> values = new Dictionary <string, object>();

            foreach (var field in templateView.Fields)
            {
                var value = field.SubmittedValue(formCollection);

                if (!string.IsNullOrEmpty(field.RegistrationFieldName))
                {
                    values.Add(field.RegistrationFieldName, value);
                }
            }

            if (Internal_Form_Type_Registration.Equals(template.Form.InternalFormType))
            {
                //update participant
                Participant participant = UnitOfWork.Participants.FindParticipant(psm.Nric, psm.PHSEventId);
                if (participant != null)
                {
                    participant.FullName     = getStringValue(values, Registration_Field_Name_FullName);
                    participant.HomeNumber   = getStringValue(values, Registration_Field_Name_HomeNumber);
                    participant.MobileNumber = getStringValue(values, Registration_Field_Name_MobileNumber);
                    participant.DateOfBirth  = getDateTimeValue(values, Registration_Field_Name_DateOfBirth);
                    participant.Language     = getStringValue(values, Registration_Field_Name_Language);
                    participant.Gender       = getStringValue(values, Registration_Field_Name_Gender);
                    participant.Citizenship  = getStringValue(values, Registration_Field_Name_Citizenship);
                    participant.Race         = getStringValue(values, Registration_Field_Name_Race);
                    participant.Salutation   = getStringValue(values, Registration_Field_Name_Salutation);

                    string addressValue = getStringValue(values, Registration_Field_Name_Address);

                    if (!string.IsNullOrEmpty(addressValue))
                    {
                        AddressViewModel address = addressValue.FromJson <AddressViewModel>();

                        participant.Address    = address.ConvertToOneLineAddress();
                        participant.PostalCode = address.ZipCode;
                    }

                    else
                    {
                        participant.Address    = "";
                        participant.PostalCode = "";
                    }
                }
            }

            ParticipantJourneyModality participantJourneyModality = FindParticipantJourneyModality();

            if (participantJourneyModality != null)
            {
                if (participantJourneyModality.EntryId == Guid.Empty)
                {
                    UnitOfWork.ParticipantJourneyModalities.UpdateParticipantJourneyModality(participantJourneyModality, templateView.TemplateID.Value, entryId);
                }
            }
            else
            {
                throw new Exception("No participantJourneyModality found");
            }

            foreach (var field in templateView.Fields)
            {
                if (field.ConditionTemplateFieldID.HasValue)
                {
                    if (!isConditionalFieldRequired(field, submissionFields))
                    {
                        continue;
                    }
                }

                if (field.SummaryFieldName != null && field.SummaryFieldName.Length > 0 &&
                    field.SummaryType != null && field.SummaryType.Length > 0)
                {
                    Summary summary = null;
                    summary = UnitOfWork.Summaries.FindSummary(participantJourneyModality.PHSEventID,
                                                               participantJourneyModality.ParticipantID,
                                                               participantJourneyModality.ModalityID, (int)field.TemplateFieldID);
                    if (summary == null)
                    {
                        summary                     = new Summary();
                        summary.Label               = field.SummaryFieldName;
                        summary.ModalityID          = participantJourneyModality.ModalityID;
                        summary.ParticipantID       = participantJourneyModality.ParticipantID;
                        summary.PHSEventID          = participantJourneyModality.PHSEventID;
                        summary.SummaryType         = field.SummaryType;
                        summary.SummaryLabel        = field.Label;
                        summary.SummaryValue        = field.InputValue;
                        summary.TemplateFieldID     = (int)field.TemplateFieldID;
                        summary.StandardReferenceID = field.StandardReferenceID;

                        UnitOfWork.Summaries.Add(summary);
                    }
                    else
                    {
                        summary.Label               = field.SummaryFieldName;
                        summary.SummaryType         = field.SummaryType;
                        summary.SummaryLabel        = field.Label;
                        summary.SummaryValue        = field.InputValue;
                        summary.StandardReferenceID = field.StandardReferenceID;
                    }
                }
            }
        }