Пример #1
0
        // PUT api/reviewsession/5/assignreviewer
        public HttpResponseMessage Put(int id, string patch, ReviewSession session)
        {
            HttpResponseMessage response;
            var username = GetAPIUser();

            try
            {
                switch (patch)
                {
                case "archive":
                    _manager.Archive(id, username);
                    break;

                case "release-session":
                    _manager.Release(id, username);
                    break;

                default:
                    _manager.Edit(session, username);
                    break;
                }

                response = GetResponse(id.ToNullSafeString());
            }
            catch (Exception e)
            {
                response = GetResponse(e);
            }

            return(response);
        }
        private void timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            ApplicationSession.Invoker.BeginInvoke(new Action(() =>
            {
                if (ActiveThoughts.Count == 0)
                {
                    return;
                }

                if (ReviewSession != null)
                {
                    ReviewSession.RepostCurrent();
                }

                Message message = ActiveThoughts[ActiveThoughts.Count - 1];
                ActiveThoughts.Remove(message);
                RaiseUpdate("ActiveThoughts");

                StaleThoughts.Add(message);
                RaiseUpdate("StaleThoughts");

                ReviewSession = new MessageReviewSession(message, result =>
                {
                    if (result.Status == Status.Active)
                    {
                        ActiveThoughts.Insert(0, result);
                        RaiseUpdate("ActiveThoughts");
                    }
                    ReviewSession = null;
                    RaiseUpdate("ReviewSession");
                });
                RaiseUpdate("ReviewSession");
            }), null);
        }
Пример #3
0
        public void Process(ReviewSession session)
        {
            _repository.SaveReviewSession(session);

            MailMessage message = _generator.CreateContentAddedNotification();

            _sender.SendNotification(message);
        }
 public static PatchRequest[] GetSaveQuestionnairePatch(ReviewSession session)
 {
     return(new[] { new PatchRequest {
                        Type = PatchCommandType.Set,
                        Name = "Questions",
                        Value = RavenJObject.FromObject(session)
                    } });
 }
Пример #5
0
        /// <summary>
        /// Creates a new review session within the system.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="current"></param>
        /// <exception cref="InvalidOperationException"></exception>
        public void Create(ReviewSession session, string current)
        {
            if (session.Id != 0)
            {
                throw new InvalidOperationException("Cannot create a new session with the 'Id' field already populated.");
            }

            session.Creator       = current;
            session.LastModified  = DateTime.UtcNow;
            session.SessionStatus = SessionStatusType.Created;

            _sessionRepository.Save(session);
        }
Пример #6
0
        public void CompleteQuestionnaire_Fails_Not_Found()
        {
            var mockSession = new Mock <IDocumentSession>();
            var sessionRepo = new Mock <AbstractRepository <ReviewSession> >(mockSession.Object);
            var eventRepo   = new Mock <AbstractRepository <Event> >(mockSession.Object);

            // Create a new session to work with
            ReviewSession session = null;

            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);

            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <SessionNotFoundException>(() => manager.CompleteQuestionnaire(1, new List <Question>(), "test"));
        }
Пример #7
0
        /// <summary>
        /// Updates an existing session.
        /// </summary>
        /// <remarks>Saving after session has been released will be disallowed as only feedback and answers will be provided
        /// until the session is archived. There are seperate manager operations to handle these operations.</remarks>
        /// <param name="session"></param>
        /// <param name="current">The username of the API user</param>
        /// <exception cref="InvalidOperationException"></exception>
        /// <exception cref="AuthorizationException"></exception>
        public void Edit(ReviewSession session, string current)
        {
            if (session.SessionStatus != SessionStatusType.Created)
            {
                throw new InvalidOperationException("Session can't be edited after it has been released.");
            }

            if (session.Creator.ToLower() != current.ToLower())
            {
                throw new AuthorizationException();
            }

            session.LastModified = DateTime.UtcNow;
            _sessionRepository.Save(session);
        }
        public void AssignReviewer_Fails_NotFound()
        {
            var mockSession = new Mock <IDocumentSession>();
            var sessionRepo = new Mock <AbstractRepository <ReviewSession> >(mockSession.Object);
            var eventRepo   = new Mock <AbstractRepository <Event> >(mockSession.Object);

            // Create a new session to work with
            ReviewSession session = null;

            sessionRepo.Setup(r => r.Get(It.IsAny <int>())).Returns(session);


            var manager = new ReviewSessionManager(sessionRepo.Object, eventRepo.Object);

            Assert.Throws <SessionNotFoundException>(() => manager.AssignReviewer(-1, "*****@*****.**", "*****@*****.**"));
        }
Пример #9
0
        // POST api/reviewsession
        public HttpResponseMessage Post(ReviewSession session)
        {
            HttpResponseMessage response;
            var username = GetAPIUser();

            try
            {
                _manager.Create(session, username);
                response = GetResponse(session.Id.ToNullSafeString());
            }
            catch (Exception e)
            {
                response = GetResponse(session.Id.ToNullSafeString());
            }

            return(response);
        }
Пример #10
0
        public ReviewSession NewReviewSession()
        {
            var session = new ReviewSession();

            session.Title   = "Session 1";
            session.Creator = "*****@*****.**";

            var requirements1 = new Requirement();

            requirements1.Content = "This is requirement 1";

            var requirements2 = new Requirement();

            requirements2.Content = "This is requirement 2";

            var requirements3 = new Requirement();

            requirements3.Content = "This is requirement 3";


            session.Requirements = new List <Requirement> {
                requirements1, requirements2, requirements3
            };

            var question1 = new Question {
                Content = "This is question 1"
            };
            var question2 = new Question {
                Content = "This is question 2"
            };

            session.Questions = new List <Question> {
                question1, question2
            };

            return(session);
        }
 public void SaveReviewSession(ReviewSession reviewSession)
 {
     // Flush those changes
     _session.Store(reviewSession);
     _session.SaveChanges();
 }
 // POST api/reviewsession
 public HttpResponseMessage Post(ReviewSession data)
 {
     _manager.Process(data);
     return(new HttpResponseMessage(HttpStatusCode.OK));
 }