async void DoCreateAccountCommand()
        {
            User user = new User {
                email = Email, username = Username, password = EncryptionService.encrypt(Password), name = Name, lastname = Lastname, image_url = UserImageUrl, created_at = DateTime.Now, updated_at = DateTime.Now
            };

            try
            {
                OperationResult result = await _mLearningService.CreateAccount <User>(user, (usr) => usr.id, _selectedUserType);

                SessionService.LogIn(result.id, Username);

                SharedPreferences prefs = Constants.GetSharedPreferences(Constants.PreferencesFileName);
                prefs.PutString(Constants.UserFirstNameKey, Name);
                prefs.PutString(Constants.UserLastNameKey, Lastname);
                prefs.PutString(Constants.UserImageUrlKey, UserImageUrl);

                prefs.Commit();


                ClearProperties();
                ShowViewModel <MainViewModel>();
                RegistrationOK = true;
            }
            catch (WebException e)
            {
                ConnectionOK = false;
            }
            catch (MobileServiceInvalidOperationException ex)
            {
                OperationOK = false;
            }
        }
        async void DoRegisterCommand1()
        {
            try
            {
                MLearningDB.User newuser = new MLearningDB.User {
                    email = Email, username = RegUsername, password = EncryptionService.encrypt(RegPassword), name = Name, lastname = ":)", image_url = "http://www.clinicatorielli.com/img/icons/no-user.png", created_at = DateTime.Now, updated_at = DateTime.Now
                };


                int idInstitution = 1;
                newuser.password = EncryptionService.encrypt(newuser.password);
                bool exists = await _mLearningService.CheckIfExistsNoLocale <MLearningDB.User>
                                  (usr => usr.username == newuser.username, (it) => it.updated_at, it => it.id);

                if (exists)
                {
                    return;
                }

                OperationResult op = await _mLearningService.CreateAndRegisterConsumer(newuser, idInstitution);

                MLearningDB.User user = new MLearningDB.User {
                    username = newuser.username, password = newuser.password
                };

                SharedPreferences prefs = Constants.GetSharedPreferences(Constants.PreferencesFileName);
                prefs.PutString(Constants.UserFirstNameKey, Name);
                prefs.PutString(Constants.UserLastNameKey, Lastname);
                prefs.PutString(Constants.UserImageUrlKey, UserImageUrl);

                prefs.Commit();

                ClearProperties();

                ShowViewModel <MainViewModel>();
            }
            catch (MobileServiceInvalidOperationException e) {
                ConnectionOK = false;
            }
            catch (WebException e)
            {
                ConnectionOK = false;
            }
        }
        async void DoLoginCommand()
        {
            StatusLabel = _waitingMessage;

            ////Populate

            //var users = Builder<MLearningDB.User>.CreateListOfSize(5000).All().With(x => x.id = 0 ).And(x=>x.created_at = DateTime.UtcNow).And(x=>x.updated_at = DateTime.UtcNow).And(x=>x.social_id=null).Build();

            //foreach (var user in users)
            //{
            //    await _mLearningService.CreateAccount<MLearningDB.User>(user, u => u.id, UserType.Consumer);

            //    _mLearningService.AddUserToCircle(user.id, 45);
            //}



            ////end populate



            try
            {
                User user = new User {
                    username = Username, password = EncryptionService.encrypt(Password)
                };
                //   User user = new User { username = Username, password = Password };
                LoginOperationResult <User> result = await _mLearningService.ValidateLogin <User>(user, u => u.password == user.password && u.username == user.username, u => u.id, u => u.type);

                // LoginOperationResult result = await _mLearningService.ValidateConsumerLogin(user.username,user.password);

                if (result.successful)
                {
                    LoginOK = true;
                    SessionService.LogIn(result.id, Username);

                    SharedPreferences prefs = Constants.GetSharedPreferences(Constants.PreferencesFileName);
                    prefs.PutString(Constants.UserFirstNameKey, result.account.name);
                    prefs.PutString(Constants.UserLastNameKey, result.account.lastname);
                    prefs.PutString(Constants.UserImageUrlKey, result.account.image_url);

                    prefs.Commit();


                    switch ((UserType)result.userType)
                    {
                    case UserType.Consumer:

                        //Select corresponding user screen

                        ShowViewModel <MainViewModel>();


                        break;

                                                #if (ADMIN)
                    case UserType.Head:


                        ShowViewModel <HeadMainViewModel>(new { user_id = result.id });

                        break;

                    case UserType.Publisher:

                        ShowViewModel <PublisherMainViewModel>(new { user_id = result.id });
                        break;
                                                #endif

                    default:
                        StatusLabel = _wrongCredentialsMessage;
                        LoginOK     = false;
                        break;
                    }
                }
                else
                {
                    StatusLabel = _wrongCredentialsMessage;
                    LoginOK     = false;
                }
            }
            catch (WebException e)
            {
                StatusLabel  = _noInternetMessage;
                ConnectionOK = false;
            }
            catch (HttpRequestException e)
            {
                StatusLabel  = _noInternetMessage;
                ConnectionOK = false;
            }
            catch (MobileServiceInvalidOperationException e)
            {
                Mvx.Trace("MobileServiceInvalidOperationException " + e.Message);
                OperationOK = false;
            }
        }