I have created one Background service that execute after every 5 minutes and this service used for sending email after 6 hour,24 hour and 48 hour for user booking order is not confirmed.
for that i have created below method and enums.
public enum Enum_AbandonedCartEmailNotifyHour { Hour06 = 6, Hour24 = 24, Hour48 = 48 } public enum Enum_AbandonedCartEmailTemplateSlug { Abandonedcart6hr, Abandonedcart24hr, Abandonedcart48hr }
and in service timer every time i have called below method.
public void ProcessOrders() { var abandoned6hrsOrders = Get6hrsOrders(); //get orders if(abandoned6hrsOrders.Count > 0) this.ProcessEmail(abandoned6hrsOrders, Enum_AbandonedCartEmailNotifyHour.Hour06, Enum_AbandonedCartEmailTemplateSlug.Abandonedcart6hr, Enum_AbandonedCartEmailNotifyStatus.Hour06); var abandoned24hrsOrders = Get24hrsOrders();//get orders if (abandoned24hrsOrders.Count > 0) this.ProcessEmail(abandoned24hrsOrders, Enum_AbandonedCartEmailNotifyHour.Hour24, Enum_AbandonedCartEmailTemplateSlug.Abandonedcart24hr, Enum_AbandonedCartEmailNotifyStatus.Hour24); var abandoned48hrsOrders = Get48hrsOrders();//get orders if (abandoned48hrsOrders.Count > 0) this.ProcessEmail(abandoned48hrsOrders, Enum_AbandonedCartEmailNotifyHour.Hour48, Enum_AbandonedCartEmailTemplateSlug.Abandonedcart48hr, Enum_AbandonedCartEmailNotifyStatus.Hour48); } ProcessAbandonedCartEmail(List<Order> orders, Enum_AbandonedCartEmailNotifyHour hours, Enum_AbandonedCartEmailTemplateSlug abandonedCartEmailSlug, Enum_AbandonedCartEmailNotifyStatus notifyStatus)
in above method i have checked validation and send email if valid and change notification status in database table.
now my question or doubt is what if in future required any changes or adding send email after 72hours or after 3 hours.
please suggest me to best way to design this code. i have no idea for this or i have written code is good or right or any required changes. and sorry for my english.
thanks in advance.