public GetWebVisitDailySummaryResponse GetWebVisitDailySummary(GetWebVisitDailySummaryRequest request) { GetWebVisitDailySummaryResponse response = new GetWebVisitDailySummaryResponse(); response.WebVisits = webAnalyticsProviderRepository.GetWebVisitDailySummary(request.AccountId, request.StartDate, request.EndDate); return(response); }
public static void Trigger(object stateInfo) { try { if (dailySummaryInprogress) { return; } dailySummaryInprogress = true; Logger.Current.Verbose("WebVisit DailySummary Processor triggered"); string includeToday = System.Configuration.ConfigurationManager.AppSettings["INCLUDE_CURRENT_DAY_IN_DAILY_SUMMARY"].ToLower(); var webAnalyticProviders = accountRepository.GetWebAnalyticsProviders(); var accounts = webAnalyticProviders.Select(a => a.AccountID); var startDate = DateTime.Now.ToUniversalTime().Date.AddDays(-1); var endDate = includeToday == "true" ? DateTime.Now.ToUniversalTime() : DateTime.Now.ToUniversalTime().Date; foreach (var accountId in accounts) { Logger.Current.Informational("Current Account:", accountId.ToString()); var account = accountRepository.GetAccountBasicDetails(accountId); var webAnalyticProvider = webAnalyticProviders.Where(p => p.AccountID == accountId).FirstOrDefault() ?? new WebAnalyticsProvider(); var accountInfo = new AccountBasicInfo() { AccountID = accountId, AccountName = account.AccountName, TimeZone = account.TimeZone, WebAnalyticsID = webAnalyticProvider.Id }; GetDropdownValueResponse lifeCycleStages = dropdownService.GetDropdownValue(new GetDropdownValueRequest() { AccountId = accountInfo.AccountID, DropdownID = (byte)DropdownFieldTypes.LifeCycle }); var emailProviderResponse = communicationService.GetEmailProviders(new GetEmailProvidersRequest() { AccountId = accountInfo.AccountID }); if (emailProviderResponse.Exception != null) { throw emailProviderResponse.Exception; } var communicationResponse = communicationService.GetDefaultCampaignEmailProvider(new GetDefaultCampaignEmailProviderRequest() { AccountId = accountInfo.AccountID }); var serviceProviderGuids = emailProviderResponse.ServiceProviderGuids; MailRegistrationDb mailRegistration = mailService.GetVMTADetails(serviceProviderGuids); var providerDetails = accountService.GetTransactionalProviderDetails(accountInfo.AccountID); string emailContentToAdmins = string.Empty; try { TimeZoneInfo accountTzInfo = TimeZoneInfo.FindSystemTimeZoneById(accountInfo.TimeZone); startDate = TimeZoneInfo.ConvertTimeFromUtc(startDate, accountTzInfo); endDate = includeToday == "true" ? endDate : TimeZoneInfo.ConvertTimeFromUtc(endDate, accountTzInfo); Logger.Current.Informational("StartDate After: " + startDate); Logger.Current.Informational("StartDate After: " + endDate); GetWebVisitDailySummaryResponse response = webAnalyticsService.GetWebVisitDailySummary(new GetWebVisitDailySummaryRequest() { AccountId = accountInfo.AccountID, StartDate = startDate, EndDate = endDate }); GetUsersOptedWebVisitSummaryEmailResponse users = userService.GetUsersOptedWebVisitSummaryEmail(new GetUsersOptedWebVisitSummaryEmailRequest() { AccountId = accountInfo.AccountID }); byte status = accountRepository.GetAccountStatus(accountInfo.AccountID); if (status != (byte)AccountStatus.Suspend) { string emailCopyContent = string.Empty; #region Send Mail To Owner foreach (UserBasicInfo userInfo in users.AllUsers) { Logger.Current.Informational("Sending daily summary email to user: "******". To owner: " + userInfo.Email); try { List <WebVisitReport> relatedVisits = response.WebVisits.Where(c => c.OwnerID == userInfo.UserID).OrderBy(c => c.VisitedOn).ToList(); string emailContent = GetEmailContent(accountInfo, relatedVisits, lifeCycleStages, userInfo.FirstName + " " + userInfo.LastName); if (emailContent.Length > 0) { emailCopyContent = emailCopyContent + emailContent + "<br><hr>"; } if (webAnalyticProvider.DailyStatusEmailOpted && emailContent.Length > 0) { NotifyByEmail(accountInfo, "SmartTouch Web Visit Daily Summary", providerDetails, userInfo.Email, emailContent); } } catch (Exception ex) { Logger.Current.Error("Error occured while sending web visit daily summary emails for account user: "******" " + userInfo.Email, ex); } } #endregion #region Send Mail To Opted User //add no owner visits to html List <WebVisitReport> unassignedVisits = response.WebVisits.Where(v => ((v.OwnerID.HasValue) ? v.OwnerID.Value == 1 : v.OwnerID == null)).OrderBy(c => c.VisitedOn).ToList(); emailCopyContent += GetEmailContent(accountInfo, unassignedVisits, lifeCycleStages, "Not Assigned"); foreach (UserBasicInfo userInfo in users.UsersOpted) { Logger.Current.Informational("ADMIN - Sending daily summary email to user: "******". To owner: " + userInfo.Email); try { if (emailCopyContent.Length > 0) { NotifyByEmail(accountInfo, "SmartTouch Web Visit Daily Summary", providerDetails, userInfo.Email, emailCopyContent + "<br>"); } } catch (Exception ex) { Logger.Current.Error("Error occured while sending Opted User Daily Web Visit Daily Summary email for user: "******" " + userInfo.Email, ex); } } #endregion } } catch (Exception ex) { Logger.Current.Error("Error occured while sending web visit daily summary emails for account: " + accountInfo, ex); } } dailySummaryInprogress = false; Logger.Current.Informational("Completed processing daily summary emails"); } catch (Exception ex) { dailySummaryInprogress = false; Logger.Current.Error("Error occured while sending web visit daily summary emails", ex); } }