public async Task <ActionResult> Index()
        {
            var client = ExpenseTrackerHttpClient.GetClient();

            var model = new ExpenseGroupsViewModel();

            var egsResponse = await client.GetAsync("api/expensegroupstatusses");

            if (egsResponse.IsSuccessStatusCode)
            {
                string egsContent = await egsResponse.Content.ReadAsStringAsync();

                var lstExpenseGroupStatusses = JsonConvert
                                               .DeserializeObject <IEnumerable <ExpenseGroupStatus> >(egsContent);

                model.ExpenseGroupStatusses = lstExpenseGroupStatusses;
            }
            else
            {
                return(Content("An error occurred."));
            }


            HttpResponseMessage response = await client.GetAsync("api/expensegroups");

            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();

                var lstExpenseGroups = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroup> >(content);

                model.ExpenseGroups = lstExpenseGroups;
            }
            else
            {
                return(Content("An error occurred."));
            }


            return(View(model));
        }
        public async Task <ActionResult> Index(int?page = 1)
        {
            var client = ExpenseTrackerHttpClient.GetClient();

            var model = new ExpenseGroupsViewModel();

            var egsResponse = await client.GetAsync("api/expensegroupstatusses");

            if (egsResponse.IsSuccessStatusCode)
            {
                string egsContent = await egsResponse.Content.ReadAsStringAsync();

                model.ExpenseGroupStatusses = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroupStatus> >(egsContent);
            }
            else
            {
                return(Content("An error occurred."));
            }

            HttpResponseMessage response = await client.GetAsync("api/expensegroups?sort=expensegroupstatusid,title&page=" + page + "&pagesize=5");

            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();

                var pagingInfo    = HeaderParser.FindAndParsePagingInfo(response.Headers);
                var expenseGroups = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroup> >(content);

                var pagedExpenseGroupsList = new StaticPagedList <ExpenseGroup>(expenseGroups, pagingInfo.CurrentPage,
                                                                                pagingInfo.PageSize, pagingInfo.TotalCount);

                model.ExpenseGroups = pagedExpenseGroupsList;
                model.PagingInfo    = pagingInfo;
            }
            else
            {
                return(Content("An error occured."));
            }

            return(View(model));
        }
Ejemplo n.º 3
0
        // POST: ExpenseGroups/Delete/5
        public async Task <ActionResult> Delete(int id)
        {
            try
            {
                var client   = ExpenseTrackerHttpClient.GetClient();
                var response = await client.DeleteAsync("api/expensegroups/" + id);

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred."));
                }
            }
            catch (Exception)
            {
                return(Content("An error occurred."));
            }
        }
Ejemplo n.º 4
0
        private async Task GetExpenseGroups()
        {
            // load open expense groups
            var client = ExpenseTrackerHttpClient.GetClient();

            // don't need to get status as we're not displaying it
            // filters out expensegroups that aren't open
            HttpResponseMessage response = await client.GetAsync("api/expensegroups?fields=id,title,description&status=open");

            string content = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                var lstEG = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroup> >(content);
                ExpenseGroups = new ObservableCollection <ExpenseGroup>(lstEG);
            }
            else
            {
                // something went wrong, log this, handle this, show message, ...
            }
        }
        // GET: Expenses/Edit/5
        public async Task <ActionResult> Edit(int id)
        {
            //var client = ExpenseTrackerHttpClient.GetClient("2");

            var client = ExpenseTrackerHttpClient.GetClient();

            //HttpResponseMessage response = await client.GetAsync("api/expenses/" + id
            //    + "?fields=id,description,date,amount");

            HttpResponseMessage response = await client.GetAsync("api/expenses/" + id);

            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();

                var model = JsonConvert.DeserializeObject <Expense>(content);
                return(View(model));
            }

            return(Content("An error occurred."));
        }
Ejemplo n.º 6
0
        private async Task GetExpenseGroups()
        {
            // load open expense groups
            var client = ExpenseTrackerHttpClient.GetClient();

            HttpResponseMessage response = await client
                                           .GetAsync("api/expensegroups?fields=id,title,description&status=open");

            string content = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                var lstEG = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroup> >(content);
                ExpenseGroups         = new ObservableCollection <ExpenseGroup>(lstEG);
                GroupList.ItemsSource = ExpenseGroups;
            }
            else
            {
                // something went wrong, log this, handle this, show message, ...
            }
        }
        // GET: Expenses/Delete/5
        public async Task <ActionResult> Delete(int expenseGroupId, int id)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                var response = await client.DeleteAsync("api/expenses/" + id);

                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Details", "ExpenseGroups", new { id = expenseGroupId }));
                }
                else
                {
                    return(Content("An error occurred"));
                }
            }
            catch
            {
                return(Content("An error occurred"));
            }
        }
Ejemplo n.º 8
0
        private async Task RefreshExpenses()
        {
            Expenses.Clear();

            // load expenses for group
            var client = ExpenseTrackerHttpClient.GetClient();

            HttpResponseMessage response = await client.GetAsync("api/expensegroups/"
                                                                 + ExpenseGroup.Id + "/expenses?fields=id,date,description,amount");

            if (response.IsSuccessStatusCode)
            {
                string content = await response.Content.ReadAsStringAsync();

                var lstExpenses = JsonConvert.DeserializeObject <IEnumerable <Expense> >(content);
                Expenses = new ObservableCollection <Expense>(lstExpenses);
            }
            else
            {
                // something went wrong, log this, handle this, show message, ...
            }
        }
Ejemplo n.º 9
0
        // GET: ExpenseGroups/Details/5
        public async Task <ActionResult> Details(int id)
        {
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();
                HttpResponseMessage response = await client.GetAsync("api/expensegroups/" + id
                                                                     + "?fields=id,description,title,expenses");

                if (response.IsSuccessStatusCode)
                {
                    string content = await response.Content.ReadAsStringAsync();

                    var model = JsonConvert.DeserializeObject <ExpenseGroup>(content);
                    return(View(model));
                }

                return(Content("An error occurred."));
            }
            catch (Exception)
            {
                return(Content("An error occurred."));
            }
        }
        private async Task GetExpenseGroups()
        {
            // load open expense groups
            var client = ExpenseTrackerHttpClient.GetClient();

            string userId = App.ExpenseTrackerIdentity.Claims
                            .First(c => c.Name == "unique_user_key").Value;

            HttpResponseMessage response = await client
                                           .GetAsync("api/expensegroups?fields=id,title,description&status=open");

            string content = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                var lstEG = JsonConvert.DeserializeObject <IEnumerable <ExpenseGroup> >(content);
                ExpenseGroups = new ObservableCollection <ExpenseGroup>(lstEG);
            }
            else
            {
                // something went wrong, log this, handle this, show message, ...
            }
        }
        private async Task AddExpense()
        {
            // create an expense

            var client = ExpenseTrackerHttpClient.GetClient();

            // serialize & POST
            var serializedItemToCreate = JsonConvert.SerializeObject(Expense);

            var response = client.PostAsync("api/expenses",
                                            new StringContent(serializedItemToCreate,
                                                              System.Text.Encoding.Unicode, "application/json")).Result;


            if (response.IsSuccessStatusCode)
            {
                // return to the expense overview
                App.RootFrame.Navigate(typeof(ExpensesView), true);
            }
            else
            {
                // handle, log, ...
            }
        }
        public async Task <ActionResult> Edit(int id, ExpenseGroup expenseGroup)
        {
            #region editusingput
            //try
            //{
            //    var client = ExpenseTrackerHttpClient.GetClient();

            //    // serialize & PUT
            //    var serializedItemToUpdate = JsonConvert.SerializeObject(expenseGroup);

            //    var response = await client.PutAsync("api/expensegroups/" + id,
            //        new StringContent(serializedItemToUpdate,
            //        System.Text.Encoding.Unicode, "application/json"));

            //    if (response.IsSuccessStatusCode)
            //    {
            //        return RedirectToAction("Index");
            //    }
            //    else
            //    {
            //        return Content("An error occurred");
            //    }

            //}
            //catch
            //{
            //    return Content("An error occurred");
            //}
            #endregion

            #region editusingpatch
            try
            {
                var client = ExpenseTrackerHttpClient.GetClient();

                JsonPatchDocument <DTO.ExpenseGroup> patchDoc = new JsonPatchDocument <ExpenseGroup>();
                patchDoc.Replace(eg => eg.Title, expenseGroup.Title);
                patchDoc.Replace(eg => eg.Description, expenseGroup.Description);

                var serializedItemToUpdate = JsonConvert.SerializeObject(patchDoc);

                var response = await client.PatchAsync("api/expensegroups/" + id,
                                                       new StringContent(serializedItemToUpdate, System.Text.Encoding.Unicode, "application/json"));



                if (response.IsSuccessStatusCode)
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Content("An error occurred"));
                }
            }
            catch
            {
                return(Content("An error occurred"));
            }
            #endregion
        }