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 PaymentService
{
private EntityContext _context;
public PaymentService(EntityContext context)
{
_context = context;
}
///
/// Add new payment
///
///
/// Added payment
public Payment AddPayment(Payment p)
{
_context.Payments.Add(p);
_context.SaveChanges();
return p;
}
///
/// Create and add new payments
///
///
///
///
///
///
///
///
/// Added payment
public Payment AddPayment(int price, PaymentCurrency currency, DateTime date, string purpose, bool paid, PaymentGroup group)
{
return AddPayment(price, currency, date, purpose, paid, group, null);
}
///
/// Create and add new payment with note
///
///
///
///
///
///
///
///
///
/// Added payment
public Payment AddPayment(int price, PaymentCurrency currency, DateTime date, string purpose, bool paid,
PaymentGroup group, string note)
{
return AddPayment(new Payment()
{
Price = price,
Currency = currency,
Date = date,
Purpose = purpose,
Paid = paid,
Group = group,
Note = note
});
}
///
/// Retrieve all payments
///
/// List of payments
public List GetAllPayments()
{
return _context.Payments.ToList();
}
///
/// Get payment by id (primary key)
///
/// Primary key
/// Payment
public Payment GetPayment(int id)
{
return _context.Payments.FirstOrDefault(i => i.PaymentId == id);
}
///
/// Update payment
///
/// Payment for update
/// Updated payment
public Payment UpdatePayment(Payment p)
{
_context.Payments.Add(p);
_context.SaveChanges();
return p;
}
///
/// Delete payment by ID (primary key)
///
/// Primary key
/// Deleted payment
public Payment DeletePayment(int id)
{
Payment p = GetPayment(id);
if (p != null)
{
Payment deleted = _context.Payments.Remove(p);
_context.SaveChanges();
return deleted;
}
else
{
throw new IndexOutOfRangeException("Payment with ID " + id + " don't exist!");
}
}
///
/// Delete payment
///
/// Payment to delete
/// Deleted payment
public Payment DeletePayment(Payment p)
{
Payment deleted = _context.Payments.Remove(p);
_context.SaveChanges();
return deleted;
}
}
}