public void Add(NotificationBase notification)
 {
     
     if(notification ==null) return;
     var item = new OutGoingNotificationQueueItemLocal();
     item.NotificationId = Guid.NewGuid();
     item.DateInserted = DateTime.Now;
     item.DateSent = DateTime.Now;
     item.IsSent = false;
     if(notification is NotificationOrderSale)
     {
         var n = notification as NotificationOrderSale;
         item.Type = NotificationType.OrderSale;
         item.JsonDTO = JsonConvert.SerializeObject(n);
         AddItem(item);
     }
     if (notification is NotificationInvoice)
     {
         var n = notification as NotificationInvoice;
         item.Type = NotificationType.Invoice;
         item.JsonDTO = JsonConvert.SerializeObject(n);
         AddItem(item);
     }
     if (notification is NotificationReceipt)
     {
         var n = notification as NotificationReceipt;
         item.Type = NotificationType.Receipt;
         item.JsonDTO = JsonConvert.SerializeObject(n);
         AddItem(item);
     }
     if (notification is NotificationPurchase)
     {
         var n = notification as NotificationPurchase;
         item.Type = NotificationType.CommodityPurchase;
         item.JsonDTO = JsonConvert.SerializeObject(n);
         AddItem(item);
     }
     if (notification is NotificationDispatch)
     {
         var n = notification as NotificationDispatch;
         item.Type = NotificationType.OrderDispatch;
         item.JsonDTO = JsonConvert.SerializeObject(n);
         AddItem(item);
     }
    
 }
       private void AddItem(OutGoingNotificationQueueItemLocal itemToAdd)
       {
           OutGoingNotificationQueueItemLocal existing = _ctx.OutGoingNotificationQueueItemLocals.FirstOrDefault(p => p.Id == itemToAdd.Id);
           if (existing == null)
           {
               existing = new OutGoingNotificationQueueItemLocal();
               _ctx.OutGoingNotificationQueueItemLocals.Add(existing);
           }
           existing.NotificationId = itemToAdd.NotificationId;
           existing.Type = itemToAdd.Type;
           existing.DateInserted = itemToAdd.DateInserted;
           existing.DateSent = itemToAdd.DateSent;
           existing.IsSent = false;
           existing.JsonDTO = itemToAdd.JsonDTO;

           _ctx.SaveChanges();
       }