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 ActionResult RecoverPassword(RecoverPasswordViewModel passwordViewModel) { if (!ModelState.IsValid) { return(View()); // Not sending the viewModel because passwords } var url = $"{ProjectConstants.APIURL}/api/Account/SendResetPassword"; var callbackUrl = Url.Action("ResetPassword", "Account", null, Request.Url.Scheme); var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Email", passwordViewModel.Email), new KeyValuePair <string, string>("Url", callbackUrl) }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", $"If that account exists, an email has been sent!"); return(RedirectToAction("Index", "Household")); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult Edit(int?Id) { // Bank Account Id if (Id is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/bankaccount/getbyid/{Id}"; var response = HttpClientContext.httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseResult = response.Content.ReadAsStringAsync().Result; var data = JsonConvert.DeserializeObject <EditBankAccountViewModel>(responseResult); return(View(data)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult SwitchVoid(int?Id, int?householdId) { // Id is Transaction Id if (Id is null || householdId is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/transaction/switchvoid/{Id}"; var response = HttpClientContext.httpClient.PostAsync(url, null).Result; if (response.IsSuccessStatusCode) { TempData["Message"] = $"Transaction's void state has been changed successfully!"; return(RedirectToAction("HouseholdTransactions", "Transaction", new { Id = householdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("HouseholdTransactions", "Transaction", new { Id = householdId })); } }
public ActionResult Delete(int?Id, int?householdId) { // Id is Bank Account Id if (Id is null || householdId is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/bankaccount/delete/{Id}"; var response = HttpClientContext.httpClient.DeleteAsync(url).Result; if (response.IsSuccessStatusCode) { TempData["Message"] = "Account Deleted!"; return(RedirectToAction("HouseholdBankAccounts", "BankAccount", new { Id = householdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("HouseholdBankAccounts", "BankAccount", new { Id = householdId })); } }
public ActionResult ChangePassword(ChangePasswordViewModel changePasswordViewModel) { if (!ModelState.IsValid) { return(View()); } var url = $"{ProjectConstants.APIURL}/api/Account/ChangePassword"; var token = Request.Cookies["UserAuthCookie"].Value; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("OldPassword", changePasswordViewModel.OldPassword), new KeyValuePair <string, string>("NewPassword", changePasswordViewModel.NewPassword), new KeyValuePair <string, string>("ConfirmPassword", changePasswordViewModel.ConfirmPassword), }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "Password Changed!"); return(RedirectToAction("Index", "Household")); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult Index() { var url = $"{ProjectConstants.APIURL}/api/household/getall"; 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 <HouseholdViewModel> >(responseResult); return(View(datas)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult UpdateBalance(int?Id, int?householdId) { // Id is Bank Account Id if (Id is null || householdId is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/bankaccount/updatebalance/{Id}"; var response = HttpClientContext.httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseResult = response.Content.ReadAsStringAsync().Result; dynamic data = JsonConvert.DeserializeObject <ExpandoObject>(responseResult); TempData["Message"] = $"Account '{data.Name}' balance has been updated!"; return(RedirectToAction("HouseholdBankAccounts", "BankAccount", new { Id = householdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("HouseholdBankAccounts", "BankAccount", new { Id = householdId })); } }
[ValidateAntiForgeryToken] // Place these on the other actions public ActionResult Create(CreateCategoryViewModel categoryViewModel) { if (!ModelState.IsValid) { return(View(categoryViewModel)); } var url = $"{ProjectConstants.APIURL}/api/category/create/{categoryViewModel.HouseholdId}"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Name", categoryViewModel.Name), new KeyValuePair <string, string>("Description", categoryViewModel.Description) }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "Category Created!"); return(RedirectToAction("HouseholdCategories", "Category", new { Id = categoryViewModel.HouseholdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View(categoryViewModel)); } }
public ActionResult Edit(EditTransactionViewModel transactionViewModel) { if (!ModelState.IsValid) { TransactionHelpers.SetCategoryDropDownList(transactionViewModel, Request); if (transactionViewModel.Categories is null) { TempData.Add("Message", "Error: Categories missing"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } return(View(transactionViewModel)); } var url = $"{ProjectConstants.APIURL}/api/transaction/edit/{transactionViewModel.Id}"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Title", transactionViewModel.Title), new KeyValuePair <string, string>("Description", transactionViewModel.Description), new KeyValuePair <string, string>("Amount", transactionViewModel.Amount.ToString()), new KeyValuePair <string, string>("Date", transactionViewModel.Date.ToString()), new KeyValuePair <string, string>("CategoryId", transactionViewModel.CategoryId.ToString()), }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", $"Transaction '{transactionViewModel.Title}' Edited!"); return(RedirectToAction("HouseholdTransactions", "Transaction", new { Id = transactionViewModel.HouseholdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); TransactionHelpers.SetCategoryDropDownList(transactionViewModel, Request); if (transactionViewModel.Categories is null) { TempData.Add("Message", "Error: Categories missing"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } return(View(transactionViewModel)); } }
public ActionResult Create(CreateTransactionViewModel transactionViewModel) { if (!ModelState.IsValid || transactionViewModel.BankAccountId is null || transactionViewModel.CategoryId is null) { TransactionHelpers.SetDropDownLists(transactionViewModel, Request); if (TransactionHelpers.BankAccntOrCategoriesIsNull(transactionViewModel, TempData)) { return(RedirectToAction("Index", "Household")); } return(View(transactionViewModel)); } var url = $"{ProjectConstants.APIURL}/api/transaction/create/{transactionViewModel.BankAccountId}"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Title", transactionViewModel.Title), new KeyValuePair <string, string>("Description", transactionViewModel.Description), new KeyValuePair <string, string>("Amount", transactionViewModel.Amount.ToString()), new KeyValuePair <string, string>("Date", transactionViewModel.Date.ToString()), new KeyValuePair <string, string>("CategoryId", transactionViewModel.CategoryId.ToString()), }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "Transaction Created!"); return(RedirectToAction("HouseholdTransactions", "Transaction", new { Id = transactionViewModel.HouseholdId })); } else { TransactionHelpers.SetDropDownLists(transactionViewModel, Request); if (TransactionHelpers.BankAccntOrCategoriesIsNull(transactionViewModel, TempData)) { return(RedirectToAction("Index", "Household")); } ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View(transactionViewModel)); } }
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 ActionResult Invites() { var url = $"{ProjectConstants.APIURL}/api/household/getallinvites"; var response = HttpClientContext.httpClient.GetAsync(url).Result; var responseResult = response.Content.ReadAsStringAsync().Result; if (response.IsSuccessStatusCode) { var datas = JsonConvert.DeserializeObject <List <InviteViewModel> >(responseResult); return(View(datas)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("Index", "Household")); } }
public ActionResult RegisterUser(RegisterUserViewModel registerUserViewModel) { if (!ModelState.IsValid) { return(View()); } var url = $"{ProjectConstants.APIURL}/api/Account/Register"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Email", registerUserViewModel.Email), new KeyValuePair <string, string>("Password", registerUserViewModel.Password), new KeyValuePair <string, string>("ConfirmPassword", registerUserViewModel.ConfirmPassword) }; // x-www-form-encoded tag, just like in post man, so that the data is sent on the body. var encodedParameters = new FormUrlEncodedContent(parameters); // Handling lack of connection??? try catch? var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { if (!LogUserIn(registerUserViewModel.Email, registerUserViewModel.Password)) { ModelState.AddModelError("", "There was an error logging you in.."); return(View()); } else { TempData.Add("Message", "Account Created!"); return(RedirectToAction("Index", "Household")); } } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult ResetPassword(ResetPasswordViewModel resetPasswordViewModel) { if (!ModelState.IsValid) { return(View()); } var url = $"{ProjectConstants.APIURL}/api/Account/ResetPassword"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("NewPassword", resetPasswordViewModel.Password), new KeyValuePair <string, string>("ConfirmPassword", resetPasswordViewModel.ConfirmPassword), new KeyValuePair <string, string>("Token", resetPasswordViewModel.Token), new KeyValuePair <string, string>("Email", resetPasswordViewModel.Email) }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { // Log user in if (!LogUserIn(resetPasswordViewModel.Email, resetPasswordViewModel.Password)) { ModelState.AddModelError("", "There was an error logging you in.."); return(View()); } else { TempData.Add("Message", "Password Changed!"); return(RedirectToAction("Index", "Household")); } } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } }
public ActionResult Invite(InviteUserViewModel inviteUserViewModel) { if (!ModelState.IsValid) { return(View(inviteUserViewModel)); } var url = $"{ProjectConstants.APIURL}/api/household/invite/{inviteUserViewModel.HouseholdId}"; var callbackUrl = Url.Action("Join", "Household", new { Id = inviteUserViewModel.HouseholdId }, Request.Url.Scheme); var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Email", inviteUserViewModel.Email), new KeyValuePair <string, string>("CallbackUrl", callbackUrl), }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "User Invited to the household!"); return(RedirectToAction("Index", "Household")); } else { if (inviteUserViewModel != null) { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View(inviteUserViewModel)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("Index", "Household")); } } }
public ActionResult Leave(int?Id) { if (ErrorHelpers.IdIsInvalid(Id, TempData)) { return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/household/leave/{Id}"; var response = HttpClientContext.httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "You've left the household!"); return(RedirectToAction("Index", "Household")); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("Index", "Household")); } }
public ActionResult Create(CreateHouseholdViewModel createHouseholdViewModel) { if (!ModelState.IsValid) { return(View(createHouseholdViewModel)); } var url = $"{ProjectConstants.APIURL}/api/household/create"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Name", createHouseholdViewModel.Name), new KeyValuePair <string, string>("Description", createHouseholdViewModel.Description) }; // x-www-form-encoded tag, just like in post man, so that the data is sent on the body. var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "Household Created!"); return(RedirectToAction("Index", "Household")); } else { if (createHouseholdViewModel != null) { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View(createHouseholdViewModel)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View()); } } }
public ActionResult Create(CreateBankAccountViewModel bankAccountViewModel) { if (!ModelState.IsValid) { return(View(bankAccountViewModel)); } var url = $"{ProjectConstants.APIURL}/api/bankaccount/create/{bankAccountViewModel.HouseholdId}"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Name", bankAccountViewModel.Name), new KeyValuePair <string, string>("Description", bankAccountViewModel.Description) }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData["Message"] = "Bank Account Created!"; return(RedirectToAction("HouseholdBankAccounts", "BankAccount", new { Id = bankAccountViewModel.HouseholdId })); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); if (bankAccountViewModel != null) { return(View(bankAccountViewModel)); } else { return(RedirectToAction("Index", "Household")); } } }
public ActionResult Edit(int?Id) { // Category Id if (Id is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/transaction/getbyid/{Id}"; var response = HttpClientContext.httpClient.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseResult = response.Content.ReadAsStringAsync().Result; var data = JsonConvert.DeserializeObject <EditTransactionViewModel>(responseResult); TransactionHelpers.SetCategoryDropDownList(data, Request); if (data.Categories is null) { TempData.Add("Message", "Error: Categories missing"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } return(View(data)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("Index", "Household")); } }
public ActionResult Edit(EditHouseholdViewModel editHouseholdViewModel) { if (!ModelState.IsValid) { return(View(editHouseholdViewModel)); } var url = $"{ProjectConstants.APIURL}/api/household/edit/{editHouseholdViewModel.Id}"; var parameters = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("Name", editHouseholdViewModel.Name), new KeyValuePair <string, string>("Description", editHouseholdViewModel.Description) }; var encodedParameters = new FormUrlEncodedContent(parameters); var response = HttpClientContext.httpClient.PostAsync(url, encodedParameters).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", $"Household '{editHouseholdViewModel.Name}' Edited!"); return(RedirectToAction("Index", "Household")); } else { if (editHouseholdViewModel != null) { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(View(editHouseholdViewModel)); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("Index", "Household")); } } }
public ActionResult Join(int?Id) { if (Id is null) { TempData.Add("Message", "Improper Id"); TempData.Add("MessageColour", "danger"); return(RedirectToAction("Index", "Household")); } var url = $"{ProjectConstants.APIURL}/api/household/join/{Id}"; var response = HttpClientContext.httpClient.PostAsync(url, null).Result; if (response.IsSuccessStatusCode) { TempData.Add("Message", "You've joined the household!"); return(RedirectToAction("Index", "Household")); } else { ErrorHelpers.HandleResponseErrors(response, TempData, ModelState); return(RedirectToAction("LogIn", "Account")); } }
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")); } }