protected override DriverResult Editor(LoyalzooUserPart part, dynamic shapeHelper)
        {
            if (currentControllerAction == CONTROLLER_ACTION)
            {
                return(null);                                             // nulla deve essere mostrato in fase di registrazione
            }
            return(ContentShape("Parts_LoyalzooUserSettings_Edit", () => {
                var model = new LoyalzooUserSettingsViewModel {
                    LoyalzooUsername = part.LoyalzooUsername,
                    LoyalzooPassword = "",
                    CustomerSessionId = part.CustomerSessionId,
                    PartId = part.Id
                };

                return shapeHelper.EditorTemplate(TemplateName: TemplateName, Model: model, Prefix: Prefix);
            }
                                ));
        }
        protected override DriverResult Editor(LoyalzooUserPart part, IUpdateModel updater, dynamic shapeHelper)
        {
            if (currentControllerAction == CONTROLLER_ACTION)
            {
                return(null);                                              // nulla deve essere mostrato in fase di registrazione
            }
            string oldPwd = part.LoyalzooPassword;
            string oldId  = part.CustomerSessionId;

            LoyalzooUserSettingsViewModel userVM = new LoyalzooUserSettingsViewModel();

            if (updater.TryUpdateModel(userVM, Prefix, null, null))
            {
                part.LoyalzooUsername  = userVM.LoyalzooUsername;
                part.CustomerSessionId = userVM.CustomerSessionId;

                if (!String.IsNullOrWhiteSpace(userVM.LoyalzooPassword))
                {
                    string encryptedPwd = Convert.ToBase64String(_encryptionService.Encode(Encoding.UTF8.GetBytes(userVM.LoyalzooPassword)));

                    if (encryptedPwd != oldPwd && userVM.CustomerSessionId == oldId)
                    {
                        part.CustomerSessionId = "";
                    }

                    part.LoyalzooPassword = encryptedPwd;
                }
                else
                {
                    part.LoyalzooPassword = oldPwd;
                }

                // Se l'utente ha tentato di cancellare tutte le credenziali cancello anche la password
                if (string.IsNullOrWhiteSpace(userVM.LoyalzooUsername) && string.IsNullOrWhiteSpace(userVM.CustomerSessionId))
                {
                    part.LoyalzooPassword = "";
                }
            }

            return(Editor(part, shapeHelper));
        }