using PersonalFinance.Entity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PersonalFinance { /// /// Service for communication to database /// public class ScheduledItemService { private EntityContext _context; public ScheduledItemService(EntityContext context) { _context = context; } /// /// Add ScheduledItem /// /// ScheduledItem /// Added ScheduledItem public ScheduledPayment AddScheduledItem(ScheduledPayment p) { _context.ScheduledPayments.Add(p); _context.SaveChanges(); return p; } /// /// Add payment to scheduling /// /// Payment to scheduling /// Frequency of scheduling /// ScheduledItem public ScheduledPayment AddPayment(int price, PaymentCurrency currency, string purpose, PaymentGroup group, Frequency freq) { return AddPayment(price, currency, purpose, group, freq, DateTime.Now, null); } /// /// Add payment to scheduling /// /// Payment to scheduling /// Frequency of scheduling /// /// ScheduledItem public ScheduledPayment AddPayment(int price, PaymentCurrency currency, string purpose, PaymentGroup group, Frequency freq, DateTime lastUsed) { return AddPayment(price, currency, purpose, group, freq, lastUsed, null); } /// /// Add payment to scheduling /// /// Payment to scheduling /// Frequency of scheduling /// /// How long to be scheduled /// ScheduledItem public ScheduledPayment AddPayment(int price, PaymentCurrency currency, string purpose, PaymentGroup group, Frequency freq, DateTime lastUsed, DateTime? until) { return AddScheduledItem(new ScheduledPayment() { Price = price, Currency = currency, Purpose = purpose, Group = group, Frequency = freq, LastUse = lastUsed, Until = until }); } /// /// Retrieve all ScheduledItems /// /// public List GetAllScheduledItems() { return _context.ScheduledPayments.ToList(); } /// /// Get ScheduledItems by ID (primary key) /// /// Primary key /// ScheduledItems public ScheduledPayment GetScheduledItem(int id) { return _context.ScheduledPayments.FirstOrDefault(i => i.ScheduledItemId == id); } /// /// Update ScheduledItems /// /// ScheduledItems to update /// Updated ScheduledItems public ScheduledPayment UpdateScheduledItems(ScheduledPayment p) { _context.ScheduledPayments.Add(p); _context.SaveChanges(); return p; } /// /// Delete ScheduledItems by ID (Primary key) /// /// Primary key /// Deleted ScheduledItems public ScheduledPayment DeleteScheduledItem(int id) { ScheduledPayment p = GetScheduledItem(id); if (p != null) { ScheduledPayment deleted = _context.ScheduledPayments.Remove(p); _context.SaveChanges(); return deleted; } else { throw new IndexOutOfRangeException("ScheduledItem with ID " + id + " don't exist!"); } } /// /// Delete ScheduledItems /// /// ScheduledItems to delete /// Deleted ScheduledItems public ScheduledPayment DeleteScheduledItem(ScheduledPayment p) { ScheduledPayment deleted = _context.ScheduledPayments.Remove(p); _context.SaveChanges(); return deleted; } } }