public string SendSingleSMS(SmsSendSingleVM model) { var massageLength = SmsValidator.MassageLength(model.TextSMS); var smsCount = SmsValidator.TotalSmsCount(model.TextSMS); var smsProvider = new SmsProviderBuilder(); var smsBalance = smsProvider.SmsBalance(); if (smsBalance < smsCount) { return("No SMS Balance"); } var providerSendId = smsProvider.SendSms(model.TextSMS, model.PhoneNumber); if (!smsProvider.IsSuccess) { return(smsProvider.Error); } var smsRecord = new SmsSendRecord { PhoneNumber = model.PhoneNumber, TextSMS = model.TextSMS, TextCount = massageLength, SMSCount = smsCount, SmsProviderSendId = providerSendId, Date = DateTime.Now }; Context.SmsSendRecord.Add(smsRecord); return("Success"); }
public DbResponse SendCode(string mobileNumber, int codeValidSecond) { try { if (_userManager.Users.Any(u => u.UserName == mobileNumber)) { return(new DbResponse(false, "Phone number already exist")); } OtpServiceSingleton.Instance.PhoneNunber = mobileNumber; #region Generate Code var bytes = Base32Encoding.ToBytes("JBSWY3DPEHPK3PXP"); OtpServiceSingleton.Instance.Totp = new Totp(bytes, codeValidSecond); var code = OtpServiceSingleton.Instance.Totp.ComputeTotp(DateTime.UtcNow); var textSms = $"Your Verification code is {code}. This code is valid for {codeValidSecond} second"; #endregion #region SMS Code var massageLength = SmsValidator.MassageLength(textSms); var smsCount = SmsValidator.TotalSmsCount(textSms); var smsProvider = new SmsProviderBuilder(); var smsBalance = smsProvider.SmsBalance(); if (smsBalance < smsCount) { return(new DbResponse(false, "No SMS Balance")); } var providerSendId = smsProvider.SendSms(textSms, mobileNumber); if (!smsProvider.IsSuccess) { return(new DbResponse(false, smsProvider.Error)); } #endregion return(new DbResponse(true, $"Success {code}")); } catch (Exception e) { return(new DbResponse(false, e.Message)); } }
public string SendMultipleToVendor(SmsSendMultipleVendorVM model) { var massageLength = SmsValidator.MassageLength(model.TextSMS); var smsCount = SmsValidator.TotalSmsCount(model.TextSMS); var vendorCount = model.Vendors.Count(); var totalSMS = smsCount * vendorCount; var numbers = string.Join(",", model.Vendors.Select(v => v.SmsNumber)); var smsProvider = new SmsProviderBuilder(); var smsBalance = smsProvider.SmsBalance(); if (smsBalance < totalSMS) { return("No SMS Balance"); } var providerSendId = smsProvider.SendSms(model.TextSMS, numbers); if (!smsProvider.IsSuccess) { return(smsProvider.Error); } var smsRecord = model.Vendors.Select(v => new SmsSendRecord { PhoneNumber = v.SmsNumber, TextSMS = model.TextSMS, TextCount = massageLength, SMSCount = smsCount, VendorID = v.VendorID, SmsProviderSendId = providerSendId, Date = DateTime.Now }).ToList(); Context.SmsSendRecord.AddRange(smsRecord); return("Success"); }
public int SmsBalance() { var smsProvider = new SmsProviderBuilder(); return(smsProvider.SmsBalance()); }
public async Task <DbResponse <IdentityUser> > MobileSignUpAsync(CustomerMobileSignUpModel model) { try { long timeStepMatched; var verify = OtpServiceSingleton.Instance.Totp.VerifyTotp(model.Code, out timeStepMatched, window: null); if (model.MobileNumber != OtpServiceSingleton.Instance.PhoneNunber) { return(new DbResponse <IdentityUser>(false, "Mobile number not match")); } if (!verify) { return(new DbResponse <IdentityUser>(false, "Invalid Code")); } //Identity Create var user = new IdentityUser { UserName = model.MobileNumber }; var password = model.Password; var result = await _userManager.CreateAsync(user, password).ConfigureAwait(false); if (!result.Succeeded) { return(new DbResponse <IdentityUser>(false, result.Errors.FirstOrDefault()?.Description)); } await _userManager.AddToRoleAsync(user, UserType.Customer.ToString()).ConfigureAwait(false); var customer = new CustomerAddModel { UserName = model.MobileNumber }; _db.Customer.Add(customer); _db.SaveChanges(); #region SMS Code var textSms = $"You have registered Successfully , Your Id: {model.MobileNumber}"; var massageLength = SmsValidator.MassageLength(textSms); var smsCount = SmsValidator.TotalSmsCount(textSms); var smsProvider = new SmsProviderBuilder(); var smsBalance = smsProvider.SmsBalance(); if (smsBalance < smsCount) { return(new DbResponse <IdentityUser>(true, "Success, No SMS Balance", user)); } var providerSendId = smsProvider.SendSms(textSms, model.MobileNumber); if (!smsProvider.IsSuccess) { return(new DbResponse <IdentityUser>(true, smsProvider.Error, user)); } #endregion return(new DbResponse <IdentityUser>(true, "Success", user)); } catch (Exception e) { return(new DbResponse <IdentityUser>(false, e.Message)); } }
public async Task <DbResponse> ApprovedAsync(VendorApprovedModel model, string userName) { try { var registrationId = _db.Registration.GetRegID_ByUserName(userName); if (registrationId == 0) { return(new DbResponse(false, "Invalid User")); } model.ApprovedByRegistrationId = registrationId; if (_db.Vendor.IsNull(model.VendorId)) { return(new DbResponse(false, "Vendor not Found")); } var vendor = _db.Vendor.Get(model.VendorId); //Identity Create var user = new IdentityUser { UserName = vendor.Email, Email = vendor.Email }; var password = Password.Generate(8, 3); var result = await _userManager.CreateAsync(user, password).ConfigureAwait(false); if (!result.Succeeded) { return(new DbResponse(false, result.Errors.FirstOrDefault()?.Description)); } await _userManager.AddToRoleAsync(user, UserType.Seller.ToString()).ConfigureAwait(false); //Update vendor table _db.Vendor.Approved(model); _db.SaveChanges(); #region SMS Code var textSms = $"Your Account Successfully activated, Your Id: {vendor.Email} & password: {password} . Please change your password for better security"; var massageLength = SmsValidator.MassageLength(textSms); var smsCount = SmsValidator.TotalSmsCount(textSms); var smsProvider = new SmsProviderBuilder(); var smsBalance = smsProvider.SmsBalance(); if (smsBalance < smsCount) { return(new DbResponse(false, "No SMS Balance")); } var providerSendId = smsProvider.SendSms(textSms, vendor.VerifiedPhone); if (!smsProvider.IsSuccess) { return(new DbResponse(false, smsProvider.Error)); } #endregion return(new DbResponse(true, "Success")); } catch (Exception e) { return(new DbResponse(false, e.Message)); } }