zeroframework/Services/DeviceCenter/ZeroFramework.DeviceCenter.API/Controllers/TestsController.cs
2023-12-05 17:22:48 +08:00

69 lines
2.4 KiB
C#

using FluentValidation;
using FluentValidation.Results;
using Microsoft.AspNetCore.Mvc;
using ZeroFramework.DeviceCenter.Application.Models.Measurements;
using ZeroFramework.DeviceCenter.Application.Models.Projects;
using ZeroFramework.DeviceCenter.Application.Services.Measurements;
using ZeroFramework.DeviceCenter.Domain.Aggregates.MeasurementAggregate;
namespace ZeroFramework.DeviceCenter.API.Controllers
{
[Route("api/[controller]")]
[ApiController]
[ApiExplorerSettings(IgnoreApi = true)]
public class TestsController(IValidator<ProjectCreateOrUpdateRequestModel> validator, IDeviceDataApplicationService deviceDataApplicationService) : ControllerBase
{
private readonly IValidator<ProjectCreateOrUpdateRequestModel> _validator = validator;
private readonly IDeviceDataApplicationService _deviceDataApplicationService = deviceDataApplicationService;
[HttpGet]
public async Task<ActionResult<Measurement>> Get()
{
int productId = int.Parse("b4b9996c-beb5-4695-ad91-072eac1a6f89");
long deviceId = 10000;
Random random = new();
DateTimeOffset currentDateTime = DateTimeOffset.Now;
for (int i = 1; i < 45; i++)
{
currentDateTime = currentDateTime.AddMinutes(random.Next(5, 20));
Measurement value = new(currentDateTime.LocalDateTime);
value.Fields.Add("Value", i);
await _deviceDataApplicationService.SetDevicePropertyValues(productId, deviceId, new Dictionary<string, DevicePropertyValue>
{
{
"Abc",
new DevicePropertyValue
{
Timestamp = currentDateTime.ToUnixTimeMilliseconds(),
Value = i
}
}
});
}
return Ok("OK");
}
[HttpPost]
public async Task<ActionResult<ProjectGetResponseModel>> Post([FromBody] ProjectCreateOrUpdateRequestModel value)
{
ValidationResult validationResult = _validator.Validate(value);
if (validationResult.IsValid)
{
return await Task.FromResult(new ProjectGetResponseModel());
}
return BadRequest(validationResult);
}
}
}