Click here to Skip to main content
15,887,485 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I went through similar questions but it dint solve my purpose. Im using the same code in 2 ways : 1. directly through button press 2. Through scheduled tasks.

By method 1 it works fine but method 2 gives that error. My code :

Service -

public virtual int SendCampaign(Campaign campaign, EmailAccount emailAccount,
        IEnumerable<newslettersubscription> subscriptions)
    {
        var campaignSubscriberTrack = new CampaignNewsletterSubscriberTrack();
        if (campaign == null)
            throw new ArgumentNullException("campaign");

        if (emailAccount == null)
            throw new ArgumentNullException("emailAccount");

        int totalEmailsSent = 0;

        foreach (var subscription in subscriptions)
        {
            var tokens = new List<token>();
            _messageTokenProvider.AddStoreTokens(tokens);
            _messageTokenProvider.AddNewsLetterSubscriptionTokens(tokens, subscription);

            string subject = _tokenizer.Replace(campaign.Subject, tokens, false);
            string body = _tokenizer.Replace(campaign.Body, tokens, true);

            var email = new QueuedEmail()
            {
                Priority = 3,
                From = emailAccount.Email,
                FromName = emailAccount.DisplayName,
                To = subscription.Email,
                Subject = subject,
                Body = body,
                CreatedOnUtc = DateTime.UtcNow,
                EmailAccountId = emailAccount.Id
            };
            _queuedEmailService.InsertQueuedEmail(email);
            totalEmailsSent++;

            campaignSubscriberTrack.CampaignId = campaign.Id;
            campaignSubscriberTrack.NewsletterSubscriberId = subscription.Id;
            campaignSubscriberTrack.Campaign = campaign;
            campaignSubscriberTrack.NewsletterSubscription = subscription;
            campaignSubscriberTrack.IsEmailOpened = 0;
            campaignSubscriberTrack.OpenedOnUtc = null;
            Guid guid;
            string id = tokens.Where(t => t.Key.Equals("TrackImage")).Select(t => t.Value).FirstOrDefault();
            var lastPart = (id.Split('/').Last()).Split('=').Last();
            if (lastPart != null)
            {
                guid = new Guid(lastPart);
                campaignSubscriberTrack.ImageGUID = guid;
            }

            InsertCampaignNewsletterSubscriberTrack(campaignSubscriberTrack);

        }
        campaign.CampaignSchedulingTime = 0;
        UpdateCampaign(campaign); 

        return totalEmailsSent;
    }


Class -

public partial class CampaignNewsletterSubscriberTrack 
    {
        public virtual Campaign Campaign { get; set; }
        public virtual int CampaignId { get; set; }
        public virtual NewsLetterSubscription NewsletterSubscription { get; set; }
        public virtual int NewsletterSubscriberId { get; set; }
        public virtual int IsEmailOpened { get; set; }
        public virtual DateTime? OpenedOnUtc { get; set; }
        public virtual Guid ImageGUID { get; set; }
    }
}


Model -

public class CampaignNewsletterSubscriberTrackModel
{
    public int CampaignId { get; set; }

    public int NewsletterSubscriberId { get; set; }

    public int IsEmailOpened { get; set; }

    public DateTime? OpenedOnUtc { get; set; }

    public Guid ImageGUID { get; set; }
}


And in this function the record gets inserted -

public virtual void InsertCampaignNewsletterSubscriberTrack(CampaignNewsletterSubscriberTrack track)
        {
            if (track == null)
                throw new ArgumentNullException("track");

            _campaignNewsletterSubscriberTrackRepository.Insert(track);
        }


Error occurs at --> InsertCampaignNewsletterSubscriberTrack(campaignSubscriberTrack);

what should I do??? Can anyone tell me where I'm going wrong?
Posted
Updated 23-Jul-13 19:13pm
v4
Comments
Jameel VM 22-Jul-13 9:00am    
your question is not well formed. Please format it first.
riangel 24-Jul-13 1:04am    
@Jameel M : Now is it okay???

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900