コード例 #1
0
        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
        }
コード例 #2
0
        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
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
        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}");
        }
コード例 #6
0
 public async Task <IActionResult> RequestLoginToken([FromBody] PhoneNumberWrapper phoneNumber)
 {
     return(await ExecuteAsync(
                () => service.RequestLoginToken(phoneNumber),
                () => UserValidation.ValidateAndNormalizePhoneNumber(phoneNumber)));
 }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
 public static void ValidateAndNormalizePhoneNumber(PhoneNumberWrapper phoneNumber)
 {
     phoneNumber.PhoneNumber = General.ConvertPhoneNoTo12Char(
         nameof(phoneNumber),
         phoneNumber.PhoneNumber);
 }