// GET: TextAnswerValidationTasks/Task/5 public ActionResult Task(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TextAnswerValidationTask textAnswerValidationTask = db.TextAnswerValidationTasks.Find(id); if (textAnswerValidationTask == null) { return(HttpNotFound()); } if (User.Identity.GetUserId() != textAnswerValidationTask.ApplicationUserId) //check if right user is requesting to answer { return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized)); } ResponseTipTask responseTipTask = db.ResponseTipTasks.Find(textAnswerValidationTask.ResponseTipTaskID); if (responseTipTask == null) { return(HttpNotFound()); } TextAnswerValidationPresented newTask = new TextAnswerValidationPresented(id, responseTipTask.question, responseTipTask.answer, (decimal)0.02); return(View(newTask)); }
/// <summary> /// checks if task is answered. if expiration time is passed "true" is returned and new arbiter will be added for the task.. /// </summary> /// <param name="task"></param> /// <returns></returns> public static bool TextAnswerValidation_WaitingForAnswer(TextAnswerValidationTask task) { switch (task.arbiterAnswer) { case TextAnswerValidation_ArbiterAnswerEnum.notValid: case TextAnswerValidation_ArbiterAnswerEnum.Valid: task.taskStatus = ArbiterTaskStatusesEnum.textAnswerValidation_answered; task.assignedArbiter.DecrementNumOfPuzzlesWaiting(); return(false); case TextAnswerValidation_ArbiterAnswerEnum.skip: task.taskStatus = ArbiterTaskStatusesEnum.textAnswerValidation_finishedAsSkipped; task.assignedArbiter.IncrementNumOfPuzzlesSkipped(); task.assignedArbiter.DecrementNumOfPuzzlesWaiting(); return(false); default: break; } if (DateTime.Now.CompareTo(task.timeAssigned.AddSeconds(task.expirationTime.TotalSeconds)) > 0) { task.expirationTime.Add(taskForArbiterExpirationTime); // task.taskStatus = ArbiterTaskStatusesEnum.textAnswerValidation_expired; // task.assignedArbiter.IncrementNumOfPuzzlesExpired(); // task.assignedArbiter.DecrementNumOfPuzzlesWaiting(); return(true); } else { return(false); } }
public static TextAnswerValidationTask[] TaskQuestionAnswered_CreateArbiterTasks(ResponseTipTask task, string[] arbiterIDs) { //if parent task is answered then dont add new arbiter tasks if (task.answerValidation != AnswerValidationEnum.responseTip_notValidated) { return(new TextAnswerValidationTask[0]); } TextAnswerValidationTask[] newArbiterTasks = new TextAnswerValidationTask[arbiterIDs.Count()]; for (int i = 0; i < arbiterIDs.Count(); i++) { newArbiterTasks[i] = new TextAnswerValidationTask(arbiterIDs[i], task.ResponseTipTaskID, taskForArbiterExpirationTime, taskForArbiterPriceInDollar); } return(newArbiterTasks); }
public ActionResult Task([Bind(Include = "textAnswerValidationTaskId,arbiterAnswer")] TextAnswerValidationPresented textAnswerValidationPresented) { if (textAnswerValidationPresented == null) { return(HttpNotFound()); } TextAnswerValidationTask textAnswerValidationTaskFromDb = db.TextAnswerValidationTasks.Find(textAnswerValidationPresented.textAnswerValidationTaskId); if (textAnswerValidationTaskFromDb == null) { return(HttpNotFound()); } switch (textAnswerValidationTaskFromDb.taskStatus) //if the task was already answered then go back to index { case ArbiterTaskStatusesEnum.textAnswerValidation_finishedAsExpired: case ArbiterTaskStatusesEnum.textAnswerValidation_finishedAsSkipped: case ArbiterTaskStatusesEnum.textAnswerValidation_finishedInAgreement: case ArbiterTaskStatusesEnum.textAnswerValidation_finishedInDisagreement: return(RedirectToAction("Index")); default: break; } textAnswerValidationTaskFromDb.taskStatus = ArbiterTown.Models.ArbiterTaskStatusesEnum.textAnswerValidation_answered; textAnswerValidationTaskFromDb.arbiterAnswer = textAnswerValidationPresented.arbiterAnswer; ModelState.Clear(); TryValidateModel(textAnswerValidationTaskFromDb); if (ModelState.IsValid) { db.Entry(textAnswerValidationTaskFromDb).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(textAnswerValidationPresented)); }
//Arbiter methods public static void TextAnswerValidationCreated(TextAnswerValidationTask task) { // task.assignedArbiter.IncrementNumOfPuzzlesWaiting(); task.assignedArbiter.UpdateNumOfPuzzlesWaiting(); task.taskStatus = ArbiterTaskStatusesEnum.textAnswerValidation_waitingForAnswer; }