namespace Netina.Infrastructure.Services; public class SmsService( IRestApiWrapper restApiWrapper, IOptionsSnapshot optionsSnapshot, ILogger logger, IHostEnvironment environment) : ISmsService { private readonly SiteSettings _siteSettings = optionsSnapshot.Value; public async Task SendForgerPasswordAsync(string phoneNumber, string newPassword) { var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, newPassword, null, null , null, null, "forgetPassword"); if (rest.Return.status != 200) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); } public async Task SendVerifyCodeAsync(string phoneNumber, string verifyCode) { try { var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber, _siteSettings.LoginOtpTemplate,verifyCode); if (rest.Return.status != 200 && environment.IsProduction()) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); } catch (ApiException apiException) { if (environment.IsProduction()) throw; else logger.LogError(apiException.Message); } catch (Exception apiException) { if (environment.IsProduction()) throw; else logger.LogError(apiException.Message); } } public async Task SendLookUpAsync(string phoneNumber, string template, string token, string? token2 = null, string? token3 = null, string? token10 = null, string? token20 = null) { try { var rest = await restApiWrapper.KaveNegarRestApi.SendLookUp(_siteSettings.KaveNegarApiKey, phoneNumber,template,token,token2,token3,token10,token20); if (rest.Return.status != 200) throw new BaseApiException(ApiResultStatusCode.SendSmsError, rest.Return.message); } catch (ApiException apiException) { logger.LogError(apiException.Message); } catch (Exception apiException) { logger.LogError(apiException.Message); } } }