/// <summary>
        /// kapcsolattartó lekérdezése azonosító alapján
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CompanyGroup.Dto.PartnerModule.ContactPerson GetContactPersonById(CompanyGroup.Dto.PartnerModule.GetContactPersonByIdRequest request)
        {
            try
            {
                //ha üres a látogató azonosító
                CompanyGroup.Helpers.DesignByContract.Require(!String.IsNullOrEmpty(request.VisitorId), CompanyGroup.Domain.Resources.Messages.validationVisitorIdCannotBeNull);

                //látogató kikeresése
                CompanyGroup.Domain.PartnerModule.Visitor visitor = this.GetVisitor(request.VisitorId);

                CompanyGroup.Domain.PartnerModule.ContactPerson contactPerson = contactPersonRepository.GetContactPerson(visitor.PersonId, "hrp");

                CompanyGroup.Dto.PartnerModule.ContactPerson result = new ContactPersonToContactPerson().MapToPartnerModuleContactPerson(contactPerson);

                return result;
            }
            catch (Exception ex) 
            { 
                throw ex; 
            }
        }
        /// <summary>
        /// kapcsolattartó adatainak módosítása
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CompanyGroup.Dto.RegistrationModule.ContactPersons UpdateContactPerson(CompanyGroup.Dto.ServiceRequest.UpdateContactPerson request)
        {
            try
            {
                CompanyGroup.Helpers.DesignByContract.Require((request != null), "Registration updateContactPerson request cannot be null or empty!");

                if (request.ContactPerson.Positions == null)
                {
                    request.ContactPerson.Positions = new List<string>();
                }

                CompanyGroup.Domain.RegistrationModule.ContactPerson contactPerson = new ContactPersonToContactPerson().MapDtoToDomain(request.ContactPerson);

                registrationRepository.UpdateContactPerson(request.RegistrationId, contactPerson);

                CompanyGroup.Domain.RegistrationModule.Registration registration = registrationRepository.GetByKey(request.RegistrationId);

                List<CompanyGroup.Dto.RegistrationModule.ContactPerson> contactPersonList = registration.ContactPersonList.ConvertAll(x => new ContactPersonToContactPerson().MapDomainToDto(x));

                //látogató kiolvasása 
                CompanyGroup.Domain.PartnerModule.Visitor visitor = this.GetVisitor(request.VisitorId);

                CompanyGroup.Dto.RegistrationModule.ContactPersons response = new CompanyGroup.Dto.RegistrationModule.ContactPersons(contactPersonList, new CompanyGroup.ApplicationServices.PartnerModule.VisitorToVisitor().Map(visitor));

                return response;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// kapcsolattartó mentése
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CompanyGroup.Dto.RegistrationModule.ContactPersons SaveContactPerson(CompanyGroup.Dto.ServiceRequest.SaveContactPerson request)
        {
            try
            {
                CompanyGroup.Helpers.DesignByContract.Require((request != null), "Registration addBankAccount request cannot be null or empty!");

                request.ContactPerson.Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();

                request.ContactPerson.ContactPersonId = request.ContactPerson.ContactPersonId ?? String.Empty;

                if (request.ContactPerson.Positions == null)
                {
                    request.ContactPerson.Positions = new List<string>();
                }

                //csak akkor kell hozzáadni a kapcsolattartót, ha a kötelező mezők ki vannak töltve
                if (!String.IsNullOrEmpty(request.ContactPerson.Email) && !String.IsNullOrEmpty(request.ContactPerson.FirstName) && !String.IsNullOrEmpty(request.ContactPerson.LastName)
                    && !String.IsNullOrEmpty(request.ContactPerson.Password) && !String.IsNullOrEmpty(request.ContactPerson.UserName))
                {
                    CompanyGroup.Domain.RegistrationModule.ContactPerson contactPerson = new ContactPersonToContactPerson().MapDtoToDomain(request.ContactPerson);

                    registrationRepository.AddContactPerson(request.RegistrationId, contactPerson);
                }
                //látogató kiolvasása 
                CompanyGroup.Domain.PartnerModule.Visitor visitor = this.GetVisitor(request.VisitorId);

                //teljes regisztráció kiolvasása azonosító alapján
                CompanyGroup.Domain.RegistrationModule.Registration registration = registrationRepository.GetByKey(request.RegistrationId);

                //kapcsolattartó konvertálása DTO-ra
                List<CompanyGroup.Dto.RegistrationModule.ContactPerson> contactPersonList = registration.ContactPersonList.ConvertAll(x => new ContactPersonToContactPerson().MapDomainToDto(x));

                //kapcsolattartó lista
                CompanyGroup.Dto.RegistrationModule.ContactPersons response = new CompanyGroup.Dto.RegistrationModule.ContactPersons(contactPersonList, new CompanyGroup.ApplicationServices.PartnerModule.VisitorToVisitor().Map(visitor));

                return response;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// kapcsolattartó hozzáadása
        /// </summary>
        /// <param name="request"></param>
        public CompanyGroup.Dto.RegistrationModule.ContactPersons AddContactPerson(CompanyGroup.Dto.ServiceRequest.AddContactPerson request)
        {
            try
            {
                CompanyGroup.Helpers.DesignByContract.Require((request != null), "Registration addBankAccount request cannot be null or empty!");

                request.ContactPerson.Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();

                request.ContactPerson.ContactPersonId = request.ContactPerson.ContactPersonId ?? String.Empty;

                if (request.ContactPerson.Positions == null)
                {
                    request.ContactPerson.Positions = new List<string>();
                }

                CompanyGroup.Domain.RegistrationModule.ContactPerson contactPerson = new ContactPersonToContactPerson().MapDtoToDomain(request.ContactPerson);

                registrationRepository.AddContactPerson(request.RegistrationId, contactPerson);

                CompanyGroup.Domain.PartnerModule.Visitor visitor = this.GetVisitor(request.VisitorId);

                CompanyGroup.Domain.RegistrationModule.Registration registration = registrationRepository.GetByKey(request.RegistrationId);

                List<CompanyGroup.Dto.RegistrationModule.ContactPerson> contactPersonList = registration.ContactPersonList.ConvertAll(x => new ContactPersonToContactPerson().MapDomainToDto(x));

                CompanyGroup.Dto.RegistrationModule.ContactPersons response = new CompanyGroup.Dto.RegistrationModule.ContactPersons(contactPersonList, new CompanyGroup.ApplicationServices.PartnerModule.VisitorToVisitor().Map(visitor));

                return response;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }