public async Task <ActionResult> CreateReview(Review review, Guid testsGuid) { ModelState.Remove("testsGuid"); ModelState.Remove(nameof(Review.Id)); ModelState.Remove(nameof(Review.Created)); ModelState.Remove(nameof(Review.Creator)); if (ModelState.IsValid) { TestsRepository testsRepo = new TestsRepository(); var testsTask = testsRepo.GetByIdAsync(testsGuid); ApplicationUserRepository <Tester> userRepo = new ApplicationUserRepository <Tester>(); var testerTask = userRepo.GetByUserNameAsync(User.Identity.Name); review.Created = DateTime.Now; review.Creator = await testerTask; DataAccess.Model.Tests.Tests tests = await testsTask; tests.Test.Reviews.Add(review); tests.Test.CountRating(); tests.Status = TestsStatus.Reviewed; ReviewRepository reviewRepo = new ReviewRepository(); reviewRepo.Create(review); testsRepo.Update(tests); return(RedirectToAction("FinishedTests")); } ViewBag.TestsGuid = testsGuid; return(View("AddReview", review)); }
// PUT api/Tests/5 public IHttpActionResult Put(int id, [FromBody] Test value) { var testToUpdate = testsRepository.All().Where(x => x.Id == id).FirstOrDefault(); if (testToUpdate == null) { return(this.BadRequest("No such test")); } if (value.Course != null) { testToUpdate.Course = value.Course; } if (value.Students != null) { testToUpdate.Students = value.Students; } testsRepository.Update(testToUpdate); data.SaveChanges(); return(this.ResponseMessage(new HttpResponseMessage(HttpStatusCode.Found))); }
public async Task <ActionResult> Resolve(DataAccess.Model.Tests.Tests tests, HttpPostedFileBase[] files) { TestsRepository testsRepo = new TestsRepository(); DataAccess.Model.Tests.Tests testsRecord = testsRepo.GetById(tests.Id); TestStatusRepository testStatusRepo = new TestStatusRepository(); ModelState.Remove("files"); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Tester)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Status)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Test)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Evidences)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Finished)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Rejected)); ModelState.Remove(nameof(DataAccess.Model.Tests.Tests.Takened)); ModelState.Remove("TestStatus.Status"); if (ModelState.IsValid) { if (testsRecord.Test.Creator.Credits < testsRecord.Test.Reward) { ViewBag.TestStatus = testStatusRepo.GetAll(); TempData["error"] = "Createor of tests don't have required amount of coins. Please try resolve test later, or contact our support team."; return(View("TakenedTests")); } var testStatusTask = testStatusRepo.GetByIdAsync(tests.TestStatus.Id); IList <Evidence> evidences = new List <Evidence>(); if (files[0] != null) { var maxSizeInMb = 20; var byteSize = 1048576; var maxSizeInBytes = byteSize * maxSizeInMb; foreach (var file in files) { if (file.ContentLength > maxSizeInBytes) { TempData["error"] = "File " + file.FileName + " is too big! (max size is " + maxSizeInMb + "MB)"; ViewBag.TestStatus = testStatusRepo.GetAll(); return(View("ResolveTest", testsRecord)); } } foreach (var file in files) { Evidence evidence = new Evidence(); evidence.Id = Guid.NewGuid(); evidence.Name = evidence.Id.ToString(); evidence.RealName = Path.GetFileNameWithoutExtension(file.FileName); evidence.Attached = DateTime.Now; var extension = Path.GetExtension(file.FileName); evidence.Extension = extension; var path = Path.Combine(Server.MapPath($"~/Uploads/{testsRecord.Id}"), evidence.Name + extension); Directory.CreateDirectory(Server.MapPath($"~/Uploads/{testsRecord.Id}")); file.SaveAs(path); evidences.Add(evidence); } testsRecord.Evidences = evidences; } testsRecord.TestStatus = await testStatusTask; testsRecord.Finished = DateTime.Now; testsRecord.Status = TestsStatus.Finished; testsRecord.Tester.Credits = testsRecord.Tester.Credits + testsRecord.Test.Reward; testsRecord.Test.Creator.Credits = testsRecord.Test.Creator.Credits - testsRecord.Test.Reward; EvidenceRepository evidRepo = new EvidenceRepository(); foreach (var evidence in evidences) { evidRepo.Create(evidence); } testsRepo.Update(testsRecord); return(RedirectToAction("FinishedTests")); } ViewBag.TestStatus = testStatusRepo.GetAll(); return(View("ResolveTest", testsRecord)); }