Ejemplo n.º 1
0
        public static SuggestedJobsEmail Create(ICommunicationUser to, IEnumerable <JobAd> jobAds, int totalMatches)
        {
            var emailItems = CreateEmailItems(jobAds);
            var email      = new SuggestedJobsEmail(to, totalMatches, emailItems);

            return(email);
        }
Ejemplo n.º 2
0
        public void Run(Guid userId, DateTime lastRunTime)
        {
            const string method = "Run";

            // The user has to be active to receive this email.

            if (!_userAccountsQuery.IsActive(userId))
            {
                #region Log

                Logger.Raise(Event.Trace, method, "The user is not active and therefore won't get any suggested jobs.",
                             Event.Arg("userId", userId));

                #endregion
                return;
            }

            var member = _membersQuery.GetMember(userId);

            var execution = _jobAdSearchCommand.SearchSuggested(member, DateTime.Now - lastRunTime, new Range(0, MaxResults));

            if (execution.Results.JobAdIds.Count == 0)
            {
                #region Log

                Logger.Raise(Event.Trace, method, "No new suggested jobs were found.", Event.Arg("userId", userId));

                #endregion
                return;
            }

            var jobAdIds = execution.Results.JobAdIds.Take(MaxResults).ToList();
            var jobAds   = _jobAdsQuery.GetJobAds <JobAd>(jobAdIds).ToDictionary(j => j.Id, j => j);

            var emailJobAds = from i in jobAdIds
                              where jobAds.ContainsKey(i)
                              select jobAds[i];

            var to    = _membersQuery.GetMember(userId);
            var email = SuggestedJobsEmail.Create(to, emailJobAds, execution.Results.JobAdIds.Count);

            var ok = _emailsCommand.TrySend(email);

            #region Log

            if (ok)
            {
                Logger.Raise(Event.Trace, method, "SuggestedJobsEmail sent.", Event.Arg("userId", userId));
            }
            else
            {
                Logger.Raise(Event.Warning, method, "Unable to send SuggestedJobsEmail.",
                             Event.Arg("userId", userId));
            }

            #endregion
        }