/// <summary> /// Add dailydigest data into the DailyDigest database table /// </summary> /// <param name="dailyDigestList"></param> public void AddDailyDigest(List <DailyDigestModel> dailyDigestList) { lock (collisionLock) { int status = database.Table <DailyDigest>().Delete(e => e.email == Settings.Email); foreach (var d in dailyDigestList) { DailyDigest dailyDigest = new DailyDigest(); dailyDigest.id = d.id; dailyDigest.text = d.text; dailyDigest.email = Settings.Email; dailyDigest.publish_date = d.publish_date.ToString(); database.Insert(dailyDigest); } } }
public ActionResult SendDailyDigestEmails(string guid) { HttpContext.Server.ScriptTimeout = 600; Verify.Argument.IsNotEmpty(guid, "guid"); var accountGuid = Guid.Parse(guid); var fbAccount = DbContext.FbAccounts .Include("Settings") .SingleOrDefault(a => a.Settings.Guid == accountGuid); if (fbAccount != null) { object projects = null; object milestones = null; object subProjectParentCases = null; //Getting projects and milestones var cacheKey = MsCacheKey.Gen(MsCacheDataType.TR_Projects, fbAccount.Url); MsCache.TryGet(cacheKey, ref projects); cacheKey = MsCacheKey.Gen(MsCacheDataType.TR_Milestones, fbAccount.Url); MsCache.TryGet(cacheKey, ref milestones); if (projects == null || milestones == null) { var client = new FogBugzClientEx(); client.LogOn(fbAccount.Url + "/api.asp", fbAccount.Token); XCallContextUtils.SetData("FogBugzClient", client); UserContext.FbAccountId = fbAccount.Id; UserContext.IsLoggedIn = true; FbAccountContext.GetContextFbAccountIdMethod(); projects = FogBugzGateway.GetProjects(); milestones = FogBugzGateway.GetMilestones(); subProjectParentCases = FogBugzGateway.GetSubProjectParentCases(); } var projectMilestoneList = new ProjectMilestoneList(UserContext.FogBugzUrl); projectMilestoneList.GetList((List<Project>)projects, (List<FixFor>)milestones, (List<Case>)subProjectParentCases, 20); //getting statuses object storedObect = null; cacheKey = MsCacheKey.Gen(MsCacheDataType.ProjectsStatuses, fbAccount.Url); Dictionary<ProjectStatusListItem, ProjectStatus> result = null; if (MsCache.TryGet(cacheKey, ref storedObect)) { var statuses = (Dictionary<ProjectStatusListItem, ProjectStatusEx>) storedObect; result = statuses.Select(s => new KeyValuePair<ProjectStatusListItem, ProjectStatus>(s.Key, new ProjectStatus(){Status = s.Value.Status, StatusValue = s.Value.StatusValue})) .ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value); ; } else { var projectStatusesLoader = new ProjectStatusListLoader(fbAccount.Url); result = projectStatusesLoader.GetProjectStatuses(projectMilestoneList.Items); } //sending emails var emails = fbAccount.Settings.SendDailyDigestEmailsTo.Split(','); foreach (var email in emails) { var dailyDigest = new DailyDigest(projectMilestoneList, result, fbAccount.Settings.AllowSubProjects, email); dailyDigest.Send(); } } return View(); }