private async void Button_Clicked(object sender, EventArgs e) { if (EntryUserName.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุชื่อผู้ใช้งาน", null, "ตกลง"); EntryUserName.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUserName.Placeholder = "กรุณาระบุชื่อผู้ใช้งาน"; EntryUserName.Focus(); return; } if (EntryUserPassword.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุรหัสผ่าน", null, "ตกลง"); EntryUserPassword.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUserPassword.Placeholder = "กรุณาระบุรหัสผ่าน"; EntryUserPassword.Focus(); return; } if (EntryUserEmail.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุรหัสผ่าน", null, "ตกลง"); EntryUserEmail.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUserEmail.Placeholder = "กรุณาระบุอีเมล์"; EntryUserEmail.Focus(); return; } if (EntryUserPhoneNumber.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุรหัสผ่าน", null, "ตกลง"); EntryUserPhoneNumber.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUserPhoneNumber.Placeholder = "กรุณาระบุเบอร์โทรศัพท์"; EntryUserPhoneNumber.Focus(); return; } Device.BeginInvokeOnMainThread(async() => { //Register data to firebase also var isExist = await apiRequestHelper.RequestCheckUserExistAsync(EntryUserName.Text); if (isExist == "true") { Toast.MakeText(this.context, "ชื่อผู้ใช้งานซ้ำ", ToastLength.Short).Show(); EntryUserName.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUserName.Placeholder = "กรุณาระบุชื่อผู้ใช้งานใหม่"; EntryUserName.Focus(); return; } var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); var db = new SQLiteConnection(dbpath); db.CreateTable <RegUserTable>(); var item = new RegUserTable() { UserName = EntryUserName.Text, Password = EntryUserPassword.Text, Email = EntryUserEmail.Text, PhoneNumber = EntryUserPhoneNumber.Text, }; db.Insert(item); var profile = new ProfileTable() { UserName = EntryUserName.Text, Email = EntryUserEmail.Text, PhoneNumber = EntryUserPhoneNumber.Text, }; db.CreateTable <ProfileTable>(); db.Insert(profile); //Register data to firebase also await apiRequestHelper.RequestRegisterUserAsync(EntryUserName.Text, EntryUserPassword.Text, EntryUserEmail.Text, EntryUserPhoneNumber.Text); ProfileJson json = new ProfileJson(); json.UserName = EntryUserName.Text; json.Email = EntryUserEmail.Text; json.PhoneNumber = EntryUserPhoneNumber.Text; json.CreateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); await apiRequestHelper.RequestAddProfileAsync(json); var result = await this.DisplayAlert(null, "สมัครสมาชิกสำเร็จ!", null, "ตกลง"); if (!result) { await Navigation.PushAsync(new LoginPage()); } }); }
//private async void SaveProfile(string username, string email) private async void SaveProfile(string username) { RootProfileObject profileData = await apiRequestHelper.RequestProfileAsync(username); if (profileData != null && profileData.Data != null && profileData.Data.Count > 0) { List <ProfileJson> Data = profileData.Data; if (Data.Count > 0) { ProfileJson json = Data.First <ProfileJson>(); var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); var db = new SQLiteConnection(dbpath); var userprofile = db.GetTableInfo("ProfileTable"); if (userprofile.Count == 0) { //TODO เอาข้อมูลจาก Cloud มาอัพเดท Local DB var item = new ProfileTable() { UserName = username, FirstName = EntryFirstName.Text, LastName = EntryLastName.Text, Gender = ((SelectGender == null || SelectGender.SelectedItem == null)? "" : SelectGender.SelectedItem.ToString()), DateOfBirth = ((SelectDateOfBirth == null || SelectDateOfBirth.Date == null)? "" : SelectDateOfBirth.Date.ToString("dd/MM/yyyy")), Address1 = EntryAddress1.Text, Address2 = EntryAddress2.Text, Address3 = EntryAddress3.Text, Email = json.Email, PhoneNumber = json.PhoneNumber, Content = tmpImageBytesNew, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }; db.CreateTable <ProfileTable>(); db.Insert(item); //json.UserName = username; json.FirstName = EntryFirstName.Text; json.LastName = EntryLastName.Text; if (SelectGender != null && SelectGender.SelectedItem != null) { json.Gender = SelectGender.SelectedItem.ToString(); } if (SelectDateOfBirth != null && SelectDateOfBirth.Date != null) { json.DateOfBirth = SelectDateOfBirth.Date.ToString("dd/MM/yyyy"); } json.Address1 = EntryAddress1.Text; json.Address2 = EntryAddress2.Text; json.Address3 = EntryAddress3.Text; //json.Email = email; //json.PhoneNumber = EntryUserPhoneNumber.Text; //json.CreateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); json.UpdateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); await apiRequestHelper.RequestUpdateProfileAsync(json); Device.BeginInvokeOnMainThread(async() => { Toast.MakeText(context, "บันทึกข้อมูลสำเร็จ", ToastLength.Short).Show(); }); } else { var item = db.Table <ProfileTable>().Where(u => u.UserName.Equals(username)).FirstOrDefault(); if (item != null) { item.FirstName = EntryFirstName.Text; item.LastName = EntryLastName.Text; if (SelectGender != null && SelectGender.SelectedItem != null) { item.Gender = SelectGender.SelectedItem.ToString(); } if (SelectDateOfBirth != null && SelectDateOfBirth.Date != null) { item.DateOfBirth = SelectDateOfBirth.Date.ToString("dd/MM/yyyy"); } item.Address1 = EntryAddress1.Text; item.Address2 = EntryAddress2.Text; item.Address3 = EntryAddress3.Text; //item.Email = email; item.PhoneNumber = EntryUserPhoneNumber.Text; if (tmpImageBytesNew != null) { item.Content = tmpImageBytesNew; } item.UpdateDate = DateTime.Now; db.RunInTransaction(() => { db.Update(item); }); json.UserName = username; json.ProfileId = item.ProfileId.ToString(); json.FirstName = EntryFirstName.Text; json.LastName = EntryLastName.Text; if (SelectGender != null && SelectGender.SelectedItem != null) { json.Gender = SelectGender.SelectedItem.ToString(); } if (SelectDateOfBirth != null && SelectDateOfBirth.Date != null) { json.DateOfBirth = SelectDateOfBirth.Date.ToString("dd/MM/yyyy"); } json.Address1 = EntryAddress1.Text; json.Address2 = EntryAddress2.Text; json.Address3 = EntryAddress3.Text; //json.Email = email; //json.PhoneNumber = EntryUserPhoneNumber.Text; json.UpdateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); var result = await apiRequestHelper.RequestUpdateProfileAsync(json); Console.WriteLine("SaveProfile result:", result); Device.BeginInvokeOnMainThread(async() => { Toast.MakeText(context, "บันทึกข้อมูลสำเร็จ", ToastLength.Short).Show(); }); } else { //TODO เอาข้อมูลจาก Cloud มาอัพเดท Local DB item = new ProfileTable() { UserName = username, FirstName = EntryFirstName.Text, LastName = EntryLastName.Text, Gender = ((SelectGender == null || SelectGender.SelectedItem == null) ? "" : SelectGender.SelectedItem.ToString()), DateOfBirth = ((SelectDateOfBirth == null || SelectDateOfBirth.Date == null) ? "" : SelectDateOfBirth.Date.ToString("dd/MM/yyyy")), Address1 = EntryAddress1.Text, Address2 = EntryAddress2.Text, Address3 = EntryAddress3.Text, Email = json.Email, PhoneNumber = json.PhoneNumber, Content = tmpImageBytesNew, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }; db.CreateTable <ProfileTable>(); db.Insert(item); //json.UserName = username; json.FirstName = EntryFirstName.Text; json.LastName = EntryLastName.Text; if (SelectGender != null && SelectGender.SelectedItem != null) { json.Gender = SelectGender.SelectedItem.ToString(); } if (SelectDateOfBirth != null && SelectDateOfBirth.Date != null) { json.DateOfBirth = SelectDateOfBirth.Date.ToString("dd/MM/yyyy"); } json.Address1 = EntryAddress1.Text; json.Address2 = EntryAddress2.Text; json.Address3 = EntryAddress3.Text; //json.Email = email; //json.PhoneNumber = EntryUserPhoneNumber.Text; //json.CreateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); json.UpdateDate = DateTime.Now.ToString("dd/MM/yyyy hh:mm tt"); await apiRequestHelper.RequestUpdateProfileAsync(json); Device.BeginInvokeOnMainThread(async() => { Toast.MakeText(context, "บันทึกข้อมูลสำเร็จ", ToastLength.Short).Show(); }); } //Refresh Profile Image var md = (MasterDetailPage)Application.Current.MainPage; var menu = (MainPageMaster)md.Master; menu.LoadProfile(); return; } } } }
async void Login_Clicked(object sender, EventArgs e) { if (EntryUser.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุชื่อผู้ใช้งาน", null, "ตกลง"); EntryUser.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryUser.Placeholder = "กรุณาระบุชื่อผู้ใช้งาน"; EntryUser.Focus(); return; } if (EntryPassword.Text == null) { //await this.DisplayAlert(null, "กรุณาระบุรหัสผ่าน", null, "ตกลง"); EntryPassword.PlaceholderColor = Color.FromHex("#ffb3ba"); EntryPassword.Placeholder = "กรุณาระบุรหัสผ่าน"; EntryPassword.Focus(); return; } btnLogin.IsEnabled = false; //Cloud database //Register data to firebase also RegUserJson user = await apiRequestHelper.RequestLoginUserAsync(EntryUser.Text, EntryPassword.Text); if (user != null & user.UserName == EntryUser.Text) { var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); var db = new SQLiteConnection(dbpath); var reguser = db.GetTableInfo("RegUserTable"); if (reguser.Count == 0) { db.CreateTable <RegUserTable>(); var item = new RegUserTable() { UserName = user.UserName, Password = user.Password, Email = user.Email, PhoneNumber = user.PhoneNumber, }; db.Insert(item); } else { var item = db.Table <RegUserTable>().Where(u => u.UserName.Equals(user.UserName)).FirstOrDefault(); if (item == null) { var data = new RegUserTable() { UserName = user.UserName, Password = user.Password, Email = user.Email, PhoneNumber = user.PhoneNumber, }; db.Insert(data); } } RootProfileObject profileData = await apiRequestHelper.RequestProfileAsync(user.UserName); if (profileData != null && profileData.Data != null && profileData.Data.Count > 0) { List <ProfileJson> Data = profileData.Data; if (Data.Count > 0) { ProfileJson json = Data.First <ProfileJson>(); var userprofile = db.GetTableInfo("ProfileTable"); if (userprofile.Count == 0) { db.CreateTable <ProfileTable>(); var profile = new ProfileTable() { UserName = json.UserName, FirstName = json.FirstName, LastName = json.LastName, Gender = (json.Gender == null ? "" : json.Gender), DateOfBirth = (json.DateOfBirth == null ? "" : json.DateOfBirth), Address1 = json.Address1 == null? "" : json.Address1, Address2 = json.Address2 == null ? "" : json.Address2, Address3 = json.Address3 == null ? "" : json.Address3, Email = json.Email, PhoneNumber = json.PhoneNumber, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }; db.Insert(profile); } else { var item = db.Table <ProfileTable>().Where(u => u.UserName.Equals(user.UserName)).FirstOrDefault(); if (item == null) { var profile = new ProfileTable() { UserName = json.UserName, FirstName = json.FirstName, LastName = json.LastName, Gender = (json.Gender == null ? "" : json.Gender), DateOfBirth = (json.DateOfBirth == null ? "" : json.DateOfBirth), Address1 = json.Address1 == null ? "" : json.Address1, Address2 = json.Address2 == null ? "" : json.Address2, Address3 = json.Address3 == null ? "" : json.Address3, Email = json.Email, PhoneNumber = json.PhoneNumber, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }; db.Insert(profile); } } } } /////////////////// Device.StartTimer(TimeSpan.FromSeconds(0.1), () => { btnLogin.IsEnabled = true; Toast.MakeText(context, "Login Successfull", ToastLength.Short).Show(); Application.Current.Properties.Add("USER_NAME", EntryUser.Text); App.Current.MainPage = new MainPage(); return(false); }); } else { Device.BeginInvokeOnMainThread(async() => { var result2 = await this.DisplayAlert(null, "ข้อผิดพลาด! ไม่พบข้อมูลผู้ใช้งาน\nกรุณาตรวจสอบชื่อผู้ใช้งานและรหัสผ่าน", null, "ตกลง"); if (!result2) { btnLogin.IsEnabled = true; EntryUser.Focus(); } }); } //End of Cloud database //Local database /* * var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); * var db = new SQLiteConnection(dbpath); * db.CreateTable<RegUserTable>(); * var myquery = db.Table<RegUserTable>().Where(u => u.UserName.Equals(EntryUser.Text) && u.Password.Equals(EntryPassword.Text)).FirstOrDefault(); * * if (myquery != null) * { * Application.Current.Properties.Add("USER_NAME", myquery.UserName); * App.Current.MainPage = new MainPage(); * } * else * { * Device.BeginInvokeOnMainThread(async () => { * if(EntryUser.Text == null) * { * //await this.DisplayAlert(null, "กรุณาระบุชื่อผู้ใช้งาน", null, "ตกลง"); * EntryUser.PlaceholderColor = Color.FromHex("#ffb3ba"); * EntryUser.Placeholder = "กรุณาระบุชื่อผู้ใช้งาน"; * EntryUser.Focus(); * return; * } * * if (EntryPassword.Text == null) * { * //await this.DisplayAlert(null, "กรุณาระบุรหัสผ่าน", null, "ตกลง"); * EntryPassword.PlaceholderColor = Color.FromHex("#ffb3ba"); * EntryPassword.Placeholder = "กรุณาระบุรหัสผ่าน"; * EntryPassword.Focus(); * return; * } * * var result = await this.DisplayAlert(null, "ข้อผิดพลาด! ไม่พบข้อมูลผู้ใช้งาน\nกรุณาตรวจสอบชื่อผู้ใช้งานและรหัสผ่าน", null, "ตกลง"); * * if (!result) * { * EntryUser.Focus(); * } * }); * * } */ //End of Local database }
public async void LoadProfile() { if (Application.Current.Properties.ContainsKey("USER_NAME")) { var username = Application.Current.Properties["USER_NAME"] as string; //Remove codes for retreiving data from local database /* * var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); * var db = new SQLiteConnection(dbpath); * var myquery = db.Table<RegUserTable>().Where(u => u.UserName.Equals(username)).FirstOrDefault(); * * if (myquery != null) * { * * } */ //End of local database RootProfileObject profileData = await apiRequestHelper.RequestProfileAsync(username); if (profileData != null && profileData.Data != null && profileData.Data.Count > 0) { var dbpath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "UserDatabase.db"); var db = new SQLiteConnection(dbpath); var profileTable = db.GetTableInfo("ProfileTable"); if (profileTable.Count == 0) { List <ProfileJson> Data = profileData.Data; ProfileJson json = Data.First <ProfileJson>(); db.CreateTable <ProfileTable>(); ProfileTable item = new ProfileTable() { UserName = username, FirstName = json.FirstName, LastName = json.LastName, Gender = json.Gender, DateOfBirth = json.DateOfBirth, Address1 = json.Address1, Address2 = json.Address2, Address3 = json.Address3, Email = json.Email, PhoneNumber = json.PhoneNumber, CreateDate = DateTime.Now, }; db.Insert(item); // string fullName = ""; if (item.FirstName != null) { fullName = item.FirstName; } if (item.LastName != null) { fullName += " " + item.LastName; } AccountName.Text = fullName; } else { var profile = db.Table <ProfileTable>().Where(u => u.UserName.Equals(username)).FirstOrDefault(); if (profile != null) { string fullName = ""; if (profile.FirstName != null) { fullName = profile.FirstName; } if (profile.LastName != null) { fullName += " " + profile.LastName; } AccountName.Text = fullName; if (profile.Content != null) { ImageBytes = profile.Content; Stream sm = BytesToStream(ImageBytes); selectedImage.Source = ImageSource.FromStream(() => sm); } } } } } }
private IProfileResponse UpSertProfile(IProfile aProfile) { IProfileResponse AProfileResponse = new ProfileResponse(); try { var ProfileList = GetJsonProfiles(); var ProfileAddressNew = new List <IProfileAddress>(); var SelectedProfile = ProfileList .Where(aItem => aItem.ProfileId == aProfile.ProfileId) .FirstOrDefault(); if (SelectedProfile == null) { SelectedProfile = new ProfileJson(); SelectedProfile.ProfileId = aProfile.ProfileId; ProfileList.Add(SelectedProfile); } SelectedProfile.FirstName = aProfile.FirstName; SelectedProfile.LastName = aProfile.LastName; SelectedProfile.Active = aProfile.Active; aProfile.Addresses.ForEach(delegate(IProfileAddress aAddress) { IAddressPopulate aAddressPopulate = null; if (aAddress.IsPrimary == true) { aAddressPopulate = new AddressPopulatePrimaryJson(this, aProfile); } else if (aAddress.IsSecondary == true) { aAddressPopulate = new AddressPopulateSecondaryJson(this, aProfile); } IProfileAddress AAddressUpsert = aAddressPopulate.Populate( aAddress.AddressId, aAddress.Address1, aAddress.Address2, aAddress.City, aAddress.StateAbrev, aAddress.ZipCode ); var AddressConcrete = AAddressUpsert as ProfileAddress; ProfileAddressNew.Add(AddressConcrete); }); SelectedProfile.Addresses = _ProfileConverter.Convert(ProfileAddressNew); var ProfileNewList = _ProfileConverter.ConvertToJson(ProfileList); WriteJsonToFile(ProfileNewList); AProfileResponse.Profile = _ProfileConverter.Convert(SelectedProfile); AProfileResponse.Success = true; } catch (Exception e) { AProfileResponse.Success = false; } return(AProfileResponse); }