public IActionResult AddAssignment([FromBody] Assignment assignment) { using (var context = new Models.tasktDatabaseContext()) { if (assignment != null) { DateTime now = DateTime.Now; if (assignment.Interval == Assignment.TimeInterval.Seconds) { now.AddSeconds(assignment.Frequency); } else if (assignment.Interval == Assignment.TimeInterval.Minutes) { now.AddMinutes(assignment.Frequency); } else if (assignment.Interval == Assignment.TimeInterval.Days) { now.AddMonths(assignment.Frequency); } else if (assignment.Interval == Assignment.TimeInterval.Months) { now.AddMonths(assignment.Frequency); } assignment.NewTaskDue = now; context.Assignments.Add(assignment); context.SaveChanges(); return(Ok(assignment)); } else { return(BadRequest()); } } }
public IActionResult AddDataToBotStore([FromBody] BotStoreModel storeData) { using (var context = new Models.tasktDatabaseContext()) { if (!context.Workers.Any(f => f.WorkerID == storeData.LastUpdatedBy)) { return(Unauthorized()); } if (context.BotStore.Any(f => f.BotStoreName == storeData.BotStoreName)) { var existingItem = context.BotStore.Where(f => f.BotStoreName == storeData.BotStoreName).FirstOrDefault(); existingItem.BotStoreValue = storeData.BotStoreValue; existingItem.LastUpdatedOn = DateTime.Now; existingItem.LastUpdatedBy = storeData.LastUpdatedBy; } else { storeData.LastUpdatedOn = DateTime.Now; context.BotStore.Add(storeData); } context.SaveChanges(); return(Ok(storeData)); } }
public IActionResult AddAssignment([FromBody] Assignment assignment) { using (var context = new Models.tasktDatabaseContext()) { context.Assignments.Add(assignment); context.SaveChanges(); return(Ok(assignment)); } }
public IActionResult PublishScript([FromBody] PublishedScript script) { using (var context = new Models.tasktDatabaseContext()) { if (script.OverwriteExisting) { var currentItem = context.PublishedScripts.Where(f => f.WorkerID == script.WorkerID && f.FriendlyName == script.FriendlyName).OrderByDescending(f => f.PublishedOn).FirstOrDefault(); currentItem.PublishedOn = DateTime.Now; currentItem.ScriptData = script.ScriptData; context.SaveChanges(); return(Ok("The script has been updated on the server.")); } else { script.PublishedOn = DateTime.Now; context.PublishedScripts.Add(script); context.SaveChanges(); return(Ok("The script has been successfully published.")); } } }
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 Models.tasktDatabaseContext()) { 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 Models.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)); } }
public IActionResult AddNewWorker(string userName, string machineName) { using (var context = new Models.tasktDatabaseContext()) { var newWorker = new Models.Worker(); newWorker.UserName = userName; newWorker.MachineName = machineName; newWorker.LastCheckIn = DateTime.Now; newWorker.Status = Models.WorkerStatus.Pending; context.Workers.Add(newWorker); context.SaveChanges(); return(Ok(newWorker)); } }
public IActionResult UpdateTask(Guid taskID, string status, Guid workerID, string userName, string machineName, string remark) { //Todo: Needs Testing using (var context = new Models.tasktDatabaseContext()) { var taskToUpdate = context.Tasks.Where(f => f.TaskID == taskID).FirstOrDefault(); if (status == "Completed") { taskToUpdate.TaskFinished = DateTime.Now; } taskToUpdate.UserName = userName; taskToUpdate.MachineName = machineName; taskToUpdate.Remark = remark; taskToUpdate.Status = status; context.SaveChanges(); return(Ok(taskToUpdate)); } }
public IActionResult NewTask(Guid workerID, string taskName, string userName, string machineName) { //Todo: Add Auth Check, Change to HTTPPost and validate workerID is valid using (var context = new Models.tasktDatabaseContext()) { //var workerExists = context.Workers.Where(f => f.WorkerID == workerID).Count() > 0; //if (!workerExists) //{ // //Todo: Create Alert // return Unauthorized(); //} //close out any stale tasks var staleTasks = context.Tasks.Where(f => f.WorkerID == workerID && f.Status == "Running"); foreach (var task in staleTasks) { task.Status = "Closed"; } var newTask = new Models.Task(); newTask.WorkerID = workerID; newTask.UserName = userName; newTask.MachineName = machineName; newTask.TaskStarted = DateTime.Now; newTask.Status = "Running"; newTask.ExecutionType = "Local"; newTask.Script = taskName; var entry = context.Tasks.Add(newTask); context.SaveChanges(); return(Ok(newTask)); } }
public IActionResult CheckInWorker(Guid workerID, bool engineBusy) { using (var context = new Models.tasktDatabaseContext()) { var targetWorker = context.Workers.Where(f => f.WorkerID == workerID).FirstOrDefault(); if (targetWorker is null) { return(BadRequest()); } else { targetWorker.LastCheckIn = DateTime.Now; Models.Task scheduledTask = null; Models.PublishedScript publishedScript = null; if (!engineBusy) { scheduledTask = context.Tasks.Where(f => f.WorkerID == workerID && f.Status == "Scheduled").FirstOrDefault(); if (scheduledTask != null) { //worker directly scheduled publishedScript = context.PublishedScripts.Where(f => f.PublishedScriptID.ToString() == scheduledTask.Script).FirstOrDefault(); if (publishedScript != null) { scheduledTask.Status = "Deployed"; } else { scheduledTask.Status = "Deployment Failed"; } } else { //check if any pool tasks var workerPools = context.WorkerPools .Include(f => f.PoolWorkers) .Where(f => f.PoolWorkers.Any(s => s.WorkerID == workerID)).ToList(); foreach (var pool in workerPools) { scheduledTask = context.Tasks.Where(f => f.WorkerID == pool.WorkerPoolID && f.Status == "Scheduled").FirstOrDefault(); if (scheduledTask != null) { //worker directly scheduled publishedScript = context.PublishedScripts.Where(f => f.PublishedScriptID.ToString() == scheduledTask.Script).FirstOrDefault(); if (publishedScript != null) { scheduledTask.Status = "Deployed"; } else { scheduledTask.Status = "Deployment Failed"; } break; } } } } context.SaveChanges(); return(Ok(new Models.CheckInResponse { Worker = targetWorker, ScheduledTask = scheduledTask, PublishedScript = publishedScript })); } } }