public Domain.Enums.ExternalUserPasswordErrors UserExtChangePassword(
            String OldPassword, String NewPassword, Int64 UserId)
        {
            Domain.TicketUser Usr = Manager.Get <Domain.TicketUser>(UserId);

            if (Usr == null || Usr.Id <= 0)
            {
                return(Domain.Enums.ExternalUserPasswordErrors.UserNotFound);
            }

            if (Usr.Code != AuthenticationHelper.Encrypt(OldPassword))
            {
                return(Domain.Enums.ExternalUserPasswordErrors.InvalidPassword);
            }

            Usr.UpdateMetaInfo(CurrentPerson, UC.IpAddress, UC.ProxyIpAddress);

            Usr.Code = AuthenticationHelper.Encrypt(NewPassword);

            Manager.SaveOrUpdate <Domain.TicketUser>(Usr);

            return(Domain.Enums.ExternalUserPasswordErrors.none);
        }
        public Domain.Enums.AccessRecoverError UserRecover(String Mail,
                                                           Domain.DTO.DTO_NotificationSettings Settings)
        {
            if (!MailCheckFormat(Mail))
            {
                return(Domain.Enums.AccessRecoverError.MailFormat);
            }

            Domain.TicketUser User = Manager.GetAll <Domain.TicketUser>(u => u.mail == Mail || u.Person != null && u.Person.Mail == Mail).FirstOrDefault();

            if (User == null || User.Id <= 0)
            {
                return(Domain.Enums.AccessRecoverError.MailNotFound);
            }

            if (!User.MailChecked)
            {
                return(Domain.Enums.AccessRecoverError.MailNotChecked);
            }

            //Setto nuova password per l'utente
            String Pwd        = PasswordGetNew();
            String EncodedPwd = AuthenticationHelper.Encrypt(Pwd);


            User.Code = EncodedPwd;
            User.UpdateMetaInfo(CurrentPerson, UC.IpAddress, UC.ProxyIpAddress);
            Manager.SaveOrUpdate <Domain.TicketUser>(User);

            if (!NotificationSendRecover(User, Settings, Pwd))
            {
                return(Domain.Enums.AccessRecoverError.InternalError);
            }


            return(Domain.Enums.AccessRecoverError.none);
        }