コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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()));
            }
        }
コード例 #4
0
        /// <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));
        }