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)); }
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")); } }
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)); }
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)); }
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)); }
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")); } }