private void OnAddPhoneNumberExecute() { var newNumber = new PhoneNumberWrapper(new PhoneNumber()); newNumber.PropertyChanged += PhoneNumberWrapper_PropertyChanged; PhoneNumbers.Add(newNumber); Friend.Model.PhoneNumbers.Add(newNumber.Model); newNumber.Phone = ""; //Validation triggered here }
private void OnAddPhoneExecute() { var phone = new PhoneNumberWrapper(new PhoneNumber()); phone.PropertyChanged += PhoneNumbers_PropertyChange; PhoneNumbers.Add(phone); Friend.Model.PhoneNumbers.Add(phone.Model); phone.Number = ""; // trigger validation }
private void InitPhoneNumber(IEnumerable <PhoneNumber> phoneNumbers) { foreach (var wrapper in PhoneNumbers) { wrapper.PropertyChanged -= PhoneNumbers_PropertyChange; } PhoneNumbers.Clear(); foreach (var phone in phoneNumbers) { var wrapper = new PhoneNumberWrapper(phone); PhoneNumbers.Add(wrapper); wrapper.PropertyChanged += PhoneNumbers_PropertyChange; } }
private void InitializePhoneNumbers(ICollection <PhoneNumber> phoneNumbers) { foreach (var wrapper in PhoneNumbers) { wrapper.PropertyChanged -= PhoneNumberWrapper_PropertyChanged; } PhoneNumbers.Clear(); foreach (var phoneNumber in phoneNumbers) { var wrapper = new PhoneNumberWrapper(phoneNumber); PhoneNumbers.Add(wrapper); wrapper.PropertyChanged += PhoneNumberWrapper_PropertyChanged; } }
public async Task RequestLoginToken(PhoneNumberWrapper phoneNumber) { var user = await dbContext.Users .AsTracking() .Where(r => r.PhoneNumber == phoneNumber.PhoneNumber) .FirstOrDefaultAsync(); if (user == null) { user = new User { FirstName = string.Empty, LastName = string.Empty, Email = string.Empty, PhoneNumber = phoneNumber.PhoneNumber, LoginTokenValue = null, LoginTokenExpirationTime = DateTime.MinValue, SessionToken = null, JoinedDorehamies = new List <JoinUserDorehami>(), }; await dbContext.Users.AddAsync(user); } user.LoginTokenValue = "1111"; user.LoginTokenExpirationTime = DateTime.Now.AddHours(12); //TODO re-enable user.LoginTokenValue = new Random(DateTime.Now.Millisecond) .Next(1000, 9999) .ToString(CultureInfo.InvariantCulture); user.LoginTokenExpirationTime = DateTime.Now.AddMinutes(2); await dbContext.SaveChangesAsync(); var resp = await smsService.SendSms( phoneNumber, $"کد ورود پاتوق {user.LoginTokenValue}"); }
public async Task <IActionResult> RequestLoginToken([FromBody] PhoneNumberWrapper phoneNumber) { return(await ExecuteAsync( () => service.RequestLoginToken(phoneNumber), () => UserValidation.ValidateAndNormalizePhoneNumber(phoneNumber))); }
public async Task <string> SendSms(PhoneNumberWrapper phoneNumber, string message) { if (string.IsNullOrEmpty(phoneNumber?.PhoneNumber)) { throw new ArgumentNullException(nameof(phoneNumber)); } if (string.IsNullOrEmpty(message)) { throw new ArgumentNullException(nameof(message)); } string fullResponse, responseCode, responseRef; StreamReader sr = null; try { WebRequest req = WebRequest.Create(Settings.Services.ParsGreenSms); Dictionary <string, string> dic = new Dictionary <string, string> { { "signature", Settings.Services.ParsGreenSingnature }, { "to", phoneNumber.PhoneNumber }, { "text", message } }; var prarameters = dic.Select(x => $"{x.Key}={x.Value}"); string postData = string.Join("&", prarameters); byte[] send = Encoding.UTF8.GetBytes(postData); req.Method = "POST"; req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = send.Length; Stream sout = req.GetRequestStream(); sout.Write(send, 0, send.Length); sout.Flush(); sout.Close(); WebResponse res = await req.GetResponseAsync(); sr = new StreamReader(res.GetResponseStream()); fullResponse = sr.ReadToEnd(); var arr = fullResponse.Split(';'); if (arr.Length != 3 || arr[1] != "0") { throw new ExternalApiException( nameof(Settings.Services.ParsGreenSms), fullResponse); } responseCode = arr[1]; responseRef = arr[2]; return(responseRef); } catch (IOException e) { throw; } finally { sr?.Close(); } }
public static void ValidateAndNormalizePhoneNumber(PhoneNumberWrapper phoneNumber) { phoneNumber.PhoneNumber = General.ConvertPhoneNoTo12Char( nameof(phoneNumber), phoneNumber.PhoneNumber); }