public async Task <ActionResult <PaidBill> > PostPaidBill(PaidBill paidBill) { _context.PaidBill.Add(paidBill); await _context.SaveChangesAsync(); return(CreatedAtAction("GetPaidBill", new { id = paidBill.Id }, paidBill)); }
public async Task <IActionResult> PutPaidBill(int id, PaidBill paidBill) { if (id != paidBill.Id) { return(BadRequest()); } _context.Entry(paidBill).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!PaidBillExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public ActionResult Create([Bind(Include = "BillId,Date,StatusId,PublisherId")] PaidBill paidBill, string billtext) { if (ModelState.IsValid) { List <Receipt> r = new List <Receipt>(); var lines = billtext.Split('\n'); foreach (var line in lines) { if (line == "") { continue; } var data = line.Split('\t'); var a = new Receipt(); a.ItemId = Convert.ToInt32(data[0].Split(':')[0]); a.Quantity = Convert.ToInt32(data[1].Split(':')[1]); a.Price = Convert.ToInt32(data[2].Split(':')[1]); int index = r.FindIndex(x => x.ItemId == a.ItemId); if (index > -1) { r[index].Quantity += a.Quantity; r[index].Price = (r[index].Price > a.Price) ? r[index].Price : a.Price; } else { r.Add(a); } } paidBill.Price = 0; paidBill.Date = DateTime.Now; db.PaidBills.Add(paidBill); db.SaveChanges(); paidBill = db.PaidBills.Where(x => x.Publisher.PublisherId == paidBill.PublisherId).ToList().FindLast(x => x.PublisherId > -1); foreach (var receipt in r) { receipt.BillId = paidBill.BillId; db.Receipts.Add(receipt); paidBill.Price += receipt.Price * receipt.Quantity; } db.Entry(paidBill).State = EntityState.Modified; db.SaveChanges(); if (db.Status.Find(paidBill.StatusId).Name == "Đã Hoàn Thành") { Support.ReceiptItem(db, paidBill.BillId); } return(RedirectToAction("List")); } ViewBag.PublisherId = new SelectList(db.Publishers, "PublisherId", "Name", paidBill.PublisherId); ViewBag.StatusId = new SelectList(db.Status.Where(x => x.StatusId == 4 || x.StatusId == 6), "StatusId", "Name"); ViewBag.ItemId = new SelectList(db.Items, "ItemId", "Name"); ViewBag.billtext = billtext; return(View(paidBill)); }
public PaidBill UpdatePaidBill(string id, PaidBill billItem) { for (var index = _billItems.Count - 1; index >= 0; index--) { if (_billItems[index].ID == id) { _billItems[index] = billItem; } } return(billItem); }
public ActionResult Edit([Bind(Include = "BillId,Date,StatusId,PublisherId,Price")] PaidBill paidBill) { if (ModelState.IsValid) { db.Entry(paidBill).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PublisherId = new SelectList(db.Publishers, "PublisherId", "Name", paidBill.PublisherId); ViewBag.StatusId = new SelectList(db.Status, "StatusId", "Name", paidBill.StatusId); return(View(paidBill)); }
public static void InsertBill(PaidBill conta) { if (!_firstRun) { _paidBillsObs.Add(conta); var tbills = _paidBillsObs.OrderBy(x => x.DataVencimento).ToList(); _paidBillsObs.Clear(); foreach (var item in tbills) { _paidBillsObs.Add(item); } } }
// GET: Admin/PaidBills/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PaidBill paidBill = db.PaidBills.Find(id); if (paidBill == null) { return(HttpNotFound()); } return(View(paidBill)); }
// GET: Admin/PaidBills/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PaidBill paidBill = db.PaidBills.Find(id); if (paidBill == null) { return(HttpNotFound()); } ViewBag.PublisherId = new SelectList(db.Publishers, "PublisherId", "Name", paidBill.PublisherId); ViewBag.StatusId = new SelectList(db.Status, "StatusId", "Name", paidBill.StatusId); return(View(paidBill)); }
private async void Paga_Clicked(object sender, EventArgs e) { double value = 0; var bill = (sender as MenuItem).CommandParameter as Bill; // Etapa 0: se a conta for recorrente, pegar novo valor. // Nessa etapa , o usuário pode cancelar a inserção // Abaixo trataremos sobre esse cenário if (bill.IsMensal) { string dados = await DisplayPromptAsync("Conta Recorrente", "Digite o novo valor da conta para o próximo mês:", "Ok", "Cancelar", "Ex: 120", -1, Keyboard.Numeric, bill.Valor.ToString()); if (String.IsNullOrWhiteSpace(dados)) { return; } try { value = Convert.ToDouble(dados); } catch (FormatException) { return; } catch (OverflowException) { return; } if (value == 0) { return; } } // Etapa 1: Remover notificação e remover do BD de dívidas e da view CrossLocalNotifications.Current.Cancel(bill.Id); _bills.Remove(bill); var tbills = _bills.OrderBy(x => x.DataVencimento).ToList(); _bills.Clear(); foreach (var item in tbills) { _bills.Add(item); } await _conn.DeleteAsync(bill); // Etapa 2: Criar o objeto divida paga e inserir na view das pagas PaidBill billPaid = new PaidBill { Id = -1, Titulo = bill.Titulo, DataVencimento = bill.DataVencimento, Descricao = bill.Descricao, Valor = bill.Valor }; await _conn.InsertAsync(billPaid); var temp1 = await _conn.Table <PaidBill>().OrderByDescending(x => x.Id).FirstAsync(); billPaid.Id = temp1.Id; PaidBillsView.InsertBill(billPaid); // Etapa 3 - se a dívida é mensal, criar nova para daqui a um mês. if (bill.IsMensal) { Bill novaDivida = new Bill { Titulo = bill.Titulo, Descricao = bill.Descricao, DataVencimento = bill.DataVencimento.AddMonths(1), IsMensal = true, Valor = value }; await _conn.InsertAsync(novaDivida); var temp2 = await _conn.Table <Bill>().OrderByDescending(x => x.Id).FirstAsync(); novaDivida.Id = temp2.Id; // Se a pessoa pagou essa dívida com mais de 1 mês de atraso, sua próxima boleta já está atrasada // A linha abaixo irá ver isso e direcionar pra view certa if (novaDivida.DataVencimento.Subtract(DateTime.Now).Days < 0) { OverdueBills.InsertBill(novaDivida); CrossLocalNotifications.Current.Show("Você tem conta(s) atrasada(s)!", "Abra o App clicando aqui para ver mais detalhes", 0, DateTime.Today.AddDays(1).AddHours(12)); } else { Dividas.InsertBill(novaDivida); if (DateTime.Now.Subtract(novaDivida.DataVencimento.AddHours(12)).Hours < 0) { CrossLocalNotifications.Current.Show($"A conta {novaDivida.Titulo} vence hoje", $"Valor: R${String.Format("{0:F2}", novaDivida.Valor)} - Clique aqui para abrir o App", novaDivida.Id, novaDivida.DataVencimento.AddHours(12)); } } await DisplayAlert("Conta recorrente!", $"A conta {novaDivida.Titulo} foi criada com vencimento em {novaDivida.DataMensal}", "Ok"); } CalculateSum(); }
public ActionResult <PaidBill> UpdatePaidBill(string id, PaidBill bill) { _service.UpdatePaidBill(id, bill); return(bill); }
public ActionResult <PaidBill> AddPaidBill(PaidBill bill) { _service.AddPaidBill(bill); return(bill); }
public PaidBill AddPaidBill(PaidBill billItem) { _billItems.Add(billItem); return(billItem); }