add voice service call service and more

This commit is contained in:
2025-11-25 16:49:18 +03:30
parent 60d20a2734
commit 9ba81d944f
49 changed files with 4428 additions and 19 deletions

View File

@@ -7,8 +7,10 @@ public sealed class DeviceDto
{
public int Id { get; set; }
public string DeviceName { get; set; } = string.Empty;
public string Owner { get; set; } = string.Empty;
public string Mobile { get; set; } = string.Empty;
public int UserId { get; set; }
public string UserName { get; set; } = string.Empty;
public string UserFamily { get; set; } = string.Empty;
public string UserMobile { get; set; } = string.Empty;
public string Location { get; set; } = string.Empty;
public string NeshanLocation { get; set; } = string.Empty;
}
@@ -66,6 +68,49 @@ public sealed class DayCount
public int Count { get; set; }
}
public sealed class SendCodeRequest
{
public required string Mobile { get; set; }
}
public sealed class SendCodeResponse
{
public bool Success { get; set; }
public string? Message { get; set; }
public int ResendAfterSeconds { get; set; } = 120;
}
public sealed class VerifyCodeRequest
{
public required string Mobile { get; set; }
public required string Code { get; set; }
}
public sealed class VerifyCodeResponse
{
public bool Success { get; set; }
public string? Message { get; set; }
public string? Token { get; set; }
public UserDto? User { get; set; }
}
public sealed class UserDto
{
public int Id { get; set; }
public string Mobile { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Family { get; set; } = string.Empty;
public Domain.UserRole Role { get; set; }
}
public sealed class DeviceFilter
{
public int? UserId { get; set; }
public string? Search { get; set; } // جستجو در نام دستگاه، نام صاحب، نام خانوادگی صاحب، Location
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 10;
}
public sealed class DeviceSettingsDto
{
public int Id { get; set; }
@@ -92,4 +137,4 @@ public sealed class DeviceSettingsDto
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
}
}

View File

@@ -0,0 +1,7 @@
namespace GreenHome.Application;
public interface IAlertService
{
Task CheckAndSendAlertsAsync(int deviceId, TelemetryDto telemetry, CancellationToken cancellationToken);
}

View File

@@ -0,0 +1,9 @@
namespace GreenHome.Application;
public interface IAuthService
{
Task<SendCodeResponse> SendVerificationCodeAsync(SendCodeRequest request, CancellationToken cancellationToken);
Task<VerifyCodeResponse> VerifyCodeAsync(VerifyCodeRequest request, CancellationToken cancellationToken);
Task<bool> CanResendCodeAsync(string mobile, CancellationToken cancellationToken);
}

View File

@@ -6,4 +6,6 @@ public interface IDeviceService
Task<int> AddDeviceAsync(DeviceDto dto, CancellationToken cancellationToken);
Task<IReadOnlyList<DeviceDto>> ListAsync(CancellationToken cancellationToken);
Task<DeviceDto> GetDeviceId(string deviceName, CancellationToken cancellationToken);
Task<IReadOnlyList<DeviceDto>> GetUserDevicesAsync(int userId, CancellationToken cancellationToken);
Task<PagedResult<DeviceDto>> GetDevicesAsync(DeviceFilter filter, CancellationToken cancellationToken);
}

View File

@@ -7,11 +7,20 @@ public sealed class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Domain.Device, DeviceDto>().ReverseMap();
CreateMap<Domain.Device, DeviceDto>()
.ForMember(dest => dest.UserName, opt => opt.MapFrom(src => src.User.Name))
.ForMember(dest => dest.UserFamily, opt => opt.MapFrom(src => src.User.Family))
.ForMember(dest => dest.UserMobile, opt => opt.MapFrom(src => src.User.Mobile))
.ReverseMap()
.ForMember(dest => dest.User, opt => opt.Ignore());
CreateMap<Domain.TelemetryRecord, TelemetryDto>().ReverseMap();
CreateMap<Domain.DeviceSettings, DeviceSettingsDto>()
.ForMember(dest => dest.DeviceName, opt => opt.MapFrom(src => src.Device.DeviceName))
.ReverseMap()
.ForMember(dest => dest.Device, opt => opt.Ignore());
CreateMap<Domain.User, UserDto>().ReverseMap();
}
}