Ejemplo n.º 1
0
        public async Task <ActionResult <PaidBill> > PostPaidBill(PaidBill paidBill)
        {
            _context.PaidBill.Add(paidBill);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetPaidBill", new { id = paidBill.Id }, paidBill));
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
 }
Ejemplo n.º 5
0
 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);
         }
     }
 }
Ejemplo n.º 7
0
        // 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));
        }
Ejemplo n.º 8
0
        // 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);
 }