private Dictionary<int, ContactAttributeTypeDTO> TranslateToAttributeTypeDtos(List<ContactAttribute> mpContactAttributes, List<Attribute> mpAttributes)
        {
            var mpFilteredAttributes = mpAttributes.Where(x => x.PreventMultipleSelection == false).ToList();

            var attributeTypesDictionary = mpFilteredAttributes
                .Select(x => new {x.AttributeTypeId, x.AttributeTypeName})
                .Distinct()
                .ToDictionary(mpAttributeType => mpAttributeType.AttributeTypeId,
                              mpAttributeType => new ContactAttributeTypeDTO()
                              {
                                  AttributeTypeId = mpAttributeType.AttributeTypeId,
                                  Name = mpAttributeType.AttributeTypeName,
                              });


            foreach (var mpAttribute in mpFilteredAttributes)
            {
                var contactAttribute = new ContactAttributeDTO()
                {
                    AttributeId = mpAttribute.AttributeId,
                    Name = mpAttribute.Name,
                    SortOrder = mpAttribute.SortOrder,
                    Selected = false,
                    Category = mpAttribute.Category,
                    CategoryDescription = mpAttribute.CategoryDescription
                };

                attributeTypesDictionary[mpAttribute.AttributeTypeId].Attributes.Add(contactAttribute);
            }

            foreach (var mpContactAttribute in mpContactAttributes)
            {
                if (!attributeTypesDictionary.ContainsKey(mpContactAttribute.AttributeTypeId))
                {
                    continue;
                }

                var contactAttributeType = attributeTypesDictionary[mpContactAttribute.AttributeTypeId];
                var contactAttribute = contactAttributeType.Attributes.First(x => x.AttributeId == mpContactAttribute.AttributeId);
                contactAttribute.StartDate = mpContactAttribute.StartDate;
                contactAttribute.EndDate = mpContactAttribute.EndDate;
                contactAttribute.Notes = mpContactAttribute.Notes;
                contactAttribute.Selected = true;
            }

            return attributeTypesDictionary;
        }
        private static ContactAttribute TranslateMultiToMPAttribute(ContactAttributeDTO contactAttribute, ContactAttributeTypeDTO contactAttributeType)
        {
            var mpContactAttribute = new ContactAttribute();
            if (contactAttribute == null)
            {
                return mpContactAttribute;
            }
            mpContactAttribute.AttributeId = contactAttribute.AttributeId;
            mpContactAttribute.AttributeTypeId = contactAttributeType != null ? contactAttributeType.AttributeTypeId : 0;
            mpContactAttribute.AttributeTypeName = contactAttributeType != null ? contactAttributeType.Name : string.Empty;
            mpContactAttribute.StartDate = contactAttribute.StartDate;
            mpContactAttribute.EndDate = contactAttribute.EndDate;
            mpContactAttribute.Notes = contactAttribute.Notes;

            return mpContactAttribute;
        }
        public void SaveContactMultiAttribute(string token, int contactId, ContactAttributeDTO contactAttribute)
        {
            var mpContactAttribute = TranslateMultiToMPAttribute(contactAttribute, null);
            var persistedAttributes = _mpContactAttributeService.GetCurrentContactAttributes(token, contactId, true, contactAttribute.AttributeId);

            if (persistedAttributes.Count >= 1)
            {
                mpContactAttribute.ContactAttributeId = persistedAttributes[0].ContactAttributeId;
            }


            SaveAttribute(contactId, mpContactAttribute, token, true);
        }