< 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: 40
Coverable lines: 40
Total lines: 105
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 8
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%
GetStatistics()100%210%
GetRobotCurrentTask()0%620%

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.Constants;
 9using LGDXRobotCloud.Utilities.Enums;
 10using Microsoft.AspNetCore.Authentication.JwtBearer;
 11using Microsoft.AspNetCore.Authorization;
 12using Microsoft.AspNetCore.Mvc;
 13using Microsoft.Extensions.Options;
 14using System.Text.Json;
 15
 16namespace LGDXRobotCloud.API.Areas.Automation.Controllers;
 17
 18[ApiController]
 19[Area("Automation")]
 20[Route("[area]/[controller]")]
 21[Authorize(AuthenticationSchemes = LgdxRobotCloudAuthenticationSchemes.ApiKeyOrCertificationScheme)]
 22[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
 23[ValidateLgdxUserAccess]
 024public sealed class AutoTasksController(
 025    IOptionsSnapshot<LgdxRobotCloudConfiguration> lgdxRobotCloudConfiguration,
 026    IAutoTaskService autoTaskService
 027  ) : ControllerBase
 28{
 029  private readonly LgdxRobotCloudConfiguration _lgdxRobotCloudConfiguration = lgdxRobotCloudConfiguration.Value ?? throw
 030  private readonly IAutoTaskService _autoTaskService = autoTaskService ?? throw new ArgumentNullException(nameof(autoTas
 31
 32  [HttpGet("")]
 33  [ProducesResponseType(typeof(IEnumerable<AutoTaskListDto>), StatusCodes.Status200OK)]
 34  public async Task<ActionResult<IEnumerable<AutoTaskListDto>>> GetTasks(int? realmId, string? name, AutoTaskCatrgory? a
 035  {
 036    pageSize = (pageSize > _lgdxRobotCloudConfiguration.ApiMaxPageSize) ? _lgdxRobotCloudConfiguration.ApiMaxPageSize : 
 037    var (tasks, PaginationHelper) = await _autoTaskService.GetAutoTasksAsync(realmId, name, autoTaskCatrgory, pageNumber
 038    Response.Headers.Append("X-Pagination", JsonSerializer.Serialize(PaginationHelper));
 039    return Ok(tasks.ToDto());
 040  }
 41
 42  [HttpGet("{id}", Name = "GetTask")]
 43  [ProducesResponseType(typeof(AutoTaskDto), StatusCodes.Status200OK)]
 44  [ProducesResponseType(StatusCodes.Status404NotFound)]
 45  public async Task<ActionResult<AutoTaskDto>> GetTask(int id)
 046  {
 047    var autoTask = await _autoTaskService.GetAutoTaskAsync(id);
 048    return Ok(autoTask.ToDto());
 049  }
 50
 51  [HttpPost("")]
 52  [ProducesResponseType(typeof(AutoTaskDto), StatusCodes.Status201Created)]
 53  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 54  public async Task<ActionResult> CreateTask(AutoTaskCreateDto autoTaskCreateDto)
 055  {
 056    var autoTask = await _autoTaskService.CreateAutoTaskAsync(autoTaskCreateDto.ToBusinessModel());
 057    return CreatedAtAction(nameof(GetTask), new { id = autoTask.Id }, autoTask.ToDto());
 058  }
 59
 60  [HttpPut("{id}")]
 61  [ProducesResponseType(StatusCodes.Status204NoContent)]
 62  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 63  [ProducesResponseType(StatusCodes.Status404NotFound)]
 64  public async Task<ActionResult> UpdateTask(int id, AutoTaskUpdateDto autoTaskUpdateDto)
 065  {
 066    await _autoTaskService.UpdateAutoTaskAsync(id, autoTaskUpdateDto.ToBusinessModel());
 067    return NoContent();
 068  }
 69
 70  [HttpDelete("{id}")]
 71  [ProducesResponseType(StatusCodes.Status204NoContent)]
 72  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 73  [ProducesResponseType(StatusCodes.Status404NotFound)]
 74  public async Task<ActionResult> DeleteTask(int id)
 075  {
 076    await _autoTaskService.DeleteAutoTaskAsync(id);
 077    return NoContent();
 078  }
 79
 80  [HttpPost("{id}/Abort")]
 81  [ProducesResponseType(StatusCodes.Status204NoContent)]
 82  [ProducesResponseType(typeof(ValidationProblemDetails), StatusCodes.Status400BadRequest)]
 83  [ProducesResponseType(StatusCodes.Status404NotFound)]
 84  public async Task<ActionResult> AbortTask(int id)
 085  {
 086    await _autoTaskService.AbortAutoTaskAsync(id);
 087    return NoContent();
 088  }
 89
 90  [HttpGet("Statistics/{realmId}")]
 91  [ProducesResponseType(typeof(AutoTaskStatisticsDto), StatusCodes.Status200OK)]
 92  public async Task<ActionResult<AutoTaskStatisticsDto>> GetStatistics(int realmId)
 093  {
 094    var statistics = await _autoTaskService.GetAutoTaskStatisticsAsync(realmId);
 095    return Ok(statistics.ToDto());
 096  }
 97
 98  [HttpGet("RobotCurrentTask/{robotId}")]
 99  [ProducesResponseType(typeof(AutoTaskListDto), StatusCodes.Status200OK)]
 100  public async Task<ActionResult<AutoTaskListDto?>> GetRobotCurrentTask(Guid robotId)
 0101  {
 0102    var autoTask = await _autoTaskService.GetRobotCurrentTaskAsync(robotId);
 0103    return Ok(autoTask?.ToDto());
 0104  }
 105}