// 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));
        }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        //Arbiter methods

        public static void TextAnswerValidationCreated(TextAnswerValidationTask task)
        {
            //           task.assignedArbiter.IncrementNumOfPuzzlesWaiting();
            task.assignedArbiter.UpdateNumOfPuzzlesWaiting();
            task.taskStatus = ArbiterTaskStatusesEnum.textAnswerValidation_waitingForAnswer;
        }