public async Task <IActionResult> OnPostAsync(GanjoorExpense Expense) { LastMessage = ""; using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/donations/expense", new StringContent(JsonConvert.SerializeObject(Expense), Encoding.UTF8, "application/json")); if (!response.IsSuccessStatusCode) { LastMessage = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); } else { await ReadExpenses(); } } else { LastMessage = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } return(Page()); }
public async Task <IActionResult> OnGetAsync() { if (string.IsNullOrEmpty(Request.Cookies["Token"])) { return(Redirect("/")); } LastMessage = ""; Expense = new GanjoorExpense() { ExpenseDate = DateTime.Now.Date, Unit = "تومان", }; await ReadExpenses(); return(Page()); }
public async Task <IActionResult> AddExpense([FromBody] GanjoorExpense expense) { try { Guid userId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value); var res = await _donationService.AddExpense(userId, expense); if (!string.IsNullOrEmpty(res.ExceptionString)) { return(BadRequest(res.ExceptionString)); } return(Ok(res.Result)); } catch (Exception exp) { return(BadRequest(exp.ToString())); } }
/// <summary> /// new expense /// </summary> /// <param name="editingUserId"></param> /// <param name="expense"></param> /// <returns></returns> public async Task <RServiceResult <GanjoorExpense> > AddExpense(Guid editingUserId, GanjoorExpense expense) { expense.DonationExpenditures = new List <DonationExpenditure>();//fix swagger posting a list which causes a donation to be added _context.GanjoorExpenses.Add(expense); await _context.SaveChangesAsync(); if (!string.IsNullOrEmpty(expense.Unit) && expense.Amount > 0) { var expenseRemaining = expense.Amount; var donations = await _context.GanjoorDonations.Where(d => d.Unit == expense.Unit && d.Remaining > 0).OrderBy(d => d.Id).ToListAsync(); foreach (var d in donations) { if (expenseRemaining <= 0) { break; } var remaining = expenseRemaining; if (remaining > d.Remaining) { remaining = d.Remaining; } DonationExpenditure n = new DonationExpenditure() { Amount = remaining, GanjoorDonationId = d.Id }; expense.DonationExpenditures.Add(n); _context.GanjoorExpenses.Update(expense); var amount = d.Remaining == d.Amount && remaining == d.Remaining ? "" : d.Remaining == remaining ? "باقیماندهٔ آن " : $"مبلغ {LanguageUtils.FormatMoney(remaining)} {d.Unit} آن "; var part = expense.DonationExpenditures.Count == 1 && remaining == expenseRemaining ? "" : "بخشی از "; if (!string.IsNullOrEmpty(d.ExpenditureDesc)) { d.ExpenditureDesc += " "; } d.ExpenditureDesc += $"{amount}جهت تأمین {part}هزینهٔ {expense.Description} به مبلغ {LanguageUtils.FormatMoney(expense.Amount)} {d.Unit} صرف شد ({LanguageUtils.FormatDate(expense.ExpenseDate)})."; d.Remaining -= remaining; _context.GanjoorDonations.Update(d); await _context.SaveChangesAsync(); expenseRemaining -= remaining; } } await RegenerateDonationsPage(editingUserId, $"ثبت هزینهٔ {expense.Description} به مبلغ {LanguageUtils.FormatMoney(expense.Amount)} {expense.Unit}");//ignore possible errors here! return(new RServiceResult <GanjoorExpense>(expense)); }