Beispiel #1
0
        public static void TaskNotPaid(ResponseTipTask task)
        {
            //            backendLogger.LogLine(""+task.ResponseTipTaskID, Logger.log_types.MESSAGE_LOG);
            decimal addressBalance = BtcHandling.BtcHandlingClass.CheckAdressBalance(task.BitcoinPublicAdress);

            if (addressBalance == task.BitcoinPrice)
            {
                task.taskStatus = TaskStatusesEnum.responseTip_paid;
            }
            else if (addressBalance > task.BitcoinPrice + BtcHandlingClass.UpdateEstimatedTxFee()) //if amount higher than neccessary and difference higher than txfee --return it to return address
            {
                BtcHandlingClass.SendFromAndToAddress(task.BitcoinPublicAdress, task.BitcoinReturnPublicAddress, addressBalance - task.BitcoinPrice, ConfigurationManager.AppSettings["Bitcoin_WalletPassword"]);
                task.taskStatus = TaskStatusesEnum.responseTip_paid;
            }
            else if (addressBalance > task.BitcoinPrice) //if amount higher than neccessary but difference lower than txfee --let it be
            {
                task.taskStatus = TaskStatusesEnum.responseTip_paid;
            }
            else if (addressBalance < task.BitcoinPrice) // if its lower then check if not expired
            {
                TimeSpan timeElapsedFromCreation = DateTime.Now.Subtract(task.timeCreated);
                if (timeElapsedFromCreation.TotalDays > taskNotPaidExpirationTime)
                {
                    task.taskStatus = TaskStatusesEnum.responseTip_notPaid_expired;
                }
            }
        }
Beispiel #2
0
 public static void CloseAllPendingArbiterTasks_ParentTaskEvalidated(ResponseTipTask task)
 {
     foreach(TextAnswerValidationTask arbiterTask in task.TextAnswerValidationTasks)
     {
         arbiterTask.CloseThisTask_ParentTaskIsEvalidated();
     }
 }
 // GET: ResponseTipTasks/Create
 public ActionResult Create()
 {
     ResponseTipTask newTask = new ResponseTipTask();
     newTask.question = "AutomaticQuestion";
     newTask.twitterUserNameWritten = "RichardVelky";
     newTask.BitcoinReturnPublicAddress = "n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi";
     newTask.DollarPrice = (decimal)1;
     /*            string address = BtcHandling.BtcHandlingClass.GetNewBtcAdress();
                 Debug.WriteLine("new adress: " + address);*/
     //            UserSearchResults = TwitterHandling.TwitterHandlingClass.SearchUsersM("bb");
     return View(newTask);
 }
Beispiel #4
0
        public static void TaskQuestionAnswered_CheckArbiterTasksStatus(ResponseTipTask task)
        {
            int yesVotes = 0;
            int noVotes = 0;
            int skipVotes = 0;

            IEnumerable<TextAnswerValidationTask> textAnswerValidationTaskEnumerator = task.TextAnswerValidationTasks.AsEnumerable();
            foreach (TextAnswerValidationTask arbiterTask in textAnswerValidationTaskEnumerator)
            {
                switch (arbiterTask.arbiterAnswer)
                {
                    case TextAnswerValidation_ArbiterAnswerEnum.notValid:
                        noVotes++;
                        break;
                    case TextAnswerValidation_ArbiterAnswerEnum.Valid:
                        yesVotes++;
                        break;
                    case TextAnswerValidation_ArbiterAnswerEnum.skip:
                        skipVotes++;
                        break;
                }
                if (yesVotes + noVotes == task.ArbiterCount)
                {
                    if (yesVotes > noVotes)
                    {
                        task.answerValidation = AnswerValidationEnum.responseTip_AnswerIsValid;
                        task.taskStatus = TaskStatusesEnum.responseTip_answerAfterEvalidation;
                    }
                    else if (yesVotes < noVotes)
                    {
                        task.answerValidation = AnswerValidationEnum.responseTip_AnswerIsNotValid;
                        task.taskStatus = TaskStatusesEnum.responseTip_answerAfterEvalidation;
                    }
                    else // if Arbiter answer is 50:50 than answer is not Valid
                    {
                        task.answerValidation = AnswerValidationEnum.responseTip_AnswerIsNotValid;
                        task.taskStatus = TaskStatusesEnum.responseTip_answerAfterEvalidation;
                    }

                    CloseAllPendingArbiterTasks_ParentTaskEvalidated(task);
                    //foreach(TextAnswerValidationTask arbiterTask2 in textAnswerValidationTaskEnumerator)
                    //{
                    //    if(task.taskStatus==TaskStatusesEnum.responseTip_answerValid)
                    //    {
                    //        if(arbiterTask2.arbiterAnswer==TextAnswerValidation_ArbiterAnswerEnum.Valid)
                    //        {
                    //            dbContext.Users.Find(arbiterTask2.ApplicationUserId).IncrementNumOfPuzzlesSuccesfull();
                    //        }else if(arbiterTask2.arbiterAnswer == TextAnswerValidation_ArbiterAnswerEnum.notValid)
                    //        {

                    //        }
                    //    }

                    //}

                    break;

                }
            }

            return;
        }
Beispiel #5
0
 public static void TaskPaid(ResponseTipTask task)
 {
     task.questionTweetId = TwitterHandlingClass.PostATweetOnAWall(task.twitterUserNameSelected, task.question);
     task.taskStatus = TaskStatusesEnum.responseTip_questionAsked;
     task.timeQuestionAsked = DateTime.Now;
 }
Beispiel #6
0
 public static void TaskCreated(ResponseTipTask task)
 {
     task.taskStatus = TaskStatusesEnum.responseTip_notPaid;
 }
Beispiel #7
0
 /// <summary>
 /// will settle all payments
 /// </summary>
 /// <param name="task"></param>
 public static void TaskAnswerAfterEvalidation(ResponseTipTask task)
 {
     //close all pending Arbiter Tasks
 }
Beispiel #8
0
 public static void TaskAllPaymentsSettled(ResponseTipTask task)
 {
     //TODO
 }
Beispiel #9
0
 public static void TaskQuestionAskedExpired(ResponseTipTask task)
 {
     decimal addressBalance = BtcHandling.BtcHandlingClass.CheckAdressBalance(task.BitcoinPublicAdress);
     BtcHandlingClass.SendFromAndToAddress(task.BitcoinPublicAdress, task.BitcoinReturnPublicAddress, addressBalance, ConfigurationManager.AppSettings["Bitcoin_WalletPassword"]);
     task.taskStatus = TaskStatusesEnum.responseTip_closed;
 }
Beispiel #10
0
        public static void TaskQuestionAsked(ResponseTipTask task)
        {
            long answerTweetId = TwitterHandlingClass.CheckAnswerToQuestion((long)task.questionTweetId, task.twitterUserNameSelected);
            if (answerTweetId > 0)
            {
                task.answerTweetId = answerTweetId;
                task.answer = TwitterHandlingClass.GetTweetAsString((long)task.answerTweetId);
                task.taskStatus = TaskStatusesEnum.responseTip_questionAnswered;
                return;
            }

            TimeSpan timeElapsedFromQuestionAsked = DateTime.Now.Subtract(task.timeQuestionAsked);
            if (timeElapsedFromQuestionAsked.TotalDays > taskQuestionAskedExpirationTime)
            {
                task.taskStatus = TaskStatusesEnum.responseTip_questionAsked_expired;
            }
        }
Beispiel #11
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;
        }