/// <summary> /// This method create IForm for save the customer information /// </summary> /// <returns></returns> public static IForm <SaveCustomerForm> BuildForm() { OnCompletionAsyncDelegate <SaveCustomerForm> processOrder = async(context, state) => { ACFCustomer customer = new ACFCustomer(); try { customer.CustomerId = 0;//It is setted to 0, beacuse we will create new user, in other hand we can pass the id for update the record customer.FirstName = state.FirstName; customer.LastName = state.LastName; customer.Email = state.Email; customer.PhoneNumber = state.PhoneNumber; customer.Sex = GetIntSex(state.Sex.ToString()); int customerId = AppoinmentService.SaveCustomer(customer.PhoneNumber, customer.Email, customer.FirstName, customer.LastName, customer.Sex, customer.PhoneNumber, customer.CustomerId); state.customerId = customerId.ToString(); if (customerId > 0) { FRService frService = new FRService(); //Get the idImage Saved int idImageSaved = 0; if (!context.UserData.TryGetValue <int>("idImageSaveId", out idImageSaved)) { idImageSaved = 0; } //Set the FaceRecognition Model, FaceRecognitionModel faceRecognitionModel = new FaceRecognitionModel(); faceRecognitionModel.ObjectId = Utilities.Util.generateObjectId(customer.FirstName, customer.LastName, customer.PhoneNumber); faceRecognitionModel.PhotoId = savedImageId.ToString(); faceRecognitionModel.Name = imageName; faceRecognitionModel.FileName = imageName; context.UserData.SetValue <FaceRecognitionModel>("FaceRecognitionModel", faceRecognitionModel); bool uploadImage = await frService.uploadImage(customer.FirstName, customer.LastName, customer.PhoneNumber , imageName, savedImageId); await context.PostAsync("Your user has been saved succesfully with the id: " + customerId); /* Create the userstate */ //Instance of the object ACFCustomer for keept the customer ACFCustomer customerState = new ACFCustomer(); customerState.CustomerId = customerId; customerState.FirstName = customer.FirstName; customerState.PhoneNumber = customer.PhoneNumber; customerState.Sex = Convert.ToInt32(customer.Sex); customerState.PersonaId = customer.PhoneNumber; context.UserData.SetValue <ACFCustomer>("customerState", customerState); context.UserData.SetValue <bool>("SignIn", true); } } catch (Exception ex) { await context.PostAsync("We have an error: " + ex.Message); } }; CultureInfo ci = new CultureInfo("en"); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; var culture = Thread.CurrentThread.CurrentUICulture; var form = new FormBuilder <SaveCustomerForm>(); var yesTerms = form.Configuration.Yes.ToList(); var noTerms = form.Configuration.No.ToList(); yesTerms.Add("Yes"); noTerms.Add("No"); form.Configuration.Yes = yesTerms.ToArray(); return(form.Message("Fill the next information, please") .Field(nameof(FirstName)) .Field(nameof(LastName)) .Field(nameof(Email)) .Field(nameof(PhoneNumber)) .Field(nameof(Sex)) .Field(new FieldReflector <SaveCustomerForm>(nameof(customerId)).SetActive(inActiveField)) .Confirm("Are you selected the information: " + "\n* Name: {FirstName} " + "\n* Last name: {LastName} " + "\n* Email: {Email} " + "\n* Phone Number: {PhoneNumber} " + "\n* Sex: {Sex}? \n" + "(yes/no)") .AddRemainingFields() .Message("The process for save your user has been started!") .OnCompletion(processOrder) .Build()); }
/// <summary> /// This method create IForm for save the customer information /// </summary> /// <returns></returns> public static IForm <SaveCustomerFormApp> BuildForm() { OnCompletionAsyncDelegate <SaveCustomerFormApp> processOrder = async(context, state) => { ACFCustomer customer = new ACFCustomer(); try { customer.CustomerId = 0;//It is setted to 0, beacuse we will create new user, in other hand we can pass the id for update the record if (!string.IsNullOrEmpty(state.name) && !string.IsNullOrEmpty(state.LastName)) { try { customer.FirstName = state.name; customer.LastName = state.LastName; } catch (Exception) { } } customer.PhoneNumber = state.PhoneNumber; int customerId = AppoinmentService.SaveCustomer(customer.PhoneNumber, customer.FirstName, customer.LastName, customer.PhoneNumber, customer.CustomerId); state.customerId = customerId.ToString(); if (customerId > 0) { FRService frService = new FRService(); //Get the idImage Saved int idImageSaved = 0; if (!context.UserData.TryGetValue <int>("idImageSaveId", out idImageSaved)) { idImageSaved = 0; } //Set the FaceRecognition Model, FaceRecognitionModel faceRecognitionModel = new FaceRecognitionModel(); faceRecognitionModel.ObjectId = Utilities.Util.generateObjectId(customer.FirstName, customer.LastName, customer.PhoneNumber); faceRecognitionModel.PhotoId = idImageSaved.ToString(); faceRecognitionModel.Name = imageName; faceRecognitionModel.FileName = imageName; context.UserData.SetValue <FaceRecognitionModel>("FaceRecognitionModel", faceRecognitionModel); bool uploadImage = await frService.uploadImage(customer.FirstName, customer.LastName, customer.PhoneNumber , imageName, idImageSaved); await context.PostAsync("Congratulations, your account was created!"); /* Create the userstate */ //Instance of the object ACFCustomer for keept the customer ACFCustomer customerState = new ACFCustomer(); customerState.CustomerId = customerId; customerState.FirstName = customer.FirstName; customerState.PhoneNumber = customer.PhoneNumber; customerState.PersonaId = customer.PhoneNumber; context.UserData.SetValue <ACFCustomer>("customerState", customerState); context.UserData.SetValue <bool>("SignIn", true); } } catch (Exception ex) { await context.PostAsync("We have an error: " + ex.Message); } }; CultureInfo ci = new CultureInfo("en"); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; var culture = Thread.CurrentThread.CurrentUICulture; var form = new FormBuilder <SaveCustomerFormApp>(); var yesTerms = form.Configuration.Yes.ToList(); var noTerms = form.Configuration.No.ToList(); yesTerms.Add("Yes"); noTerms.Add("No"); form.Configuration.Yes = yesTerms.ToArray(); return(form//.Message("Fill the next information, please") .Field(nameof(name)) .Field(nameof(LastName)) .Field(nameof(PhoneNumber), validate: async(state, response) => { //This source code appear in warning beacuse not have a method async implemented, but works good without these method Regex rgx = new Regex(@"^[1-9][0-9]{7,14}$"); //Regex rgx = new Regex(@"^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$"); var result = new ValidateResult { IsValid = true, Value = response }; if (!string.IsNullOrEmpty(result.Value.ToString())) { if (rgx.IsMatch(result.Value.ToString())) { result.IsValid = true; } else { result.Feedback = "Invalid phone number format"; result.IsValid = false; } } return result; }) .Field(new FieldReflector <SaveCustomerFormApp>(nameof(customerId)).SetActive(inActiveField)) .AddRemainingFields() .OnCompletion(processOrder) .Build()); }