Ejemplo n.º 1
0
        public IHttpActionResult Edit(int?Id, HouseholdBindingModel householdBinding)
        {
            // Two strings so that you can edit only one string? or you have to edit both?
            // Asking here because I can use required tags on the bindingModel

            if (ModelState is null || !ModelState.IsValid) // ++Q : Turn into filter.
            {
                return(BadRequest(ModelState));
            }

            var household = DbContext.Households.FirstOrDefault(p => p.Id == Id);

            if (household is null)
            {
                return(NotFound());
            }

            household.DateUpdated = DateTime.Now;
            household.Name        = householdBinding.Name;
            household.Description = householdBinding.Description;
            DbContext.SaveChanges();

            var userId = User.Identity.GetUserId();

            var householdView = HouseholdHelpers.MapHouseholdToView(household, userId);

            return(Ok(householdView));
        }
Ejemplo n.º 2
0
        public IHttpActionResult Create(HouseholdBindingModel householdBinding)
        {
            if (ModelState is null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = UserManager.FindById(User.Identity.GetUserId());

            var household = new Household
            {
                DateCreated = DateTime.Now,
                DateUpdated = null,
                Name        = householdBinding.Name,
                Description = householdBinding.Description,
                Creator     = user,
                Members     = new List <ApplicationUser>()
                {
                    user // adding the user so they show up in the user list on requests
                }
            };

            DbContext.Households.Add(household);
            DbContext.SaveChanges();

            var householdView = HouseholdHelpers.MapHouseholdToView(household, user.Id);

            return(Created(Url.Link(
                               "GetHouseholdById",
                               new { household.Id }),
                           householdView
                           ));
        }
        public ActionResult Users(int?Id)
        {
            if (ErrorHelpers.IdIsInvalid(Id, TempData))
            {
                return(RedirectToAction("Index", "Household"));
            }

            var url = $"{ProjectConstants.APIURL}/api/household/getallusers/{Id}";

            var response       = HttpClientContext.httpClient.GetAsync(url).Result;
            var responseResult = response.Content.ReadAsStringAsync().Result;

            if (response.IsSuccessStatusCode)
            {
                var datas     = JsonConvert.DeserializeObject <List <UserViewModel> >(responseResult);
                var viewModel = new HouseholdUserViewModel
                {
                    UserViewModels = datas,
                    HouseholdId    = (int)Id,
                    IsCreator      = HouseholdHelpers.IsUserCreator((int)Id, Request, TempData)
                };

                return(View(viewModel));
            }
            else
            {
                ErrorHelpers.HandleResponseErrors(response, TempData, ModelState);
                return(RedirectToAction("Index", "Household"));
            }
        }
Ejemplo n.º 4
0
        public IHttpActionResult GetAll()
        {
            var households = DbContext.Households.ToList();

            if (households is null)
            {
                return(NotFound());
            }

            var userId = User.Identity.GetUserId();

            var householdsView = households.Select(p => HouseholdHelpers.MapHouseholdToView(p, userId));

            return(Ok(householdsView));
        }
Ejemplo n.º 5
0
        public IHttpActionResult GetAllUserHouseholds()
        {
            var userHouseholds = UserManager.FindById(User.Identity.GetUserId()).HouseholdMembers;

            if (userHouseholds is null)
            {
                return(NotFound());
            }

            var userId = User.Identity.GetUserId();

            var userHouseholdsView = userHouseholds.Select(p => HouseholdHelpers.MapHouseholdToView(p, userId));

            return(Ok(userHouseholdsView));
        }
Ejemplo n.º 6
0
        public IHttpActionResult GetAllInvites()
        {
            var userId = User.Identity.GetUserId();
            var user   = UserManager.FindById(userId);

            if (user is null)
            {
                return(NotFound());
            }

            var invites = user.HouseholdsInvitedTo.ToList();

            var invitesView = invites.Select(p => HouseholdHelpers.MapInviteToView(p));

            return(Ok(invitesView));
        }
        public ActionResult HouseholdTransactions(int?Id)
        {
            if (Id is null)
            {
                TempData.Add("Message", "Improper Id");
                TempData.Add("MessageColour", "danger");
                return(RedirectToAction("Index", "Household"));
            }

            var url = $"{ProjectConstants.APIURL}/api/transaction/getallbyhousehold/{Id}";

            var token      = Request.Cookies["UserAuthCookie"].Value;
            var authHeader = new AuthenticationHeaderValue("Bearer", token);

            HttpClientContext.httpClient.DefaultRequestHeaders.Authorization = authHeader;

            // Handling lack of connection??? try catch?
            var response = HttpClientContext.httpClient.GetAsync(url).Result;

            if (response.IsSuccessStatusCode)
            {
                var responseResult = response.Content.ReadAsStringAsync().Result;

                var datas = JsonConvert.DeserializeObject <List <TransactionViewModel> >(responseResult);

                foreach (var item in datas)
                {
                    item.CategoryName    = HouseholdHelpers.GetCategoryName(item.CategoryId, Request);
                    item.BankAccountName = HouseholdHelpers.GetBankAccountName(item.BankAccountId, Request);
                    item.UserCanEdit     = TransactionHelpers.IsUserCreator(item.Id, Request, TempData);
                }

                var viewModel = new TransactionListViewModel
                {
                    Transactions             = datas,
                    HouseholdId              = (int)Id,
                    IsHouseholdOwnerOrMember = HouseholdHelpers.IsUserCreatorOrMember((int)Id, Request, TempData)
                };
                return(View(viewModel));
            }
            else
            {
                ErrorHelpers.HandleResponseErrors(response, TempData, ModelState);
                return(RedirectToAction("Index", "Household"));
            }
        }
        public IHttpActionResult GetById(int?Id)
        {
            if (Id is null)
            {
                return(BadRequest("Id is invalid"));
            }

            var category = DbContext.Categories.FirstOrDefault(p => p.Id == Id);

            if (category is null)
            {
                return(NotFound());
            }

            var categoryView = HouseholdHelpers.MapCategoryToView(category);

            return(Ok(categoryView));
        }
Ejemplo n.º 9
0
        public IHttpActionResult GetById(int?Id)
        {
            if (Id is null)
            {
                return(BadRequest("Id is invalid"));
            }

            var household = DbContext.Households.FirstOrDefault(p => p.Id == Id);

            if (household is null)
            {
                return(NotFound());
            }

            var userId = User.Identity.GetUserId();

            var householdView = HouseholdHelpers.MapHouseholdToView(household, userId);

            return(Ok(householdView));
        }
        public IHttpActionResult GetAll(int?Id)
        {
            var userId = User.Identity.GetUserId();

            if (userId is null)
            {
                return(Unauthorized());
            }

            var categories = DbContext.Households.FirstOrDefault(p => p.Id == Id).Categories.ToList();

            if (categories is null)
            {
                return(BadRequest("No Categories for this household"));
            }

            var categoriesView = categories.Select(p => HouseholdHelpers.MapCategoryToView(p));

            return(Ok(categoriesView));
        }
        public IHttpActionResult GetAll()
        {
            var userId = User.Identity.GetUserId();

            if (userId is null)
            {
                return(NotFound());
            }

            var categories = DbContext.Categories.Where(p => p.Household.Members.Any(i => i.Id == userId)).ToList();

            if (categories is null)
            {
                return(NotFound());
            }

            var categoriesView = categories.Select(p => HouseholdHelpers.MapCategoryToView(p));

            return(Ok(categoriesView));
        }
        public IHttpActionResult Create(int?Id, CategoryBindingModel categoryBinding)
        {
            // Id being the Id of the Household
            if (ModelState is null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (DbContext.Households.FirstOrDefault(p => p.Id == Id).Categories.Any(p => p.Name == categoryBinding.Name))
            {
                return(BadRequest("That name is already in use, please choose another."));
            }

            var household = DbContext.Households.FirstOrDefault(p => p.Id == Id);

            if (household is null)
            {
                return(NotFound());
            }

            var category = new Category
            {
                DateCreated = DateTime.Now,
                DateUpdated = null,
                Name        = categoryBinding.Name,
                Description = categoryBinding.Description
            };

            household.Categories.Add(category);
            DbContext.SaveChanges();

            var categoryView = HouseholdHelpers.MapCategoryToView(category);

            return(Created(Url.Link(
                               "GetCategoryById",
                               new { category.Id }),
                           categoryView
                           ));
        }
        public IHttpActionResult Edit(int?Id, CategoryBindingModel categoryBinding)
        {
            if (ModelState is null || !ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var category = DbContext.Categories.FirstOrDefault(p => p.Id == Id);

            if (category is null)
            {
                return(NotFound());
            }

            category.DateUpdated = DateTime.Now;
            category.Name        = categoryBinding.Name;
            category.Description = categoryBinding.Description;
            DbContext.SaveChanges();

            var categoryView = HouseholdHelpers.MapCategoryToView(category);

            return(Ok(categoryView));
        }
        public ActionResult Details(int?Id)
        {
            // HouseholdId
            // Last 10 Transactions of those accounts/ grouped by category. -> Do that on that backend

            if (Id is null)
            {
                TempData.Add("Message", "Improper Id");
                TempData.Add("MessageColour", "danger");
                return(RedirectToAction("Index", "Household"));
            }

            var url = $"{ProjectConstants.APIURL}/api/household/getbyid/{Id}";

            var token      = Request.Cookies["UserAuthCookie"].Value;
            var authHeader = new AuthenticationHeaderValue("Bearer", token);

            HttpClientContext.httpClient.DefaultRequestHeaders.Authorization = authHeader;

            // Handling lack of connection??? try catch?
            var response = HttpClientContext.httpClient.GetAsync(url).Result;

            if (response.IsSuccessStatusCode)
            {
                var responseResult = response.Content.ReadAsStringAsync().Result;

                var datas = JsonConvert.DeserializeObject <HouseholdBindingModel>(responseResult);
                // Organize data into HouseholdDetailsViewModel
                var householdDetails = new HouseholdDetailsViewModel()
                {
                    NetSum                = datas.BankAccounts.Sum(acnt => acnt.Balance),
                    HouseholdId           = (int)Id,
                    BankAccountViewModels = datas.BankAccounts.Select(p => new BankAccountTransactionsViewModel()
                    {
                        Id                    = p.Id,
                        Name                  = p.Name,
                        Description           = p.Description,
                        Balance               = p.Balance,
                        TransactionViewModels = datas.Transactions.Where(trnsctn => trnsctn.BankAccountId == p.Id).Select(x => new TransactionViewModel()
                        {
                            Id           = x.Id,
                            Title        = x.Title,
                            Description  = x.Description,
                            Date         = x.Date,
                            DateCreated  = x.DateCreated,
                            DateUpdated  = x.DateUpdated,
                            IsVoid       = x.IsVoid,
                            Amount       = x.Amount,
                            CreatorId    = x.CreatorId,
                            CategoryId   = x.CategoryId,
                            CategoryName = HouseholdHelpers.GetCategoryName(x.CategoryId, Request)
                        }).GroupBy(transaction => transaction.CategoryName).ToList()
                    }).ToList()
                };

                return(View(householdDetails));
            }
            else
            {
                ErrorHelpers.HandleResponseErrors(response, TempData, ModelState);
                return(RedirectToAction("Index", "Household"));
            }
        }