Exemplo n.º 1
0
        public async Task OnConfiguredAsync(App app, string id, ConfiguredIntegration configured, ConfiguredIntegration?previous,
                                            CancellationToken ct)
        {
            var accountSid = AccountSidProperty.GetString(configured);

            if (string.IsNullOrWhiteSpace(accountSid))
            {
                return;
            }

            var authToken = AuthTokenProperty.GetString(configured);

            if (string.IsNullOrWhiteSpace(authToken))
            {
                return;
            }

            var phoneNumber = PhoneNumberProperty.GetNumber(configured);

            if (phoneNumber == 0)
            {
                return;
            }

            try
            {
                var client = clientPool.GetServer(accountSid, authToken);

                await PhoneNumberResource.FetchAsync(ConvertPhoneNumber(phoneNumber), client : client);
            }
            catch
            {
                throw new ValidationException(Texts.Twilio_ErrorInvalidConfig);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Validate a Phone Number Async using Twilio API.
 /// </summary>
 /// <param name="configuration"> The Configuration which will be provided to the twilio api. Ex.(Sid, AuthorizationToken)</param>
 /// <param name="phoneNumber">The phone number who will be Validated</param>
 /// <param name="messageBody"> The Content of the message body</param>
 /// <returns>True if the send operation succeed false otherwise</returns>
 public async Task ValidatePhoneNumberAsync(ISmsRequestConfiguration configuration, string phoneNumber)
 {
     try
     {
         TwilioClient.Init(configuration.AccountSid, configuration.AuthorizationToken);
         var result = await PhoneNumberResource.FetchAsync(
             pathPhoneNumber : new PhoneNumber(phoneNumber)
             );
     }
     catch (ApiException ex)
     {
         Log.Error(ex, ex.Message, ex);
     }
     catch (CertificateValidationException ex)
     {
         Log.Error(ex, ex.Message, ex);
     }
     catch (RestException ex)
     {
         Log.Error(ex, ex.Message, ex);
     }
     catch (TwilioException ex)
     {
         Log.Error(ex, ex.Message, ex);
     }
     catch (Exception ex)
     {
         Log.Error(ex, ex.Message, ex);
     }
 }
Exemplo n.º 3
0
        public async Task <PhoneNrInfo> GetPhoneNrInfo(string phoneNr)
        {
            // https://www.twilio.com/docs/lookup/quickstart

            PhoneNumberResource phoneNumber = null;
            var isValid = false;

            try
            {
                phoneNumber = await PhoneNumberResource.FetchAsync(
                    client : lookUpClient,
                    pathPhoneNumber : new Twilio.Types.PhoneNumber(phoneNr),
                    type : new List <string> {
                    "carrier"
                }
                    );

                isValid = true;
            }
            catch (ApiException ex)
            {
                isValid = false;
            }

            var r = new PhoneNrInfo
            {
                IsValid        = isValid,
                CountryCode    = phoneNumber?.CountryCode,
                NationalFormat = phoneNumber?.NationalFormat,
                PhoneNr        = phoneNumber?.PhoneNumber.ToString(),
                TypeOfNumber   = getTypeOfNr(phoneNumber)
            };


            PhoneNrInfo.TypeOfNumberEnum getTypeOfNr(PhoneNumberResource phNrResource)
            {
                if (phNrResource?.Carrier == null)
                {
                    return(PhoneNrInfo.TypeOfNumberEnum.Unknown);
                }
                else if (phNrResource.Carrier.TryGetValue("type", out var type))
                {
                    if (type == "mobile")
                    {
                        return(PhoneNrInfo.TypeOfNumberEnum.Mobile);
                    }
                    else
                    {
                        return(PhoneNrInfo.TypeOfNumberEnum.Other);
                    }
                }
                else
                {
                    return(PhoneNrInfo.TypeOfNumberEnum.Unknown);
                }
            };

            return(r);
        }
Exemplo n.º 4
0
        public async static Task <bool> VerifyPhoneNumberAsync(PhoneNumber phoneNumber)
        {
            try
            {
                // Verify phone number
                await PhoneNumberResource.FetchAsync(
                    countryCode : "US",
                    pathPhoneNumber : phoneNumber
                    );

                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Exemplo n.º 5
0
        public async Task SendWhatsapp(string body, List <string> recipients)
        {
            TwilioClient.Init(_options.AccountSID, _options.AuthToken);
            foreach (var item in recipients)
            {
                var phoneResult = await PhoneNumberResource.FetchAsync(
                    countryCode : "KH",
                    pathPhoneNumber : new Twilio.Types.PhoneNumber(item)
                    );

                var result = await MessageResource.CreateAsync(
                    body : body,
                    from : new Twilio.Types.PhoneNumber("whatsapp:" + _options.PhoneNumber),
                    to : new Twilio.Types.PhoneNumber("whatsapp:" + phoneResult.PhoneNumber)
                    );
            }
        }
Exemplo n.º 6
0
        public async Task <(string phoneNumber, string country)> ValidateNumberAsync(string phoneNumber, string countryCode, CancellationToken token)
        {
            phoneNumber = BuildPhoneNumber(phoneNumber, countryCode);

            try
            {
                var result = await PhoneNumberResource.FetchAsync(
                    pathPhoneNumber : phoneNumber,
                    type : new List <string>()
                {
                    "carrier"
                }
                    );

                if (result == null)
                {
                    return(null, null);
                }
                var carrier = result.Carrier;

                if (carrier.TryGetValue("type", out var carrierType))
                {
                    if (!string.Equals(carrierType, "mobile", StringComparison.OrdinalIgnoreCase))
                    {
                        return(null, null);
                    }
                }
                if (carrier.TryGetValue("name", out var carrierName))
                {
                    if (_badProviders.Contains(carrierName, StringComparer.OrdinalIgnoreCase))
                    {
                        return(null, null);
                    }
                }

                return(result.PhoneNumber.ToString(), result.CountryCode);
            }
            catch (Twilio.Exceptions.ApiException)
            {
                return(null, null);
            }
        }
Exemplo n.º 7
0
        private static async Task <string> ParseNumberAsync(string number)
        {
            number = new string(number.Where(c => char.IsDigit(c)).ToArray());
            if (number.Length == 10 && number.Substring(0, 2) == "15")
            {
                number = "11" + number.Substring(2, 8);
            }

            var phoneNumber = await PhoneNumberResource.FetchAsync(
                countryCode : "AR",
                pathPhoneNumber : new PhoneNumber(number));

            var result = phoneNumber.PhoneNumber.ToString();

            if (result.Length >= 5 && result.Substring(0, 5) == "+5411")
            {
                result = "+54911" + result.Substring(5, result.Length - 5);
            }

            return(result);
        }
Exemplo n.º 8
0
        private static async Task <bool> IsTwilioVerified(string num)
        {
            bool IsValid = false;
            var  config  = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();

            // Find your Account Sid and Token at twilio.com/console. See http://twil.io/secure for more info
            string accountSid = config["AppSettings:accountSid"];
            string authToken  = config["AppSettings:authToken"];

            try
            {
                // Find your Account Sid and Token at twilio.com/console. See http://twil.io/secure for more info
                TwilioClient.Init(accountSid, authToken);

                // Reference: https://www.twilio.com/docs/lookup/tutorials/validation-and-formatting
                var phoneNum = new Twilio.Types.PhoneNumber(num);
                var numInfo  = await PhoneNumberResource.FetchAsync(countryCode : "US",
                                                                    pathPhoneNumber : phoneNum);

                Console.WriteLine($"Twilio Verified Phone Number: { numInfo.PhoneNumber }");

                if (numInfo.PhoneNumber.ToString().Length >= 1)
                {
                    IsValid = true;
                }
            }

            catch (ApiException e)
            {
                Console.WriteLine($"Twilio Error {e.Code} - {e.MoreInfo}");
            }

            catch (Exception ex)
            {
                Console.WriteLine("Error:" + ex.Message);
                throw;
            }

            return(IsValid);
        }
        /// <summary>
        /// Invokes Twilio client to test string provided as argument.   Checks for errors or problem responses, only returning values that are validated.
        /// </summary>
        /// <param name="numberToTest"></param>
        /// <returns></returns>
        private async Task <string> VerifyWithTwilioAsync(string numberToTest)
        {
            try
            {
                var twilioPhoneNumberResource = await PhoneNumberResource.FetchAsync(
                    pathPhoneNumber : new Twilio.Types.PhoneNumber(numberToTest)
                    );

                if (twilioPhoneNumberResource == null || twilioPhoneNumberResource.PhoneNumber == null)
                {
                    Console.WriteLine($"TwilioHelperService : Using number '{numberToTest}', Twilio Api response was null");
                    return(String.Empty);
                }

                Console.WriteLine($"TwilioHelperService : Using number '{numberToTest}', Twilio Api returned valid object:  National Format : '{twilioPhoneNumberResource.NationalFormat}' . Carrier : '{twilioPhoneNumberResource.Carrier}' . Phone Number :  {twilioPhoneNumberResource.PhoneNumber}");
                return(twilioPhoneNumberResource.PhoneNumber.ToString());
            }
            catch (Exception ex)
            {
                Console.WriteLine($"TwilioHelperService : Exception : {ex.Message}");
                return(String.Empty);
            }
        }
Exemplo n.º 10
0
        public static async Task <PhoneNumberResource> LookupPhoneNumber(ITwilioRestClient client, string number, CountryCode?countryCode, bool includeCallerName, bool includeCarrier, List <string> addOns, Dictionary <string, object> addOnsData)
        {
            var phoneNumber = new Twilio.Types.PhoneNumber(number);
            var type        = new List <string>();

            if (includeCallerName)
            {
                type.Add("caller_name");
            }
            if (includeCarrier)
            {
                type.Add("carrier");
            }
            var options = new FetchPhoneNumberOptions(phoneNumber)
            {
                CountryCode = countryCode != null ? $"{countryCode:G}" : null,
                Type        = type,
                AddOns      = addOns,
                AddOnsData  = addOnsData
            };

            return(await PhoneNumberResource.FetchAsync(options, client));
        }
Exemplo n.º 11
0
        private async void Button_Click(object sender, RoutedEventArgs e)
        {
            if (!String.IsNullOrWhiteSpace(txtPhoneRaw.Text))
            {
                try
                {
                    lblStatus.Content = "Verifying with Twilio";
                    var phoneNumber = await PhoneNumberResource.FetchAsync(
                        countryCode : txtCountryCode.Text,
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(txtPhoneRaw.Text));

                    txtPhoneVerified.Text = phoneNumber.PhoneNumber.ToString();
                    if (!String.IsNullOrEmpty(txtPhoneVerified.Text))
                    {
                        lblStatus.Content = "Verified by Twilio";
                    }
                }
                catch (ApiException apiex)
                {
                    Debug.WriteLine($"Twilio API Error {apiex.Code} - {apiex.MoreInfo}");
                    lblStatus.Content = $"{apiex.Message}";
                }
            }
        }
Exemplo n.º 12
0
        public async Task <IActionResult> AddOns()
        {
            TwilioClient.Init(_settings.AccountSid, _settings.AuthToken);

            var addOns = new List <string>
            {
                "payfone_tcpa_compliance"
            };

            var addOnsData = new Dictionary <string, object>
            {
                { "payfone_tcpa_compliance.right_party_contacted_date", 20160101 }
            };

            var phoneNumber = await PhoneNumberResource.FetchAsync(
                addOns : addOns,
                addOnsData : addOnsData,
                pathPhoneNumber : new PhoneNumber(_settings.MyNumber)
                );

            Debug.WriteLine(phoneNumber.CallerName);

            return(Ok());
        }
Exemplo n.º 13
0
        public async Task <IActionResult> RegisterUser(UtilisateurViewModel model, string returnUrl)
        {
            ViewData["countries"] = AvailableCountries;
            model.ExternalLogins  = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            model.ReturnUrl       = returnUrl;
            if (ModelState.IsValid)
            {
                try
                {
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(model.Telephone),
                        countryCode : model.PhoneNumberCountryCode,
                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null && numberDetails.Carrier.GetType().Equals(""))
                    {
                        ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                                 $"Le format du numero ne convient pas à votre pays");
                        return(View());
                    }
                    var numberToSave = numberDetails.PhoneNumber.ToString();



                    var user = new Utilisateur
                    {
                        BirthDate   = model.BirthDate,
                        Country     = model.PhoneNumberCountryCode,
                        UserName    = model.Email,
                        Email       = model.Email,
                        Nom         = model.Nom,
                        Prenom      = model.Prenom,
                        PhoneNumber = numberToSave
                    };
                    var result = await userManager.CreateAsync(user, model.Password);

                    if (result.Succeeded)
                    {
                        var token = await userManager.GenerateEmailConfirmationTokenAsync(user);

                        var confirmationLink = Url.Action("ConfirmEmail", "Account",
                                                          new { userId = user.Id, token = token }, Request.Scheme, Request.Host.ToString());

                        //sending email


                        var mailMessage = new MimeMessage();
                        mailMessage.From.Add(new MailboxAddress("from TourME", "*****@*****.**"));
                        mailMessage.To.Add(new MailboxAddress("Client", model.Email));
                        mailMessage.Subject = "Email Confirmation";
                        mailMessage.Body    = new TextPart("plain")
                        {
                            Text = $"{confirmationLink}"
                        };

                        using (var smtpClient = new SmtpClient())
                        {
                            smtpClient.CheckCertificateRevocation = false;
                            smtpClient.Connect("smtp.gmail.com", 587, SecureSocketOptions.Auto);
                            smtpClient.Authenticate("*****@*****.**", "wiss20/20");
                            smtpClient.Send(mailMessage);
                            smtpClient.Disconnect(true);
                        }
                        //



                        //await emailService.SendAsync(model.Email,"Email Verification",  $"<a href=\"{confirmationLink}\">Verify Email</a>"  ,true);
                        logger.Log(LogLevel.Warning, confirmationLink);


                        if (await roleManager.RoleExistsAsync("Utilisateur"))
                        {
                            await userManager.AddToRoleAsync(user, "Utilisateur");
                        }
                        else
                        {
                            IdentityRole identityrole = new IdentityRole
                            {
                                Name = "Utilisateur"
                            };
                            await roleManager.CreateAsync(identityrole);

                            await userManager.AddToRoleAsync(user, "Utilisateur");
                        }
                        //await signInManager.SignInAsync(user, isPersistent: false);

                        //return RedirectToAction("index", "home");

                        ViewBag.ErrorTitle   = "Registration successful";
                        ViewBag.ErrorMessage = "Before you can Login, please confirm your " +
                                               "email, by clicking on the confirmation link we have emailed you";
                        return(View("Error"));
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }

                    return(View(model));
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                             $"The number you entered was not valid (Twilio code {ex.Code}), please check it and try again");
                    return(View());
                }
            }
            return(View(model));
        }
Exemplo n.º 14
0
        public async Task <IActionResult> RegisterCommercant(CommercentViewModel model)
        {
            ViewData["countries"] = AvailableCountries;
            if (ModelState.IsValid)
            {
                string uniqueFileName = null;
                if (model.FileP != null)
                {
                    // The image must be uploaded to the images folder in wwwroot
                    // To get the path of the wwwroot folder we are using the inject
                    // HostingEnvironment service provided by ASP.NET Core
                    string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "Files");
                    // To make sure the file name is unique we are appending a new
                    // GUID value and and an underscore to the file name
                    uniqueFileName = Guid.NewGuid().ToString() + "_" + model.FileP.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    // Use CopyTo() method provided by IFormFile interface to
                    // copy the file to wwwroot/images folder
                    model.FileP.CopyTo(new FileStream(filePath, FileMode.Create));
                }

                //phone
                try
                {
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(model.Telephone),
                        countryCode : model.PhoneNumberCountryCode,

                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null && numberDetails.Carrier.GetType().Equals(""))
                    {
                        ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                                 $"Le format du numero ne convient pas à votre pays");
                        return(View());
                    }

                    var numberToSave = numberDetails.PhoneNumber.ToString();



                    var user = new Commerçant
                    {
                        UserName = model.Email,

                        PhoneNumber         = numberToSave,
                        PersAContact        = model.PersAContact,
                        Email               = model.Email,
                        FormeJuridique      = model.Forme,
                        Secteur             = model.Secteur,
                        DomainActivite      = model.Domaine,
                        SituationEntreprise = model.SituationEntreprise,
                        EffectFemme         = model.EffectFemme,
                        EffectHomme         = model.EffectHomme,
                        Type    = model.Type,
                        Patente = uniqueFileName,
                        Country = model.PhoneNumberCountryCode
                    };
                    var result = await userManager.CreateAsync(user, model.Password);


                    if (result.Succeeded)
                    {
                        System.Diagnostics.Debug.WriteLine("Country is" + model.PhoneNumberCountryCode);


                        if (await roleManager.RoleExistsAsync("Commercant"))
                        {
                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        else
                        {
                            IdentityRole identityrole = new IdentityRole
                            {
                                Name = "Commercant"
                            };
                            await roleManager.CreateAsync(identityrole);

                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        var token = await userManager.GenerateEmailConfirmationTokenAsync(user);

                        var confirmationLink = Url.Action("ConfirmEmail", "Account",
                                                          new { userId = user.Id, token = token }, Request.Scheme, Request.Host.ToString());

                        //sending email


                        var mailMessage = new MimeMessage();
                        mailMessage.From.Add(new MailboxAddress("from TourME", "*****@*****.**"));
                        mailMessage.To.Add(new MailboxAddress("Client", model.Email));
                        mailMessage.Subject = "Email Confirmation";
                        mailMessage.Body    = new TextPart("plain")
                        {
                            Text = $"{confirmationLink}"
                        };

                        using (var smtpClient = new SmtpClient())
                        {
                            smtpClient.CheckCertificateRevocation = false;
                            smtpClient.Connect("smtp.gmail.com", 587, SecureSocketOptions.Auto);
                            smtpClient.Authenticate("*****@*****.**", "wiss20/20");
                            smtpClient.Send(mailMessage);
                            smtpClient.Disconnect(true);
                        }
                        //



                        ViewBag.ErrorTitle   = "Registration successful";
                        ViewBag.ErrorMessage = "Before you can Login, please confirm your " +
                                               "email, by clicking on the confirmation link we have emailed you";
                        return(View("Error"));

                        //await signInManager.SignInAsync(user, isPersistent: false);


                        //  return RedirectToAction("CreateExperience", "Experience");
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }

                    return(View(model));
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                             $"Le numéro entré n'est pas valide  (Code d'erreur {ex.Code})");
                    return(View());
                }
            }
            return(View());
        }
Exemplo n.º 15
0
        public async Task <IActionResult> OnPostAsync()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            if (!ModelState.IsValid)
            {
                await LoadAsync(user);

                return(Page());
            }

            //var phoneNumber = await _userManager.GetPhoneNumberAsync(user);
            //if (Input.PhoneNumber != phoneNumber)
            //{
            //    var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, Input.PhoneNumber);
            //    if (!setPhoneResult.Succeeded)
            //    {
            //        StatusMessage = "Unexpected error when trying to set phone number.";
            //        return RedirectToPage();
            //    }
            //}

            if (Input.FirstName != user.FirstName)
            {
                user.FirstName = Input.FirstName;
            }

            if (Input.LastName != user.LastName)
            {
                user.LastName = Input.LastName;
            }

            if (Input.Address != user.Address)
            {
                user.Address = Input.Address;
            }

            // twilio
            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            if (Input.PhoneNumber != null && Input.PhoneNumber != phoneNumber)
            {
                try
                {
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(Input.PhoneNumber),
                        countryCode : Input.PhoneNumberCountryCode,
                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null &&
                        numberDetails.Carrier.TryGetValue("type", out var phoneNumberType) &&
                        phoneNumberType == "landline")
                    {
                        ModelState.AddModelError($"{nameof(Input)}.{nameof(Input.PhoneNumber)}",
                                                 $"The number you entered does not appear to be capable of receiving SMS ({phoneNumberType}). Please enter a different value and try again");
                        return(Page());
                    }

                    var numberToSave   = numberDetails.PhoneNumber.ToString();
                    var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, numberToSave);

                    if (!setPhoneResult.Succeeded)
                    {
                        var userId = await _userManager.GetUserIdAsync(user);

                        throw new InvalidOperationException($"Unexpected error occurred setting phone number for user with ID '{userId}'.");
                    }
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(Input)}.{nameof(Input.PhoneNumber)}",
                                             $"The number you entered was not valid (Twilio code {ex.Code}), please check it and try again");
                    return(Page());
                }
            }

            await _userManager.UpdateAsync(user);

            await _signInManager.RefreshSignInAsync(user);

            StatusMessage = "Your profile has been updated";
            return(RedirectToPage());
        }
Exemplo n.º 16
0
        public async Task <IActionResult> BecomeCommercant(CommercentViewModel model, string jobb)
        {
            ViewData["countries"] = AvailableCountries;
            string idx = userManager.GetUserId(User);

            if (ModelState.IsValid)
            {
                Debug.WriteLine("valid" + ModelState.IsValid.ToString());
                string uniqueFileName       = null;
                List <EmployeDocuments> emp = new List <EmployeDocuments>();
                if (model.Documents != null && model.Documents.Count > 0)
                {
                    // Loop thru each selected file
                    foreach (IFormFile photo in model.Documents)
                    {
                        EmployeDocuments employe = new EmployeDocuments();
                        // The file must be uploaded to the images folder in wwwroot
                        // To get the path of the wwwroot folder we are using the injected
                        // IHostingEnvironment service provided by ASP.NET Core
                        string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "Files");
                        // To make sure the file name is unique we are appending a new
                        // GUID value and and an underscore to the file name
                        uniqueFileName = Guid.NewGuid().ToString() + "_" + photo.FileName;
                        string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                        // Use CopyTo() method provided by IFormFile interface to
                        // copy the file to wwwroot/images folder
                        photo.CopyTo(new FileStream(filePath, FileMode.Create));
                        employe.Filepath = uniqueFileName;
                        emp.Add(employe);
                    }
                }
                if (model.FileP != null)
                {
                    // The image must be uploaded to the images folder in wwwroot
                    // To get the path of the wwwroot folder we are using the inject
                    // HostingEnvironment service provided by ASP.NET Core
                    string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "images");
                    // To make sure the file name is unique we are appending a new
                    // GUID value and and an underscore to the file name
                    uniqueFileName = Guid.NewGuid().ToString() + "_" + model.FileP.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    // Use CopyTo() method provided by IFormFile interface to
                    // copy the file to wwwroot/images folder
                    model.FileP.CopyTo(new FileStream(filePath, FileMode.Create));
                }
                //phone
                try
                {
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(model.Telephone),
                        countryCode : model.PhoneNumberCountryCode,

                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null && numberDetails.Carrier.GetType().Equals(""))
                    {
                        ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                                 $"Le format du numero ne convient pas à votre pays");
                        return(View());
                    }

                    var numberToSave = numberDetails.PhoneNumber.ToString();

                    var user = new Fournisseur
                    {
                        UserName = model.Email,

                        PhoneNumber         = numberToSave,
                        PersAContact        = model.PersAContact,
                        Email               = model.Email,
                        Secteur             = model.Secteur,
                        NomGerant           = model.NomGerant,
                        DomainActivite      = model.Domaine,
                        Identifiant_fiscale = model.Identifiant_fiscale,
                        Titre               = model.Titre,
                        EffectFemme         = model.EffectFemme,
                        EffectHomme         = model.EffectHomme,
                        //Type = model.Type,
                        ProfilePhoto     = uniqueFileName,
                        TypeService      = (TypeService)Enum.Parse(typeof(TypeService), jobb),
                        Adresse          = model.Adresse,
                        EmployeDocuments = emp
                    };
                    var result = await userManager.CreateAsync(user, model.Password);


                    if (result.Succeeded)
                    {
                        if (await roleManager.RoleExistsAsync("Commercant"))
                        {
                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        else
                        {
                            IdentityRole identityrole = new IdentityRole
                            {
                                Name = "Commercant"
                            };
                            await roleManager.CreateAsync(identityrole);

                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        await signInManager.SignInAsync(user, isPersistent : false);
                    }

                    if (user.TypeService.ToString().ToLower() == "transport")
                    {
                        return(RedirectToAction("AjouterTransport", "Service"));
                    }
                    else if (user.TypeService.ToString().ToLower() == "logement")
                    {
                        return(RedirectToAction("AddLogement", "Service"));
                    }
                    else if (user.TypeService.ToString().ToLower() == "nourriture")
                    {
                        return(RedirectToAction("AddRestaurant", "Service"));
                    }
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                             $"Le numéro entré n'est pas valide  (Code d'erreur {ex.Code})");
                    return(View());
                }
            }

            return(View(model));
        }
Exemplo n.º 17
0
        public async Task <IActionResult> DevnirFournisseurLogement(CommercentViewModel model)
        {
            ViewData["countries"] = AvailableCountries;
            if (ModelState.IsValid)
            {
                Debug.WriteLine("valid" + ModelState.IsValid.ToString());
                string uniqueFileName = null;
                if (model.FileP != null)
                {
                    // The image must be uploaded to the images folder in wwwroot
                    // To get the path of the wwwroot folder we are using the inject
                    // HostingEnvironment service provided by ASP.NET Core
                    string uploadsFolder = Path.Combine(hostingEnvironment.WebRootPath, "Files");
                    // To make sure the file name is unique we are appending a new
                    // GUID value and and an underscore to the file name
                    uniqueFileName = Guid.NewGuid().ToString() + "_" + model.FileP.FileName;
                    string filePath = Path.Combine(uploadsFolder, uniqueFileName);
                    // Use CopyTo() method provided by IFormFile interface to
                    // copy the file to wwwroot/images folder
                    model.FileP.CopyTo(new FileStream(filePath, FileMode.Create));
                }
                //phone
                try
                {
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(model.Telephone),
                        countryCode : model.PhoneNumberCountryCode,

                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null && numberDetails.Carrier.GetType().Equals(""))
                    {
                        ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                                 $"Le format du numero ne convient pas à votre pays");
                        return(View());
                    }

                    var numberToSave = numberDetails.PhoneNumber.ToString();

                    var user = new Fournisseur
                    {
                        UserName = model.Email,

                        PhoneNumber         = numberToSave,
                        PersAContact        = model.PersAContact,
                        Email               = model.Email,
                        FormeJuridique      = model.Forme,
                        Secteur             = model.Secteur,
                        DomainActivite      = model.Domaine,
                        SituationEntreprise = model.SituationEntreprise,
                        EffectFemme         = model.EffectFemme,
                        EffectHomme         = model.EffectHomme,
                        Type        = model.Type,
                        Patente     = uniqueFileName,
                        TypeService = (TypeService)Enum.Parse(typeof(TypeService), model.TypseService)
                    };
                    var result = await userManager.CreateAsync(user, model.Password);


                    if (result.Succeeded)
                    {
                        System.Diagnostics.Debug.WriteLine("Country is" + model.PhoneNumberCountryCode);


                        if (await roleManager.RoleExistsAsync("Commercant"))
                        {
                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        else
                        {
                            IdentityRole identityrole = new IdentityRole
                            {
                                Name = "Commercant"
                            };
                            await roleManager.CreateAsync(identityrole);

                            await userManager.AddToRoleAsync(user, "Commercant");
                        }
                        await signInManager.SignInAsync(user, isPersistent : false);

                        if (user.TypeService.ToString() == "Logement")
                        {
                            return(RedirectToAction("AjouterLogement", "Service"));
                        }
                        if (user.TypeService.ToString() == "Nourriture")
                        {
                            return(RedirectToAction("AjouterNourriture", "Service"));
                        }

                        if (user.TypeService.ToString() == "Transport")
                        {
                        }
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError("", error.Description);
                    }

                    return(View(model));
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(model.Telephone)}.{nameof(model.Telephone)}",
                                             $"Le numéro entré n'est pas valide  (Code d'erreur {ex.Code})");
                    return(View());
                }
            }
            Debug.WriteLine("ma5dmtch" + ModelState.IsValid.ToString());
            return(View("New"));
        }
Exemplo n.º 18
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = Input.Email, Email = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName, Professional_Skill = Input.Professional_Skill, PhoneNumber = Input.PhoneNumber
                };
                try
                {
                    TwilioClient.Init(_twilioSMS.accountSid, _twilioSMS.authToken);
                    var numberDetails = await PhoneNumberResource.FetchAsync(
                        pathPhoneNumber : new Twilio.Types.PhoneNumber(Input.PhoneNumber),
                        countryCode : Input.PhoneNumberCountryCode,
                        type : new List <string> {
                        "carrier"
                    });

                    // only allow user to set phone number if capable of receiving SMS
                    if (numberDetails?.Carrier != null &&
                        numberDetails.Carrier.TryGetValue("type", out var phoneNumberType) &&
                        phoneNumberType == "landline")

                    {
                        ModelState.AddModelError($"{nameof(Input)}.{nameof(Input.PhoneNumber)}",
                                                 $"The number you entered does not appear to be capable of receiving SMS ({phoneNumberType}). Please enter a different value and try again");
                        return(Page());
                    }
                }
                catch (ApiException ex)
                {
                    ModelState.AddModelError($"{nameof(Input)}.{nameof(Input.PhoneNumber)}",
                                             $"The number you entered was not valid (Twilio code {ex.Code}), please check it and try again");
                    return(Page());
                }



                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);



                    // var message = new Message(new string[] { Input.Email }, "Confirmation email link", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.", null);
                    // await _emailSenderCustom.SendEmailAsync(message);
                    // GmailServiceSend gs = new GmailServiceSend();
                    // gs.GenerateEmail(Input.Email,"*****@*****.**" , "Confirmation email link", "Test");
                    // await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                    //  $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");


                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        if (_twilioSMS.Active == "true")
                        {
                            try
                            {
                                string phonevalidator = RandomString();
                                var    to             = new PhoneNumber("+38762912141");
                                var    SMSmessage     = MessageResource.Create(
                                    to,
                                    from: new PhoneNumber(_twilioSMS.TwilioNumber),
                                    body: $"New User:  {user} has been registered!");

                                var to2         = new PhoneNumber(Input.PhoneNumber);
                                var SMSmessage2 = MessageResource.Create(
                                    to2,
                                    from: new PhoneNumber(_twilioSMS.TwilioNumber),
                                    body: $"Hello {user}, please enter this code {phonevalidator} to confirm your registration!");

                                var PhoneCode = _context.Users.Single(p => p.Email == Input.Email);
                                PhoneCode.PhoneCodeValidator = phonevalidator;
                                _context.SaveChanges();
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine($" Registration Failure to send sms: {ex.Message} ");
                            }
                        }
                        return(LocalRedirect("/Identity/Account/Login"));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }



            // If we got this far, something failed, redisplay form
            return(Page());
        }
Exemplo n.º 19
0
        public async Task Index()
        {
            string from = Request.Form["From"];
            string body = Request.Form["Body"].ToString().ToLower();

            if (currentGame != null)
            {
                if (from != currentGame.RedPlayerNumber && from != currentGame.BluePlayerNumber)
                {
                    await HelperMethods.SendSms(from, "A game is already in progress");

                    return;
                }
                if (!currentGame.CanDraw)
                {
                    if (from != currentGame.OutputChannel)
                    {
                        await HelperMethods.SendSms(from, "It's not your turn yet.");

                        return;
                    }
                }
                else
                {
                    if (body.Trim() != "draw")
                    {
                        if (from != currentGame.OutputChannel)
                        {
                            await HelperMethods.SendSms(from, "It's not your turn yet.");

                            return;
                        }
                    }
                    else
                    {
                        await SendGameInstructions(currentGame.AttemptDraw(from));

                        if (currentGame.GameIsOver)
                        {
                            currentGame = null;
                        }
                        return;
                    }
                }
                if (currentGame.WaitingForDieResponse)
                {
                    if (body == "yes")
                    {
                        currentGame.WaitingForDieResponse = false;
                        currentGame.PlayersHaveDie        = true;
                    }
                    else if (body == "no")
                    {
                        currentGame.WaitingForDieResponse = false;
                        currentGame.PlayersHaveDie        = false;
                    }
                    await SendGameInstructions(currentGame.StartYear());
                }
                else if (currentGame.WaitingForDieRollResponse)
                {
                    await SendGameInstructions(currentGame.ProcessDieRoll(body));
                }
                else if (currentGame.WaitingForRoundResponse)
                {
                    var i = currentGame.ContinueRound(body.ToUpper());
                    if (!currentGame.GameIsOver)
                    {
                        await SendGameInstructions(i);
                    }

                    if (currentGame.GameIsOver)
                    {
                        currentGame = null;
                    }
                }
            }
            if (currentlyAwaitingOtherPlayer)
            {
                if (from == awaitingOtherPlayer.PhoneNumber.ToString())
                {
                    if (body == "yes" || body == "y")
                    {
                        await HelperMethods.SendSms(requestingPlayer.PhoneNumber.ToString(), "Your request has been accepted. Starting game.");

                        currentGame = new TwilioGameManager(requestingPlayer, awaitingOtherPlayer);
                        currentGame.WaitingForDieResponse = false;
                        currentGame.PlayersHaveDie        = false;
                        await SendGameInstructions(currentGame.StartYear());

                        ResetPlayers();
                    }
                    else
                    {
                        await HelperMethods.SendSms(awaitingOtherPlayer.PhoneNumber.ToString(), "OK, rejecting request.");

                        await HelperMethods.SendSms(requestingPlayer.PhoneNumber.ToString(), "The other player has rejected the request.");

                        ResetPlayers();
                    }
                }
                else
                {
                    await HelperMethods.SendSms(from, "Currently waiting for another player to join a game.");
                }
            }
            if (body.StartsWith("start game") && body.Length > 11)
            {
                PhoneNumber         potentialNumber = new PhoneNumber(body.Substring(11));
                PhoneNumberResource otherResult     = null;
                try
                {
                    otherResult = await PhoneNumberResource.FetchAsync(potentialNumber);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine("");
                    await HelperMethods.SendSms(from, "That doesn't appear to be a valid number. Try again");

                    return;
                }

                PhoneNumberResource result = await PhoneNumberResource.FetchAsync(new PhoneNumber(from));

                requestingPlayer             = result;
                awaitingOtherPlayer          = otherResult;
                currentlyAwaitingOtherPlayer = true;
                await HelperMethods.SendSms(otherResult.PhoneNumber.ToString(), $"{result.NationalFormat} has sent you a game request. Text back yes or y to accept. Text back no or n to reject.");
            }
        }
Exemplo n.º 20
0
 public async Task <PhoneNumberResource> FetchPhoneNumberResource(FetchPhoneNumberOptions fetchOptions, ITwilioRestClient twilioClient)
 {
     return(await PhoneNumberResource.FetchAsync(fetchOptions, twilioClient));
 }