Beispiel #1
0
        public void RegisterReviewer_ExistingReviewerId_ExpectReviewerAlreadyRegisteredException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            //Assert
            Assert.Throws <ReviewerAlreadyRegisteredException>(() => reviewService.RegisterReviewer("user-id"));
        }
Beispiel #2
0
        public void RemoveReview_Null_ExpectArgumentNullException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("reviewer");

            //Act
            //Assert
            Assert.Throws <ArgumentNullException>(() => reviewService.RemoveReview(null));
        }
Beispiel #3
0
        public void MakeReviewerAvailable_ReviewerAvailable_ExpectReviewerAlreadyAvailableException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            //Assert
            Assert.Throws <ReviewerAlreadyAvailableException>(() => reviewService.MakeReviewerAvailable("user-id"));
        }
Beispiel #4
0
        public void ResumeReviewer_ReviewerAvailable_ExpectReviewerNotSuspendedCannotBeResumedException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            //Assert
            Assert.Throws <ReviewerNotSuspendedCannotBeResumedException>(() => reviewService.ResumeReviewer("user-id"));
        }
Beispiel #5
0
        public void RemoveReview_EmptyReviewerList_ExpectArgumentException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("reviewer");

            //Act
            //Assert
            Assert.Throws <ArgumentException>(() => reviewService.RemoveReview(new string[0]));
        }
Beispiel #6
0
        public ActionResult ShowDetails(int id)
        {
            AnnouncementWithDetails announcement = AnnouncementsContext.GetAnnouncementById(id);
            List <Review>           reviews      = ReviewContext.GetReviews(id);

            ViewBag.Comments       = reviews;
            ViewBag.IdAnnouncement = id;
            Review rev = new Review();

            ViewBag.announcement = announcement;
            rev.AnnouncementId   = id;
            return(View("ShowDetails", rev));
        }
Beispiel #7
0
        public void MakeReviewerBusy_ReviewerSuspended_ExpectReviewerSuspendedCannotBeBusyException()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");
            reviewService.SuspendReviewer("user-id");

            //Act
            //Assert
            Assert.Throws <ReviewerSuspendedCannotBeBusyException>(() => reviewService.MakeReviewerBusy("user-id"));
        }
Beispiel #8
0
        public IActionResult Add([FromBody] Review review)
        {
            if (ReviewContext.CheckPassport(review.Passport) != 0)
            {
                return(StatusCode(400));
            }

            if (ReviewContext.Add(review))
            {
                return(StatusCode(200));
            }

            return(StatusCode(404));
        }
Beispiel #9
0
        public void MakeReviewerBusy_ReviewerAvailable_ExpectReviewerStatusChangedToBusy()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            reviewService.MakeReviewerBusy("user-id");

            //Assert
            Assert.That(reviewService.GetReviewer("user-id").Status, Is.EqualTo(ReviewerStatus.Busy));
        }
Beispiel #10
0
        public void GetReviewer_RegisteredReviewerId_ExpectReviewerReturned()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            var reviewer = reviewService.GetReviewer("user-id");

            //Assert
            Assert.That(reviewer.Id, Is.EqualTo("user-id"));
        }
Beispiel #11
0
        public void SuspendReviewer_ReviewerAvailable_ExpectReviewersStatusUpdatedToSuspended()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            reviewService.SuspendReviewer("user-id");

            //Assert
            Assert.That(reviewService.GetReviewer("user-id").Status, Is.EqualTo(ReviewerStatus.Suspended));
        }
Beispiel #12
0
        public void ResumeReviewer_ReviewerSuspended_ExpectReviewerStatusChangedToAvailable()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");
            reviewService.SuspendReviewer("user-id");

            //Act
            reviewService.ResumeReviewer("user-id");

            //Assert
            Assert.That(reviewService.GetReviewer("user-id").Status, Is.EqualTo(ReviewerStatus.Available));
        }
Beispiel #13
0
        public void AddReviewToHighestDebtor_OneReviewer_ExpectTheOnlyReviewerReturnedAndHisStatsUpdated()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("user-id");

            //Act
            var assignedReviewer = reviewService.AddReviewToHighestDebtor(new string[0]);

            //Assert
            Assert.That(assignedReviewer.Id, Is.EqualTo("user-id"));
            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(1));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0));
        }
 // GET: Comments
 public ActionResult Index(int?id)
 {
     if (id != null)
     {
         ReviewContext dbReview = new ReviewContext();
         Review        review   = dbReview.Reviews.Find(id);
         ViewData["id"]   = id;
         ViewData["name"] = review.Title;
         return(View(db.Comments.ToList()));
     }
     else
     {
         ViewData["id"] = null;
         return(RedirectToAction("../Home/Index"));
     }
 }
Beispiel #15
0
        RegisterReviewer_NonExistingReviewerId_ExpectNewReviewerAddedWithAvailableStatusAndZeroReviewsAndDebt()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            //Act
            reviewService.RegisterReviewer("user-id");

            //Assert
            Assert.That(reviewContext.Reviewers, Has.Count.EqualTo(1));
            Assert.That(reviewContext.Reviewers[0].Id, Is.EqualTo("user-id"));
            Assert.That(reviewContext.Reviewers[0].Status, Is.EqualTo(ReviewerStatus.Available));
            Assert.That(reviewContext.Reviewers[0].ReviewCount, Is.EqualTo(0));
            Assert.That(reviewContext.Reviewers[0].ReviewDebt, Is.EqualTo(0));
        }
Beispiel #16
0
        public ActionResult Index(string search = null, string city = null)
        {
            using (var db = new ReviewContext())
            {
                var cities = db.Restuarants.Select(p => p.City).Distinct();
                //var cities2 = db.Restuarants.Where(p => p.City != null).GroupBy(p=> new {City = p.Id, Count = p.Count() }).ToList();

                var model = new List <RestuarantListViewModel>();
                var path  = ConfigurationManager.AppSettings["RestuarantImageUploadBase"];
                List <Restuarant> restuarants = new List <Restuarant>();
                if (city != null)
                {
                    restuarants = db.Restuarants.Include(p => p.Reviews).Where(p => p.City.Contains(city)).ToList();
                }

                if (search != null)
                {
                    restuarants = db.Restuarants.Include(p => p.Reviews).Where(p => p.Name.Contains(search)).ToList();
                }

                else
                {
                    restuarants = db.Restuarants.Include(p => p.Reviews).ToList();
                }

                foreach (var r in restuarants)
                {
                    var vm = new RestuarantListViewModel()
                    {
                        Id             = r.Id,
                        ImageUrl       = GetImageUrl(r.ImageUrl, r.Id),
                        Phone          = r.Phone,
                        Address        = r.Address,
                        Name           = r.Name,
                        Website        = FormatedUrl(r.Website),
                        CountOfReviews = r.Reviews.Count(),
                        AverageScore   = r.Reviews.Any() ? Math.Round(r.Reviews.Average(rv => rv.Rating), 1) : 0
                    };
                    model.Add(vm);
                }
                if (Request.IsAjaxRequest())
                {
                    return(PartialView("_Restaurants", model));
                }
                return(View(model));
            }
        }
Beispiel #17
0
        public static void Main(string[] args)
        {
            IHost host = CreateHostBuilder(args).Build();

            using (IServiceScope scope = host.Services.CreateScope())
            {
                IServiceProvider services = scope.ServiceProvider;
                ReviewContext    context  = services.GetRequiredService <ReviewContext>();

                IWebHostEnvironment env = services.GetRequiredService <IWebHostEnvironment>();

                if (env.IsProduction())
                {
                    context.Database.Migrate();
                }
            }

            host.Run();
        }
        public void Approve_Review()
        {
            var dbsource = Environment.CurrentDirectory + "/RateMyClasses.db";

            var connectionsReview = new SqliteConnection("Data Source=" + dbsource);
            var optionsReview     = new DbContextOptionsBuilder <ReviewContext>().UseSqlite(connectionsReview).Options;

            var connectionReport = new SqliteConnection("Data Source=" + dbsource);
            var optionsReport    = new DbContextOptionsBuilder <ReportContext>().UseSqlite(connectionReport).Options;

            ReviewContext a = new ReviewContext(optionsReview);
            ReportContext b = new ReportContext(optionsReport);

            var result   = new ModeratorController(b, a).Approve(30133) as ViewResult;
            var viewData = result.ViewData;


            Assert.True(viewData["Result"].Equals("Approved"));
        }
Beispiel #19
0
        AddReviewToHighestDebtor_FourAvailableReviewersAndEveryOneAsksForReview3times_ExpectEveryReviewerHas3ReviewsAndZeroDebt()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            var reviewers = new[] { "reviewer1", "reviewer2", "reviewer3", "reviewer4" };

            foreach (var reviewer in reviewers)
            {
                reviewService.RegisterReviewer(reviewer);
            }

            //Act
            for (var i = 0; i < 3; i++)
            {
                foreach (var reviewer in reviewers)
                {
                    reviewService.AddReviewToHighestDebtor(new[] { reviewer });
                }
            }

            //Assert
            var reviewer1 = reviewService.GetReviewer("reviewer1");

            Assert.That(reviewer1.ReviewCount, Is.EqualTo(3));
            Assert.That(reviewer1.ReviewDebt, Is.EqualTo(0));

            var reviewer2 = reviewService.GetReviewer("reviewer2");

            Assert.That(reviewer2.ReviewCount, Is.EqualTo(3));
            Assert.That(reviewer2.ReviewDebt, Is.EqualTo(0));

            var reviewer3 = reviewService.GetReviewer("reviewer3");

            Assert.That(reviewer3.ReviewCount, Is.EqualTo(3));
            Assert.That(reviewer3.ReviewDebt, Is.EqualTo(0));

            var reviewer4 = reviewService.GetReviewer("reviewer4");

            Assert.That(reviewer4.ReviewCount, Is.EqualTo(3));
            Assert.That(reviewer4.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #20
0
        AddReviewToHighestDebtor_FourReviewersTwoAvailableOneBusyAndOneSuspendedAndTwoAvailableAskForReview2Times_ExpectSuspendedWithZeroDebtBusyWithDebtOfTwoAndAvailableOnesWithZeroDebtAndTwoReviews()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("available-reviewer1");
            reviewService.RegisterReviewer("available-reviewer2");

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.MakeReviewerBusy("busy-reviewer");
            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer1" });
            reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer2" });
            reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer1" });
            reviewService.AddReviewToHighestDebtor(new[] { "available-reviewer2" });

            //Assert
            var available1 = reviewService.GetReviewer("available-reviewer1");

            Assert.That(available1.ReviewCount, Is.EqualTo(2));
            Assert.That(available1.ReviewDebt, Is.EqualTo(0));

            var available2 = reviewService.GetReviewer("available-reviewer1");

            Assert.That(available2.ReviewCount, Is.EqualTo(2));
            Assert.That(available2.ReviewDebt, Is.EqualTo(0));

            var busyReviewer = reviewService.GetReviewer("busy-reviewer");

            Assert.That(busyReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(2));

            var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer");

            Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #21
0
        RemoveReview_TwoReviewersPassedAndOneDoesntExist_ExpectReviewerNotRegisteredExceptionAndStatsNotUpdated()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("assigned-reviewer");
            reviewService.RegisterReviewer("other-available-reviewer");

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.MakeReviewerBusy("busy-reviewer");

            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            //Assert
            Assert.Throws <ReviewerNotRegisteredException>(() =>
                                                           reviewService.RemoveReview(new[] { "assigned-reviewer", "doesntExist" }));

            var assignedReviewer = reviewService.GetReviewer("assigned-reviewer");

            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0));

            var availableReviewer = reviewService.GetReviewer("other-available-reviewer");

            Assert.That(availableReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(availableReviewer.ReviewDebt, Is.EqualTo(0));

            var busyReviewer = reviewService.GetReviewer("busy-reviewer");

            Assert.That(busyReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(0));

            var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer");

            Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #22
0
        RemoveReview_FourReviewersTwoAvailableOneBusyAndOneSuspendedAndTheSuspendedOneHasTwoReviewsRemoved_ExpectSuspendedReviewCountOfMinusTwoAndDebtOfTwoAndTheOthersHaveZeroEverything()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("available-reviewer");
            reviewService.RegisterReviewer("other-available-reviewer");

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.MakeReviewerBusy("busy-reviewer");

            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            reviewService.RemoveReview(new[] { "suspended-reviewer" });
            reviewService.RemoveReview(new[] { "suspended-reviewer" });

            //Assert
            var assignedReviewer = reviewService.GetReviewer("available-reviewer");

            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0));

            var availableReviewer = reviewService.GetReviewer("other-available-reviewer");

            Assert.That(availableReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(availableReviewer.ReviewDebt, Is.EqualTo(0));

            var busyReviewer = reviewService.GetReviewer("busy-reviewer");

            Assert.That(busyReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(0));

            var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer");

            Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(-2));
            Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(2));
        }
Beispiel #23
0
        AddReview_FourReviewersTwoAvailableOneBusyAndOneSuspendedAndTheBusyOneIsAssignedTwice_ExpectSuspendedNotChangedTheAssignedOneHasReviewCountOfTwoAndZeroDebtAndTheOtherHaveZeroReviewsAndDebtOfTwo()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("available-reviewer");
            reviewService.RegisterReviewer("other-available-reviewer");

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.MakeReviewerBusy("busy-reviewer");

            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            reviewService.AddReview(new[] { "busy-reviewer" });
            reviewService.AddReview(new[] { "busy-reviewer" });

            //Assert
            var assignedReviewer = reviewService.GetReviewer("available-reviewer");

            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(2));

            var availableReviewer = reviewService.GetReviewer("other-available-reviewer");

            Assert.That(availableReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(availableReviewer.ReviewDebt, Is.EqualTo(2));

            var busyReviewer = reviewService.GetReviewer("busy-reviewer");

            Assert.That(busyReviewer.ReviewCount, Is.EqualTo(2));
            Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(0));

            var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer");

            Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #24
0
        RemoveReview_SameReviewerPassedTwice_ExpectUpdatedOnlyOnce()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("assigned-reviewer");
            reviewService.RegisterReviewer("other-available-reviewer");

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.MakeReviewerBusy("busy-reviewer");

            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            reviewService.RemoveReview(new[] { "assigned-reviewer", "assigned-reviewer" });

            //Assert
            var assignedReviewer = reviewService.GetReviewer("assigned-reviewer");

            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(-1));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(1));

            var availableReviewer = reviewService.GetReviewer("other-available-reviewer");

            Assert.That(availableReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(availableReviewer.ReviewDebt, Is.EqualTo(0));

            var busyReviewer = reviewService.GetReviewer("busy-reviewer");

            Assert.That(busyReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(busyReviewer.ReviewDebt, Is.EqualTo(0));

            var suspendedReviewer = reviewService.GetReviewer("suspended-reviewer");

            Assert.That(suspendedReviewer.ReviewCount, Is.EqualTo(0));
            Assert.That(suspendedReviewer.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #25
0
        AddReviewToHighestDebtor_FourReviewersOneAvailableOneBusyOneSuspendedAndOneAvailableButExcluded_ExpectReviewAssignedToAvailableReviewer()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("busy-reviewer");
            reviewService.RegisterReviewer("suspended-reviewer");
            reviewService.RegisterReviewer("available-reviewer");
            reviewService.RegisterReviewer("excluded-reviewer");

            reviewService.MakeReviewerBusy("busy-reviewer");
            reviewService.SuspendReviewer("suspended-reviewer");

            //Act
            var assignedReviewer = reviewService.AddReviewToHighestDebtor(new[] { "excluded-reviewer" });

            //Assert
            Assert.That(assignedReviewer.Id, Is.EqualTo("available-reviewer"));
            Assert.That(assignedReviewer.ReviewCount, Is.EqualTo(1));
            Assert.That(assignedReviewer.ReviewDebt, Is.EqualTo(0));
        }
Beispiel #26
0
        AddReviewToHighestDebtor_FourAvailableReviewersAndOneAsksForReviewSixTimes_ExpectTheOtherThreeToHaveEachTwoReviewsAndTheOneAskingForReviewsToBeInDebtByTwo()
        {
            //Arrange
            var reviewContext = new ReviewContext();
            var reviewService = new ReviewService(reviewContext);

            reviewService.RegisterReviewer("code-spitting-individual");
            reviewService.RegisterReviewer("reviewer1");
            reviewService.RegisterReviewer("reviewer2");
            reviewService.RegisterReviewer("reviewer3");

            //Act
            for (var i = 0; i < 6; i++)
            {
                reviewService.AddReviewToHighestDebtor(new[] { "code-spitting-individual" });
            }

            //Assert
            var onlyCodeWriter = reviewService.GetReviewer("code-spitting-individual");

            Assert.That(onlyCodeWriter.ReviewDebt, Is.EqualTo(2));
            Assert.That(onlyCodeWriter.ReviewCount, Is.EqualTo(0));

            var reviewer1 = reviewService.GetReviewer("reviewer1");

            Assert.That(reviewer1.ReviewDebt, Is.EqualTo(0));
            Assert.That(reviewer1.ReviewCount, Is.EqualTo(2));

            var reviewer2 = reviewService.GetReviewer("reviewer2");

            Assert.That(reviewer2.ReviewDebt, Is.EqualTo(0));
            Assert.That(reviewer2.ReviewCount, Is.EqualTo(2));

            var reviewer3 = reviewService.GetReviewer("reviewer3");

            Assert.That(reviewer3.ReviewDebt, Is.EqualTo(0));
            Assert.That(reviewer3.ReviewCount, Is.EqualTo(2));
        }
Beispiel #27
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(o =>
            {
                o.Filters.Add(new ApiKeyRequiredAttribute());
                o.Filters.Add(new ValidateModelAttribute());
                o.EnableEndpointRouting = false;
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

            services.AddTransient <ReviewContext, ReviewContext>((s) =>
            {
                var db = new ReviewContext();
                if (AppSettings.Instance.SeedContext)
                {
                    db.Seed();
                }

                return(db);
            });

            services.AddTransient <IServices, TcrServices>();
            services.ConfigureApiVersioning();
            services.ConfigureSwagger();
        }
Beispiel #28
0
 public HomeController(ReviewContext context)
 {
     _context = context;
 }
Beispiel #29
0
 public AnnualReviewCompetencyToolsResponsesController(ReviewContext context)
 {
     _context = context;
 }
Beispiel #30
0
 public KudosEmailsController(ReviewContext context)
 {
     _context = context;
 }
Beispiel #31
0
 public ReviewService(ReviewContext reviewContext)
 {
     this.reviewContext = reviewContext;
 }
Beispiel #32
0
        public async Task<object> Get(string id)
        {
            using (var ctx = new ReviewContext())
            {
                var review = await ctx.Reviews.FindAsync(id);
                if (review == null)
                {
                    throw new HttpResponseException(HttpStatusCode.NotFound);
                }

                List<Revision> revisions;
                var commits = new HashSet<Commit>();
                using (var repo = new Repository(GitReviewApplication.RepositoryPath))
                {
                    revisions = repo.GetRevisions(review.RefPrefix).ToList();
                    var mergeBases = new Dictionary<Revision, HashSet<Commit>>(revisions.Count);
                    var ignored = new Dictionary<Revision, HashSet<Commit>>(revisions.Count);

                    foreach (var rev in revisions)
                    {
                        var revReachable = new HashSet<Commit>();
                        var revMergeBases = new HashSet<Commit>();
                        var revIgnored = new HashSet<Commit>();

                        var sourceCommit = (Commit)rev.Source.Target;
                        var destinationCommit = (Commit)rev.Destination.Target;
                        GetMergeDetails(repo, sourceCommit, destinationCommit, out revReachable, out revMergeBases, out revIgnored);

                        ignored[rev] = revIgnored;
                        mergeBases[rev] = revMergeBases;
                        commits.UnionWith(revReachable);
                    }

                    return new
                    {
                        Review = new
                        {
                            Id = review.Id,
                            Revisions = revisions.Select(r => review.Id + ":" + r.Id)
                        },
                        Revisions = revisions.Select(r => new
                        {
                            Id = review.Id + ":" + r.Id,
                            Source = r.Source.TargetIdentifier,
                            Destination = r.Destination.TargetIdentifier,
                            MergeBases = mergeBases[r].Select(b => b.Sha).ToList(),
                            Ignored = ignored[r].Select(i => i.Sha).ToList(),
                        }).ToList(),
                        Commits = commits.Select(c => new
                        {
                            Id = c.Sha,
                            Author = c.Author.Email,
                            AuthoredAt = c.Author.When,
                            Committer = c.Committer.Email,
                            CommittedAt = c.Committer.When,
                            Message = c.Message,
                            Parents = c.Parents.Select(p => p.Sha).ToList(),
                        }).ToList(),
                    };
                }
            }
        }
Beispiel #33
0
        private void ReceivePack(ControllerContext context, Stream input, HttpResponseBase response)
        {
            var capabilities = new HashSet<string>(Capabilities.Split(' '));
            var requests = ProtocolUtils.ParseUpdateRequests(input, capabilities).ToList();
            if (requests.Count == 0)
            {
                response.BinaryWrite(ProtocolUtils.EndMarker);
                return;
            }

            var reportStatus = capabilities.Contains("report-status");
            var useSideBand = capabilities.Contains("side-band-64k");
            var reportBand = useSideBand ? ProtocolUtils.PrimaryBand : (int?)null;
            var failureBand = reportStatus ? reportBand : ProtocolUtils.ErrorBand;

            try
            {
                ProtocolUtils.UpdateRequest source;
                ProtocolUtils.UpdateRequest destination;
                var errors = ReadRequests(requests, out source, out destination);
                if (errors.Any(e => e.Value != null) || source == null || destination == null)
                {
                    if (reportStatus || useSideBand)
                    {
                        ReportFailure(response, failureBand, errors, "expected source and destination branches to be pushed");
                    }

                    return;
                }

                var refPrefix = Guid.NewGuid().ToString();
                source = new ProtocolUtils.UpdateRequest(
                    source.SourceIdentifier,
                    source.TargetIdentifier,
                    RepoFormat.FormatSourceRef(refPrefix, 1));
                destination = new ProtocolUtils.UpdateRequest(
                    destination.SourceIdentifier,
                    destination.TargetIdentifier,
                    RepoFormat.FormatDestinationRef(refPrefix, 1));

                var output = this.ReadPack(new[] { source, destination }, capabilities, input);
                var line = ProtocolUtils.ReadPacketLine(output).TrimEnd('\n');
                if (line != "unpack ok")
                {
                    line = line.Substring("unpack ".Length);

                    if (reportStatus || useSideBand)
                    {
                        ReportFailure(response, failureBand, errors, line);
                    }

                    return;
                }

                string id;
                try
                {
                    using (var ctx = new ReviewContext())
                    {
                        using (new NoSyncScope())
                        {
                            id = ctx.GetNextReviewId().Result;
                        }

                        ctx.Reviews.Add(new Review
                        {
                            Id = id,
                            RefPrefix = refPrefix,
                        });
                        ctx.SaveChanges();
                    }
                }
                catch (DbUpdateException ex)
                {
                    ReportFailure(response, failureBand, errors, ex.GetBaseException().Message);
                    throw;
                }

                if (useSideBand)
                {
                    var url = new UrlHelper(context.RequestContext).Action("Index", "Home", null, context.HttpContext.Request.Url.Scheme) + "#/" + id;
                    var message = string.Format("code review created:\n\n\t{0}\n\n", url);
                    response.BinaryWrite(ProtocolUtils.Band(ProtocolUtils.MessageBand, Encoding.UTF8.GetBytes(message)));
                }

                if (reportStatus)
                {
                    ReportSuccess(response, reportBand);
                }
            }
            finally
            {
                if (useSideBand)
                {
                    response.BinaryWrite(ProtocolUtils.EndMarker);
                }
            }
        }