コード例 #1
0
        public void ProcessTaskReports(CSTask task)
        {
            Dictionary <string, int> answersMap         = new Dictionary <string, int>();
            List <double>            listOfAnswersIndex = new List <double>();
            Dictionary <int, int>    answersIncentive   = null;
            List <InteractiveReport> listResports       = new List <InteractiveReport>();
            InteractiveReport        intReport          = null;
            IncentiveAssigned        incentive          = null;
            int    index      = 1;
            object taskReward = null;
            string txId       = null;

            //creates association between answer Index and answerId
            //this will allow to sort the answers to calculate the z-score modified
            foreach (TaskAnswer answer in task.InteractiveTask.Answers)
            {
                answersMap.Add(answer.AnswerId, index);
                index++;
            }

            foreach (string reportID in task.ReportsID.Values.ToList())
            {
                //get report from repository
                intReport = RepositoryRemote.GetInteractiveReportsByID(reportID);
                //add the first report result
                if (answersMap.ContainsKey(intReport.Result.AnswerId))
                {
                    listOfAnswersIndex.Add(answersMap[intReport.Result.AnswerId]);
                }
                listResports.Add(intReport);
            }
            if (listOfAnswersIndex.Count == 0)
            {
                Log.Debug("No Answers to Process");
                return;
            }
            //get for each answer its reward value
            answersIncentive = DataQualityProcess(listOfAnswersIndex);
            incentive        = this.IncentiveScheme.Incentive.CompleteTaskIncentive();
            foreach (InteractiveReport report in listResports)
            {
                index = answersMap[report.Result.AnswerId];
                incentive.IncentiveQty = answersIncentive[index];

                this.IncentiveScheme.RewardUser(report.UserID, incentive, out taskReward, out txId);
                this.RepositoryRemote.SaveReportReward(task.TaskID, report.ReportID, (Dictionary <string, string>)taskReward, txId);
            }
        }
コード例 #2
0
        public bool CreateTask(CSTaskDTO taskDTO)
        {
            string taskID = null;
            CSTask task;

            try
            {
                //save task
                taskID = Guid.NewGuid().ToString();
                while (Tasks.ContainsKey(taskID))
                {
                    taskID = Guid.NewGuid().ToString();
                }
                taskDTO.TaskID = taskID;
                task           = new CSTask(taskDTO);
                Tasks.Add(taskID, task);
                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }