/// <summary> Авторизация пользователя </summary>
        public static EnumResultLogin Login(ModelLogin modelLogin)
        {
            if (String.IsNullOrWhiteSpace(modelLogin.Login) || modelLogin.Password == null)
            {
                return(EnumResultLogin.AuthFailed);
            }

            var lastLoginUserCryptKey = UtilitySecurity.LoadPrivateCryptKeyFromIsolatedStorage(modelLogin.Login, modelLogin.ServerAreaCode.ToString());
            var result = EnumResultLogin.No;

            if (modelLogin.LastModelAutoLogin)
            {
                var success = Logic.TryAutoLoginWithPassword(modelLogin.Password, lastLoginUserCryptKey);
                //Если при автологине считался неверный пароль, нужно логинится методом  Logic.Login для этого обнуляется переменная modelLogin.LastModelAutoLogin
                modelLogin.LastModelAutoLogin = success;
                result = success ? EnumResultLogin.No : EnumResultLogin.SystemError;
            }
            else
            {
                var resultLogin = Logic.Login(modelLogin.Login.Trim(), modelLogin.Password, modelLogin.ServerAreaCode, lastLoginUserCryptKey);

                // сохранение дополнительных пораметров при логине пользователя, хотелось бы сразу их передавать в Logic.Login, но Серега сказал пока сделать так
                if (resultLogin.Success)
                {
                    var modelUserSettings = DataSourceUserSettings.GetModelUserSettings();
                    modelUserSettings.AutoLogin        = modelLogin.AutoLogin;
                    modelUserSettings.ModelLanguageObj = modelLogin.ModelLanguageObj;
                    modelUserSettings.Autostart        = modelLogin.Autostart;

                    var resultSaveUserSettings = DataSourceUserSettings.SaveModelUserSettings(modelUserSettings);

                    if (resultSaveUserSettings == false)
                    {
                        result = EnumResultLogin.SystemError;
                    }

                    var resultSavePasswordToStorage = UtilitySecurity.SavePasswordToIsolatedStorage(modelLogin.Password, modelLogin.Login);

                    if (!resultSavePasswordToStorage)
                    {
                        result = EnumResultLogin.SystemError;
                    }
                }
                else
                {
                    switch (resultLogin.ErrorCode)
                    {
                    case ResultErrorCodeManaged.AuthFailed:
                        result = EnumResultLogin.AuthFailed;
                        break;

                    case ResultErrorCodeManaged.NoNetwork:
                        result = EnumResultLogin.NoNetwork;
                        break;

                    default:
                        result = EnumResultLogin.SystemError;
                        break;
                    }
                }
            }

            if (result == EnumResultLogin.No)
            {
                if (modelLogin.ModelServerAreaObj != null)
                {
                    CurrentModelServerArea = modelLogin.ModelServerAreaObj;
                }
                else
                {
                    List <ModelServerArea> listModelServerArea;

                    if (GetListModelServerArea(out listModelServerArea) == EnumResultLogin.No)
                    {
                        CurrentModelServerArea = listModelServerArea.FirstOrDefault(obj => obj.Id == modelLogin.ServerAreaCode);
                    }
                }
            }

            return(result);
        }