public IHttpActionResult RemoveRepositoryFromFavorites(string clientId, string repositoryKey)
        {
            bool result = false;

            try
            {
                if (string.IsNullOrWhiteSpace(clientId) || string.IsNullOrWhiteSpace(repositoryKey))
                {
                    return(BadRequest());
                }

                result = FavoritesStorage.RemoveRepository(clientId, repositoryKey);

                if (result)
                {
                    return(Ok());
                }
                else
                {
                    return(Conflict());
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
        public IHttpActionResult AddRepositoryToFavorites(string clientId, Repository repository)
        {
            bool result = false;

            try
            {
                if (string.IsNullOrWhiteSpace(clientId) || repository == null)
                {
                    return(BadRequest());
                }

                result = FavoritesStorage.AddRepository(clientId, repository);

                if (result)
                {
                    return(Created(string.Empty, result));
                }
                else
                {
                    return(Conflict());
                }
            }
            catch (Exception ex)
            {
                return(InternalServerError(ex));
            }
        }
Пример #3
0
        private void ShowAlert(object sender, PopupMenu.MenuItemClickEventArgs e)
        {
            switch (e.Item.ItemId)
            {
            case (Resource.Id.action_add_fav_query):
                ShowAddToFavAlert((name) =>
                {
                    string key  = ApplicationContext.GetString(Resource.String.fav_query_storage_key);
                    var storage = new FavoritesStorage <FavoriteQuery>(ApplicationContext, key);
                    storage.AddItem(new FavoriteQuery()
                    {
                        Id = storage.GetUniqueId(), Name = name, Query = searchTextView.Text
                    });

                    AWidget.Toast.MakeText(this, GetString(Resource.String.saved),
                                           AWidget.ToastLength.Short).Show();
                });
                break;

            case (Resource.Id.action_add_fav_place):
                ShowAddToFavAlert((name) =>
                {
                    string key  = ApplicationContext.GetString(Resource.String.fav_places_storage_key);
                    var storage = new FavoritesStorage <FavoritePlace>(ApplicationContext, key);
                    storage.AddItem(new FavoritePlace()
                    {
                        Id = storage.GetUniqueId(), Name = name, Place = nearestPlace
                    });

                    AWidget.Toast.MakeText(this, GetString(Resource.String.saved),
                                           AWidget.ToastLength.Short).Show();
                });
                break;
            }
        }
Пример #4
0
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.Inflate(Resource.Layout.favorites_fragment, container, false);

            string key     = Activity.ApplicationContext.GetString(Resource.String.fav_query_storage_key);
            var    storage = new FavoritesStorage <FavoriteQuery>(Activity.ApplicationContext, key);

            favQueries = storage.GetItems();

            adapter              = new CustomAdapter(Activity.ApplicationContext);
            adapter.ItemClicked += (s, item) =>
            {
                var query = favQueries.Single(x => x.Id == item.Id);
                ItemClicked?.Invoke(this, query.Query);
            };
            adapter.ItemRemoved += (s, item) =>
            {
                if (adapter.ItemCount == 0)
                {
                    recyclerView.Visibility  = ViewStates.Gone;
                    emptyTextView.Visibility = ViewStates.Visible;
                }
                storage.RemoveItem(favQueries.Single(x => x.Id == item.Id));
            };

            foreach (var query in favQueries)
            {
                adapter.Items.Add(new CustomItem()
                {
                    Id = query.Id, Name = query.Name, Description = query.Query
                });
            }

            emptyTextView = view.FindViewById <TextView>(Resource.Id.fav_list_empty);
            recyclerView  = view.FindViewById <RecyclerView>(Resource.Id.recycler_view);
            recyclerView.SetLayoutManager(new LinearLayoutManager(Activity.ApplicationContext));
            recyclerView.SetAdapter(adapter);
            recyclerView.AddItemDecoration(new ItemDecoration(Activity.ApplicationContext));
            recyclerView.HasFixedSize = true;

            // swipe to remove
            var mItemTouchHelper = new ItemTouchHelper(
                new ItemTouchCallback(0, ItemTouchHelper.Left, Activity.ApplicationContext, adapter));

            mItemTouchHelper.AttachToRecyclerView(recyclerView);

            if (adapter.ItemCount == 0)
            {
                recyclerView.Visibility  = ViewStates.Gone;
                emptyTextView.Visibility = ViewStates.Visible;
            }
            else
            {
                recyclerView.Visibility  = ViewStates.Visible;
                emptyTextView.Visibility = ViewStates.Gone;
            }

            return(view);
        }
 public IHttpActionResult GetClientFavorites(string clientId)
 {
     try
     {
         return(Ok(FavoritesStorage.GetRepositories(clientId)));
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
Пример #6
0
        public SearchResult(string clientId, GitHubSearchReponse v) : this()
        {
            if (v != null && v.total_count > 0)
            {
                this.Count = v.total_count;

                var favoriteRepositories = FavoritesStorage.GetRepositories(clientId);

                foreach (var item in v.items)
                {
                    var repository = new Repository(item);

                    repository.IsFavorite = favoriteRepositories.Exists(f => f.Key == repository.Key);

                    this.Repositories.Add(repository);
                }
            }
        }