using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PersonalFinance.Entity { public class Scheduler { ScheduledItemService schsrv; PaymentService paymentsrv; EntityContext ctx; private static int loop = 0; public Scheduler(EntityContext ctx){ if (loop < 1) { paymentsrv = new PaymentService(ctx); schsrv = new ScheduledItemService(ctx); this.ctx = ctx; Daily(); Weekly(); Monthly(); Quartely(); Biannually(); Yearly(); loop++; } } private void Daily() { //podiva se na naposledy pouzite casy u ScheduleItem ktere maji nastaveno daily //a provede zapis techto plateb tolikrat kolikrat je potreba List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse < DateTime.Now && i.Frequency == Frequency.Daily); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } private void Weekly() { List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse.Day <= (DateTime.Now.Day - 7) && i.Frequency == Frequency.Weekly); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } private void Monthly() { List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse.Month < (DateTime.Now.Month) && i.Frequency == Frequency.Monthly); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++ ) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } private void Quartely() { List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse.Month < (DateTime.Now.Month - 3) && i.Frequency == Frequency.Quarterly); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } private void Biannually() { List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse.Month < (DateTime.Now.Month - 6) && i.Frequency == Frequency.Biannually); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } private void Yearly() { List schPayments = schsrv.GetAllScheduledItems() .FindAll(i => i.LastUse.Year < DateTime.Now.Year && i.Frequency == Frequency.Yearly); if (schPayments.Count > 0) { ScheduledPayment[] s = schPayments.ToArray(); for (int i = 0; i < schPayments.Count; i++) { Payment p = s[i].ToPayment(); p.User = s[i].User; paymentsrv.AddPayment(p); s[i].LastUse = DateTime.Now; ctx.SaveChanges(); } } } } }