< Summary

Information
Class: LGDXRobotCloud.API.Areas.Automation.Controllers.AutoTasksController
Assembly: LGDXRobotCloud.API
File(s): /builds/yukaitung/lgdxrobot2-cloud/LGDXRobotCloud.API/Areas/Automation/Controllers/AutoTasksController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 36
Coverable lines: 36
Total lines: 97
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)0%2040%
GetTasks()0%620%
GetTask()100%210%
CreateTask()100%210%
UpdateTask()100%210%
DeleteTask()100%210%
AbortTask()100%210%
AutoTaskNext()100%210%

File(s)

/builds/yukaitung/lgdxrobot2-cloud/LGDXRobotCloud.API/Areas/Automation/Controllers/AutoTasksController.cs

#LineLine coverage
 1using LGDXRobotCloud.API.Authorisation;
 2using LGDXRobotCloud.API.Configurations;
 3using LGDXRobotCloud.API.Services.Automation;
 4using LGDXRobotCloud.Data.Models.Business.Automation;
 5using LGDXRobotCloud.Data.Models.DTOs.V1.Commands;
 6using LGDXRobotCloud.Data.Models.DTOs.V1.Requests;
 7using LGDXRobotCloud.Data.Models.DTOs.V1.Responses;
 8using LGDXRobotCloud.Utilities.Enums;
 9using Microsoft.AspNetCore.Authentication.JwtBearer;
 10using Microsoft.AspNetCore.Authorization;
 11using Microsoft.AspNetCore.Mvc;
 12using Microsoft.Extensions.Options;
 13using System.Text.Json;
 14
 15namespace LGDXRobotCloud.API.Areas.Automation.Controllers;
 16
 17[ApiController]
 18[Area("Automation")]
 19[Route("[area]/[controller]")]
 20[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
 21[ValidateLgdxUserAccess]
 022public sealed class AutoTasksController(
 023    IOptionsSnapshot<LgdxRobotCloudConfiguration> lgdxRobotCloudConfiguration,
 024    IAutoTaskService autoTaskService
 025  ) : ControllerBase
 26{
 027  private readonly LgdxRobotCloudConfiguration _lgdxRobotCloudConfiguration = lgdxRobotCloudConfiguration.Value ?? throw
 028  private readonly IAutoTaskService _autoTaskService = autoTaskService ?? throw new ArgumentNullException(nameof(autoTas
 29
 30  [HttpGet("")]
 31  [ProducesResponseType(typeof(IEnumerable<AutoTaskListDto>), StatusCodes.Status200OK)]
 32  public async Task<ActionResult<IEnumerable<AutoTaskListDto>>> GetTasks(int? realmId, string? name, AutoTaskCatrgory? a
 033  {
 034    pageSize = (pageSize > _lgdxRobotCloudConfiguration.ApiMaxPageSize) ? _lgdxRobotCloudConfiguration.ApiMaxPageSize : 
 035    var (tasks, PaginationHelper) = await _autoTaskService.GetAutoTasksAsync(realmId, name, autoTaskCatrgory, pageNumber
 036    Response.Headers.Append("X-Pagination", JsonSerializer.Serialize(PaginationHelper));
 037    return Ok(tasks.ToDto());
 038  }
 39
 40  [HttpGet("{id}", Name = "GetTask")]
 41  [ProducesResponseType(typeof(AutoTaskDto), StatusCodes.Status200OK)]
 42  [ProducesResponseType(StatusCodes.Status404NotFound)]
 43  public async Task<ActionResult<AutoTaskDto>> GetTask(int id)
 044  {
 045    var autoTask = await _autoTaskService.GetAutoTaskAsync(id);
 046    return Ok(autoTask.ToDto());
 047  }
 48
 49  [HttpPost("")]
 50  [ProducesResponseType(typeof(AutoTaskDto), StatusCodes.Status201Created)]
 51  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 52  public async Task<ActionResult> CreateTask(AutoTaskCreateDto autoTaskCreateDto)
 053  {
 054    var autoTask = await _autoTaskService.CreateAutoTaskAsync(autoTaskCreateDto.ToBusinessModel());
 055    return CreatedAtAction(nameof(GetTask), new {id = autoTask.Id}, autoTask.ToDto());
 056  }
 57
 58  [HttpPut("{id}")]
 59  [ProducesResponseType(StatusCodes.Status204NoContent)]
 60  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 61  [ProducesResponseType(StatusCodes.Status404NotFound)]
 62  public async Task<ActionResult> UpdateTask(int id, AutoTaskUpdateDto autoTaskUpdateDto)
 063  {
 064    await _autoTaskService.UpdateAutoTaskAsync(id, autoTaskUpdateDto.ToBusinessModel());
 065    return NoContent();
 066  }
 67
 68  [HttpDelete("{id}")]
 69  [ProducesResponseType(StatusCodes.Status204NoContent)]
 70  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 71  [ProducesResponseType(StatusCodes.Status404NotFound)]
 72  public async Task<ActionResult> DeleteTask(int id)
 073  {
 074    await _autoTaskService.DeleteAutoTaskAsync(id);
 075    return NoContent();
 076  }
 77
 78  [HttpPost("{id}/Abort")]
 79  [ProducesResponseType(StatusCodes.Status204NoContent)]
 80  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 81  [ProducesResponseType(StatusCodes.Status404NotFound)]
 82  public async Task<ActionResult> AbortTask(int id)
 083  {
 084    await _autoTaskService.AbortAutoTaskAsync(id);
 085    return NoContent();
 086  }
 87
 88  [AllowAnonymous]
 89  [HttpPost("{id}/Next")]
 90  [ProducesResponseType(StatusCodes.Status204NoContent)]
 91  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 92  public async Task<IActionResult> AutoTaskNext(int id, AutoTaskNextDto autoTaskNextDto)
 093  {
 094    await _autoTaskService.AutoTaskNextApiAsync(autoTaskNextDto.RobotId, id, autoTaskNextDto.NextToken);
 095    return NoContent();
 096  }
 97}