/// <summary>
        /// jelszó módosítás
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CompanyGroup.Dto.PartnerModule.ChangePassword ChangePassword(CompanyGroup.Dto.PartnerModule.ChangePasswordRequest request)
        {
            try
            {
                //ha üres a látogató azonosító
                if (String.IsNullOrEmpty(request.VisitorId))
                {
                    return new CompanyGroup.Dto.PartnerModule.ChangePassword(false, false, CompanyGroup.Domain.Resources.Messages.validationVisitorIdCannotBeNull, new CompanyGroup.Dto.PartnerModule.Visitor());
                }

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

                //látogató belépésének ellenörzése, csak a személyi belépések esetén lehetséges a jelszómódosítás
                if (!visitor.LoginType.Equals(LoginType.Person))
                {
                    return new CompanyGroup.Dto.PartnerModule.ChangePassword(false, false, CompanyGroup.Domain.Resources.Messages.verification_ChangePasswordNotAllowed, new VisitorToVisitor().Map(visitor));
                }

                //lehetséges-e a megadott adatokkal a jelszómódosítás művelet?
                CompanyGroup.Domain.PartnerModule.ChangePasswordVerify verify = contactPersonRepository.VerifyChangePassword(visitor.PersonId, request.UserName, request.OldPassword, request.NewPassword, CompanyGroup.Domain.Core.Constants.DataAreaIdHrp);

                //ha nem lehetséges a jelszómódosítás, akkor kilépés hibaüzenettel
                if (!verify.Success)
                {
                    return new CompanyGroup.Dto.PartnerModule.ChangePassword(false, false, verify.Message, new VisitorToVisitor().Map(visitor));
                }

                //jelszómódosítás művelet előkészítése
                CompanyGroup.Domain.PartnerModule.ChangePasswordCreate changePasswordCreate = new CompanyGroup.Domain.PartnerModule.ChangePasswordCreate()
                                                                                                  {
                                                                                                      ContactPersonId = visitor.PersonId,
                                                                                                      DataAreaId = CompanyGroup.Domain.Core.Constants.DataAreaIdHrp,
                                                                                                      NewPassword = request.NewPassword,
                                                                                                      OldPassword = request.OldPassword,
                                                                                                      WebLoginName = request.UserName
                                                                                                  };
                //jelszómódosítás AX
                CompanyGroup.Domain.PartnerModule.ChangePasswordCreateResult changePasswordCreateResult = contactPersonRepository.Change(changePasswordCreate);

                if (changePasswordCreateResult.Code == 0)
                {
                    changePasswordCreateResult.Code = 1;
                    changePasswordCreateResult.Message = "The operation successfully completed!";
                }

                //jelszómódosítás log hozzáadás
                CompanyGroup.Domain.PartnerModule.ChangePassword changePassword = new CompanyGroup.Domain.PartnerModule.ChangePassword()
                                                                                    {
                                                                                        CreatedDate = DateTime.Now,
                                                                                        DataAreaId = CompanyGroup.Domain.Core.Constants.DataAreaIdHrp,
                                                                                        NewPassword = request.NewPassword,
                                                                                        OldPassword = request.OldPassword,
                                                                                        UserName = request.UserName,
                                                                                        Status = changePasswordCreateResult.Succeeded ? Domain.PartnerModule.ChangePasswordStatus.Active : Domain.PartnerModule.ChangePasswordStatus.Failed,
                                                                                        VisitorId = visitor.Id.ToString(),
                                                                                        Id = MongoDB.Bson.ObjectId.GenerateNewId()
                                                                                    };

                changePasswordRepository.Add(changePassword);

                bool sendMailSucceeded = false;

                //levél elküldése sikeres esetben
                if (changePasswordCreateResult.Succeeded)
                {
                    sendMailSucceeded = this.SendChangePasswordMail(changePassword, visitor);
                }
                else
                {
                    sendMailSucceeded = this.SendChangePasswordFailedMail(changePassword, visitor, changePasswordCreateResult);
                }

                string message = (changePasswordCreateResult.Succeeded && !sendMailSucceeded) ? CompanyGroup.Domain.Resources.Messages.verification_ChangePasswordMailSendFailed : changePasswordCreateResult.Message;

                return new CompanyGroup.Dto.PartnerModule.ChangePassword(changePasswordCreateResult.Succeeded, sendMailSucceeded, message, new VisitorToVisitor().Map(visitor));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        /// <summary>
        /// jelszómódosítás visszavonása
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public CompanyGroup.Dto.PartnerModule.UndoChangePassword UndoChangePassword(CompanyGroup.Dto.PartnerModule.UndoChangePasswordRequest request)
        {
            if (String.IsNullOrEmpty(request.Id))
            {
                return new CompanyGroup.Dto.PartnerModule.UndoChangePassword() { Message = CompanyGroup.Domain.Resources.Messages.validation_ChangePasswordLogIdCannotBeNull, Succeeded = false };
            }

            //visszavonandó jelszómódosítás
            CompanyGroup.Domain.PartnerModule.ChangePassword chagePassword = changePasswordRepository.GetItemByKey(request.Id);

            //visszavonandó jelszómódosítás státuszának passzívra állítása
            changePasswordRepository.SetStatus(request.Id, Domain.PartnerModule.ChangePasswordStatus.Passive);

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

            //ha üres a látogató azonosító
            if (visitor.Id.Equals(MongoDB.Bson.ObjectId.Empty))
            {
                return new CompanyGroup.Dto.PartnerModule.UndoChangePassword() { Message = CompanyGroup.Domain.Resources.Messages.validationVisitorIdCannotBeNull, Succeeded = false };
            }

            //jelszómódosítás művelet előkészítése
            CompanyGroup.Domain.PartnerModule.ChangePasswordCreate changePasswordCreate = new CompanyGroup.Domain.PartnerModule.ChangePasswordCreate()
            {
                ContactPersonId = visitor.PersonId,
                DataAreaId = chagePassword.DataAreaId,
                NewPassword = chagePassword.OldPassword,
                OldPassword = chagePassword.NewPassword,
                WebLoginName = chagePassword.UserName
            };
            //jelszómódosítás AX (visszaállítás)
            CompanyGroup.Domain.PartnerModule.ChangePasswordCreateResult changePasswordCreateResult = changePasswordRepository.Change(changePasswordCreate);

            //jelszómódosítás log hozzáadás
            CompanyGroup.Domain.PartnerModule.ChangePassword changePasswordLog = new CompanyGroup.Domain.PartnerModule.ChangePassword()
            {
                CreatedDate = DateTime.Now,
                DataAreaId = chagePassword.DataAreaId,
                NewPassword = changePasswordCreate.NewPassword,
                OldPassword = changePasswordCreate.OldPassword,
                UserName = changePasswordCreate.WebLoginName,
                Status = Domain.PartnerModule.ChangePasswordStatus.Active,
                VisitorId = visitor.Id.ToString(),
                Id = MongoDB.Bson.ObjectId.GenerateNewId()
            };

            changePasswordRepository.Add(changePasswordLog);

            return new CompanyGroup.Dto.PartnerModule.UndoChangePassword() { Message = CompanyGroup.Domain.Resources.Messages.validation_ChangePasswordLogIdCannotBeNull, Succeeded = true };
        }