public GrupoDetailsViewModel(INavigationService navigationService, IGruposRegionRepository gruposRegionRepository, IGrupoPokemonsRepository grupoPokemonsRepository) : base(navigationService) { _navigationService = navigationService; _gruposRegionRepository = gruposRegionRepository; _grupoPokemonsRepository = grupoPokemonsRepository; #region Commands Logic DeleteGroup = new Command(async(obj) => { var action = await App.Current.MainPage.DisplayAlert("Warning", "Do you want to delete this group?", "Yes", "No"); if (action) { UserDialogs.Instance.ShowLoading(null, MaskType.Clear); //delete pokemons that belong to this group await _grupoPokemonsRepository.DeteleDataByGrupoId(GroupId); //then, delete group await _gruposRegionRepository.DeleteData(GroupId, await SecureStorage.GetAsync("UserId"), string.Empty); UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Success", "Your group was deleted successfully", "ok"); var navigationParams = new NavigationParameters(); navigationParams.Add("DeletedGrupoId", GroupId); await _navigationService.GoBackAsync(navigationParams); } }); ModifyGroup = new Command(async(obj) => { var navigationParams = new NavigationParameters(); navigationParams.Add("GruposRegion", GruposRegion); navigationParams.Add("IsCreate", false); navigationParams.Add("PokemonsAdded", PokemonsAdded); await _navigationService.NavigateAsync("PokemonRegionView", navigationParams); }); #endregion }
public MainPageViewModel(INavigationService navigationService, IAPIService apiService, IGruposRegionRepository gruposRegionRepository) : base(navigationService) { Title = "Regions"; _apiService = apiService; _navigationService = navigationService; _gruposRegionRepository = gruposRegionRepository; GetRegions(); Logout = new Command(async() => { SecureStorage.RemoveAll(); App.IsMainView = false; await NavigationService.NavigateAsync("/LoginView"); }); }
public RegionGruposViewModel(INavigationService navigationService, IGruposRegionRepository gruposRegionRepository, IGrupoPokemonsRepository grupoPokemonsRepository) : base(navigationService) { _navigationService = navigationService; _gruposRegionRepository = gruposRegionRepository; _grupoPokemonsRepository = grupoPokemonsRepository; #region Commands Logic CreateGroup = new Command(async(obj) => { var navigationParams = new NavigationParameters(); navigationParams.Add("pokedexes", PokedexInfo); navigationParams.Add("IsCreate", true); await _navigationService.NavigateAsync("PokemonRegionView", navigationParams); }); PasteToken = new Command(async(obj) => { var navigationParams = new NavigationParameters(); navigationParams.Add("regionName", Title); await _navigationService.NavigateAsync("AddGroupCopiedView", navigationParams); }); CopyGroup = new Command(async(obj) => { if (obj != null) { var token = (string)obj; await Clipboard.SetTextAsync(token); Vibration.Vibrate(10); UserDialogs.Instance.Toast("Group's token copied to clipboard.", new TimeSpan(0, 0, 6)); } else { UserDialogs.Instance.Toast("There is a problem to get group's token.", new TimeSpan(0, 0, 6)); } }); #endregion }
public AddGroupCopiedViewModel(INavigationService navigationService, IGruposRegionRepository gruposRegionRepository) : base(navigationService) { _navigationService = navigationService; _gruposRegionRepository = gruposRegionRepository; #region MyRegion SendToken = new Command(async() => { UserDialogs.Instance.ShowLoading(null, MaskType.Clear); if (string.IsNullOrEmpty(Token)) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Error", "You must add a group's token", "ok"); return; } if (!(await _gruposRegionRepository.ItExist(Token, await SecureStorage.GetAsync("UserId"), Region))) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Error", "You can't add this group. The Group's owner could have removed it", "ok"); return; } if (await _gruposRegionRepository.IsMyGroup(Token, await SecureStorage.GetAsync("UserId"), Region)) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Error", "You can't add a group that belongs you", "ok"); return; } if (!(await _gruposRegionRepository.IsSameRegion(Token, await SecureStorage.GetAsync("UserId"), Region))) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Error", "You can't add a group that belongs to another region", "ok"); return; } var result = await _gruposRegionRepository.SaveGroupByToken(Token, await SecureStorage.GetAsync("UserId"), Region); if (result) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Success", "This group was created successfully", "ok"); var navigationParams = new NavigationParameters(); navigationParams.Add("regionName", Region); await _navigationService.GoBackAsync(navigationParams); } else { UserDialogs.Instance.HideLoading(); return; } }); #endregion }
public PokemonRegionViewModel(INavigationService navigationService, IAPIService apiService, IGruposRegionRepository gruposRegionRepository, IGrupoPokemonsRepository grupoPokemonsRepository) : base(navigationService) { _apiService = apiService; _navigationService = navigationService; _gruposRegionRepository = gruposRegionRepository; _grupoPokemonsRepository = grupoPokemonsRepository; #region Commands Logic CancelCreation = new Command(async() => { await _navigationService.GoBackAsync(); }); SaveGroup = new Command(async() => { try { UserDialogs.Instance.ShowLoading(null, MaskType.None); //validate pokemons number if (PokemonsCounter < 3 || PokemonsCounter > 6) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Error", "You must add at min. 3 pokemons or max. 6 pokemons", "ok"); return; } var result1 = false; var result2 = false; if (CrossConnectivity.Current.IsConnected) { if (IsCreate) { //Create Group group first var group = new GruposRegion { GrupoId = await _gruposRegionRepository.GetLastID() + 1, GrupoName = GroupName, GrupoTipo = GroupType, PokedexDescription = PokedexDescription, Image = "", Region = PokedexInfo.FirstOrDefault().name, UserId = await SecureStorage.GetAsync("UserId"), Token = Convert.ToBase64String(Guid.NewGuid().ToByteArray()), GrupoIdFather = null }; result1 = await _gruposRegionRepository.SaveData(group); if (result1) { //then we add pokemons related var data = PokemonList.Where(x => x.IsSelected).Select(x => new GrupoPokemons { GroupId = group.GrupoId, Pokemon = x.name }); result2 = await _grupoPokemonsRepository.SaveDataRange(data); } if (result1 && result2) { await App.Current.MainPage.DisplayAlert("Success", "Your group was created successfully", "ok"); var navigationParams = new NavigationParameters(); navigationParams.Add("RegionName", group.Region); await navigationService.GoBackAsync(navigationParams); } else { UserDialogs.Instance.HideLoading(); ErrorAlert(); await navigationService.GoBackAsync(); } } else { GruposRegion.GrupoName = GroupName; GruposRegion.GrupoTipo = GroupType; GruposRegion.PokedexDescription = PokedexDescription; result1 = await _gruposRegionRepository.UpdateData(GruposRegion); if (result1) { //then we add pokemons related and delete pokemons non related var oldValues = (await _grupoPokemonsRepository.GetDataByGrupoId(GruposRegion.GrupoId)).ToList(); var data = PokemonList.Where(x => x.IsSelected).Select(x => new GrupoPokemons { GroupId = GruposRegion.GrupoId, Pokemon = x.name }); //if old data does not appear, it means it was no unselected foreach (var item in oldValues) { if (!data.Select(x => x.Pokemon).Contains(item.Pokemon)) { await _grupoPokemonsRepository.DeleteData(item.Id, string.Empty, string.Empty); } } //if new data does not appear, it means it must be added foreach (var item in data) { if (!oldValues.Select(x => x.Pokemon).Contains(item.Pokemon)) { item.Id = await _gruposRegionRepository.GetLastID() + 1; await _grupoPokemonsRepository.SaveData(item); } } result2 = true; } if (result1 && result2) { UserDialogs.Instance.HideLoading(); await App.Current.MainPage.DisplayAlert("Success", "Your group was modified successfully", "ok"); var navigationParams = new NavigationParameters(); navigationParams.Add("GrupoId", GruposRegion.GrupoId); await navigationService.GoBackAsync(navigationParams); } else { UserDialogs.Instance.HideLoading(); ErrorAlert(); await navigationService.GoBackAsync(); } } } else { NoInternetAlert(); } } catch (Exception ex) { ErrorAlert(); await navigationService.GoBackAsync(); } }); #endregion }