public async Task <IActionResult> NewTask([FromBody] NewTaskRequest request) { var client = getCacheClient(); var requestId = RandomGenerator.GenerateToken(); var postMerchantContent = new { price = REQUEST_PRICE }; var postMerchantResponse = HttpHelper.PostToMerchantAsync("/api/transaction/new", postMerchantContent); var getChallengeResponse = HttpHelper.GetFromChallengeAsync("/ChallengeMe"); NewTransactionResponse merchantResult = JsonConvert.DeserializeObject <NewTransactionResponse>(await postMerchantResponse); NewChallengeResponse challengeResult = JsonConvert.DeserializeObject <NewChallengeResponse>(await getChallengeResponse); var requestDetails = new RequestDetails(requestId, merchantResult.TransactionId, request.Method); var ttl = RandomGenerator.GenerateTTL(); var added = client.Add(REQUEST_PREFIX + requestId, requestDetails, ttl); if (!added) { return(BadRequest("Cache error")); } var response = new NewTaskResponse(requestId, merchantResult.TransactionId, challengeResult.Header, challengeResult.Target); return(Ok(response)); }
public IActionResult ScheduleTask([FromBody] NewTaskRequest request) { //Todo: Add Auth Check, Change to HTTPPost and validate workerID is valid if (request is null) { return(BadRequest()); } using (var context = new tasktDbContext()) { var publishedScript = context.PublishedScripts.Where(f => f.PublishedScriptID == request.publishedScriptID).FirstOrDefault(); if (publishedScript == null) { return(BadRequest()); } //find worker var workerRecord = context.Workers.Where(f => f.WorkerID == request.workerID).FirstOrDefault(); //if worker wasnt found then search for pool if (workerRecord == null) { //find from pool var poolExists = context.WorkerPools.Any(s => s.WorkerPoolID == request.workerID); //if pool wasnt found if (!poolExists) { //return bad request return(BadRequest()); } } //create new task var newTask = new Task(); newTask.WorkerID = request.workerID; newTask.TaskStarted = DateTime.Now; newTask.Status = "Scheduled"; newTask.ExecutionType = "Remote"; newTask.Script = publishedScript.PublishedScriptID.ToString(); newTask.Remark = "Scheduled by tasktServer"; var entry = context.Tasks.Add(newTask); context.SaveChanges(); return(Ok(newTask)); } }