コード例 #1
0
 public void PublishUpdates(EarnedBadgeItemDTO earnedBadge)
 {
     foreach (IPublisher publisher in _publishers)
     {
         publisher.Publish(earnedBadge);
     }
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        public void PublishHarness()
        {
            var dto = new EarnedBadgeItemDTO
            {
                EmployeeADName = "billzi",
                Name           = "testBadgeName3",
                ImagePath      = "testImagePath3",
                Tagline        = "testTagLine3"
            };

            var yp = new YammerPublisher();

            yp.Publish(dto);
        }
コード例 #4
0
 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;
 }
コード例 #5
0
        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;
                }
            }
        }
コード例 #6
0
        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;
            }
        }
コード例 #7
0
        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;
            }
        }