private void _processLogin(string loginName, LoginStatus status, Action<LoginResult> onResult) { var result = new LoginResult { Status = status }; if (status == LoginStatus.Success) { var session = _createOscarSession(loginName); if (session == null) { onResult(new LoginResult { Status = LoginStatus.SessionBlocked }); Log.Warn("Unable to create user session."); return; } var preferences = new GetSettingsSection { DriverId = session.UserId, Section = _dSessionSection }; Services.Invoke(preferences, o => { if (o != null) { var defaultVehicle = o.Get(_dVehicle); if (defaultVehicle.NotNull()) { session.VehicleId = BplIdentity.Get(defaultVehicle.Value); } var defaultLocale = o.Get(_dLocale); if (defaultLocale.NotNull()) { session.UserLocale = new Locale(defaultLocale.Value); } } else { Log.Info("Login: No preferences for driver {0} stored.", session.UserId); } result.SessionToken = CryptServices.Encode(session); onResult(result); }, e => { Log.Warn("Login: Error processing preference request {0}", e); result.SessionToken = CryptServices.Encode(session); onResult(result); }); } else { onResult(result); } }
private void _handleUpdateSessionData(UpdateSessionData updateSessionData, OscarSessionData session, Action<LoginResult> onResult) { Log.Info("Session Update: Start"); var result = new LoginResult { SessionToken = CryptServices.Encode(session), Status = LoginStatus.SessionBlocked }; if (session.IsExpired(SessionTimeout)) { Log.Warn("Session Update: Session is expired. Create valid session first"); onResult(result); } else { var values = new ParameterSet(); values.Parameters.Add(new Parameter { Name = _dVehicle, Value = updateSessionData.UserVehicle }); values.Parameters.Add(new Parameter { Name = _dLocale, Value = updateSessionData.UserLocale.Name }); var preferences = new UpdateSettingsSection { DriverId = session.UserId, Values = values, Section = _dSessionSection }; Services.Invoke(preferences, o => { if (o) { session.VehicleId = updateSessionData.UserVehicle; session.UserLocale = updateSessionData.UserLocale; result.SessionToken = CryptServices.Encode(session); result.Status = LoginStatus.Success; } else { Log.Warn("Session Update: Unable to update session data"); } onResult(result); }, e => { Log.Warn("Session Update: Error processing set preference request {0}", e); onResult(result); }); } }