public void PublishUpdates(EarnedBadgeItemDTO earnedBadge) { foreach (IPublisher publisher in _publishers) { publisher.Publish(earnedBadge); } }
public EarnedBadgeItemDTO GetEarnedBadge(int badgeAwardId) { using (var ctx = new Entities()) { BadgeAward badgeAward = ctx.BadgeAwards.Include(b => b.Badge).SingleOrDefault(badges => badges.BadgeAwardId == badgeAwardId); if (badgeAward == null) { throw new NotFoundException(string.Format("Badge award with id {0} was not found", badgeAwardId)); } var earnedBadge = new EarnedBadgeItemDTO { BadgeAwardId = badgeAward.BadgeAwardId, AwardDate = badgeAward.AwardDate, AwardPoints = badgeAward.Badge.BadgeAwardValueAmount, BadgePriority = badgeAward.Badge.BadgePriority, DisplayOnce = badgeAward.Badge.DisplayOnce, EmployeeADName = badgeAward.Employee.ADName, Id = badgeAward.BadgeAwardId, ImagePath = badgeAward.Badge.BadgePath, Name = badgeAward.Badge.BadgeName, PaidOut = badgeAward.PaidOut, Tagline = badgeAward.Badge.BadgeTagLine, Type = (Common.Enums.BadgeType)badgeAward.Badge.BadgeTypeId }; return(earnedBadge); } }
public void PublishHarness() { var dto = new EarnedBadgeItemDTO { EmployeeADName = "billzi", Name = "testBadgeName3", ImagePath = "testImagePath3", Tagline = "testTagLine3" }; var yp = new YammerPublisher(); yp.Publish(dto); }
internal void Load(EarnedBadgeItemDTO item) { this.BadgeAwardId = item.BadgeAwardId; this.Id = item.Id; this.Name = item.Name; this.Description = item.Description; this.Type = item.Type; this.ImagePath = item.ImagePath; this.Tagline = item.Tagline; this.AwardDate = item.AwardDate; this.AwardPoints = item.AwardPoints; this.PaidOut = item.PaidOut; this.BadgePriority = item.BadgePriority; this.DisplayOnce = item.DisplayOnce; }
public void Publish(EarnedBadgeItemDTO earnedBadge) { //Get the user that earned the badge string userEmail = string.Format("{0}@magenic.com", earnedBadge.EmployeeADName); string userUrl = GetUserUrl(userEmail); try { var response = MakeGetRequest(userUrl, Token); YammerUser yammerUser = YammerUser.GetInstanceFromJson(response.Substring(1, response.Length - 2)); //let's post a message now to this group bool broadcastToAll = false; string msg = string.Format(YammerMessageText, yammerUser.UserID, earnedBadge.Name, broadcastToAll.ToString(), "https://badgeapplication.magenic.com/", earnedBadge.ImagePath, earnedBadge.Name, earnedBadge.Tagline); //try adding the message response = MakePostRequest(msg, MessageUrl, Token); if (!string.IsNullOrEmpty(response)) { YammerMessage newMsg = YammerMessage.GetInstanceFromJson(response); } } catch (WebException ex) { var httpResponse = ex.Response as HttpWebResponse; if (httpResponse != null && httpResponse.StatusCode == HttpStatusCode.NotFound) { Logger.Warn <YammerPublisher>(string.Format("Problem getting Yammer information for URL: {0}. Most likely cause is the user was not setup in Yammer, continuing to process.", userUrl)); } else { throw; } } }
public void ProcessItem(QueueItemDTO latestItem) { try { EarnedBadgeItemDTO earnedBadge = _earnedBadgeDAL.GetEarnedBadge(latestItem.BadgeAwardId); RegisterQueueItemProgress(QueueEventType.Processing, latestItem); PublishUpdates(earnedBadge); _queueItemDAL.Delete(latestItem.QueueItemId); RegisterQueueItemProgress(QueueEventType.Processed, latestItem); } catch { RegisterQueueItemProgress(QueueEventType.Failed, latestItem); throw; } }
public void Publish(EarnedBadgeItemDTO earnedBadge) { var userEmail = $"{earnedBadge.EmployeeADName}@magenic.com"; try { // Get the user that earned the badge from IT's service endpoint var dataServiceUri = new Uri(DataServiceUrl, UriKind.Absolute); var context = new MagenicDataEntities(dataServiceUri) { Credentials = CredentialCache.DefaultCredentials }; var employee = context.vwODataEmployees.Where(e => e.EMailAddress == userEmail).FirstOrDefault(); var leaderboardUrl = string.Format(LeaderboardUrl, earnedBadge.EmployeeADName); var body = string.Format(MessageText, employee.EmployeeFullName, earnedBadge.Name); var flowMessageRequest = new FlowMessageRequest { eventType = EventType.TeamsTestingEventType.ToString(), // TODO: Add logic to handle event type, using MS Teams for now summary = "Badge Award!", // TODO: Think about how to construct summary text body = body, ogImage = earnedBadge.ImagePath, ogTitle = earnedBadge.Name, ogDescription = earnedBadge.Tagline, ogUrl = leaderboardUrl }; //try adding the message MakePostRequest(flowMessageRequest, FlowEndpoint); } catch (Exception) { // TODO: handle error responses throw; } }