add device token
This commit is contained in:
128
src/GreenHome.Api/Controllers/DeviceTokenController.cs
Normal file
128
src/GreenHome.Api/Controllers/DeviceTokenController.cs
Normal file
@@ -0,0 +1,128 @@
|
||||
using GreenHome.Application;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace GreenHome.Api.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// کنترلر مدیریت توکن و تنظیمات دستگاه
|
||||
/// </summary>
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
public class DeviceTokenController : ControllerBase
|
||||
{
|
||||
private readonly IDeviceTokenService deviceTokenService;
|
||||
private readonly ILogger<DeviceTokenController> logger;
|
||||
|
||||
public DeviceTokenController(
|
||||
IDeviceTokenService deviceTokenService,
|
||||
ILogger<DeviceTokenController> logger)
|
||||
{
|
||||
this.deviceTokenService = deviceTokenService;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// دریافت فاصله زمانی آپلود دستگاه
|
||||
/// </summary>
|
||||
/// <param name="deviceId">شناسه دستگاه (اختیاری)</param>
|
||||
/// <param name="devicePhoneNumber">شماره تلفن دستگاه (اختیاری)</param>
|
||||
/// <returns>فاصله زمانی آپلود به دقیقه</returns>
|
||||
[HttpGet("upload-interval")]
|
||||
public async Task<ActionResult<GetUploadIntervalResponse>> GetUploadInterval(
|
||||
[FromQuery] int? deviceId,
|
||||
[FromQuery] string? devicePhoneNumber,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (!deviceId.HasValue && string.IsNullOrWhiteSpace(devicePhoneNumber))
|
||||
{
|
||||
return BadRequest(new GetUploadIntervalResponse
|
||||
{
|
||||
Success = false,
|
||||
Message = "حداقل یکی از پارامترهای deviceId یا devicePhoneNumber باید ارسال شود"
|
||||
});
|
||||
}
|
||||
|
||||
var request = new GetUploadIntervalRequest
|
||||
{
|
||||
DeviceId = deviceId,
|
||||
DevicePhoneNumber = devicePhoneNumber
|
||||
};
|
||||
|
||||
var result = await deviceTokenService.GetUploadIntervalAsync(request, cancellationToken);
|
||||
|
||||
if (!result.Success)
|
||||
{
|
||||
return NotFound(result);
|
||||
}
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// درخواست توکن دستگاه (تولید و ارسال کد از طریق پیامک)
|
||||
/// </summary>
|
||||
/// <param name="request">درخواست شامل شماره تلفن دستگاه</param>
|
||||
/// <returns>نتیجه درخواست</returns>
|
||||
[HttpPost("request-token")]
|
||||
public async Task<ActionResult<RequestDeviceTokenResponse>> RequestToken(
|
||||
[FromBody] RequestDeviceTokenRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(request.DevicePhoneNumber))
|
||||
{
|
||||
return BadRequest(new RequestDeviceTokenResponse
|
||||
{
|
||||
Success = false,
|
||||
Message = "شماره تلفن دستگاه الزامی است"
|
||||
});
|
||||
}
|
||||
|
||||
var result = await deviceTokenService.RequestDeviceTokenAsync(request, cancellationToken);
|
||||
|
||||
if (!result.Success)
|
||||
{
|
||||
return BadRequest(result);
|
||||
}
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// تایید توکن دستگاه (ارسال تنظیمات کدشده از طریق پیامک)
|
||||
/// </summary>
|
||||
/// <param name="request">درخواست شامل شماره تلفن و کد تایید</param>
|
||||
/// <returns>نتیجه تایید و تنظیمات کدشده</returns>
|
||||
[HttpPost("verify-token")]
|
||||
public async Task<ActionResult<VerifyDeviceTokenResponse>> VerifyToken(
|
||||
[FromBody] VerifyDeviceTokenRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(request.DevicePhoneNumber))
|
||||
{
|
||||
return BadRequest(new VerifyDeviceTokenResponse
|
||||
{
|
||||
Success = false,
|
||||
Message = "شماره تلفن دستگاه الزامی است"
|
||||
});
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(request.VerificationCode))
|
||||
{
|
||||
return BadRequest(new VerifyDeviceTokenResponse
|
||||
{
|
||||
Success = false,
|
||||
Message = "کد تایید الزامی است"
|
||||
});
|
||||
}
|
||||
|
||||
var result = await deviceTokenService.VerifyDeviceTokenAsync(request, cancellationToken);
|
||||
|
||||
if (!result.Success)
|
||||
{
|
||||
return BadRequest(result);
|
||||
}
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ builder.Services.AddScoped<GreenHome.Application.IUserDailyReportService, GreenH
|
||||
builder.Services.AddScoped<GreenHome.Application.IChecklistService, GreenHome.Infrastructure.ChecklistService>();
|
||||
builder.Services.AddScoped<GreenHome.Application.IMonthlyReportService, GreenHome.Infrastructure.MonthlyReportService>();
|
||||
builder.Services.AddScoped<GreenHome.Application.IDevicePostService, GreenHome.Infrastructure.DevicePostService>();
|
||||
builder.Services.AddScoped<GreenHome.Application.IDeviceTokenService, GreenHome.Infrastructure.DeviceTokenService>();
|
||||
|
||||
// SMS Service Configuration
|
||||
builder.Services.AddIppanelSms(builder.Configuration);
|
||||
|
||||
Reference in New Issue
Block a user