public async void FilterDistric_Click(object sender, EventArgs e) { if (LookUpControlDistrict == null) { LookUpControlDistrict = new LookUpControl(); LookUpControlDistrict.ItemsSource = viewModel.DistrictList; LookUpControlDistrict.SelectedItemChange += District_Change; LookUpControlDistrict.BottomModal = LookUpModal; LookUpControlDistrict.NameDisplay = "Name"; LookUpControlDistrict.Placeholder = Language.quan_huyen; LookUpControlDistrict.SetBinding(LookUpControl.SelectedItemProperty, new Binding("District") { Source = viewModel }); } await LookUpControlDistrict.OpenModal(); }
public async void FilterType_Click(object sender, EventArgs e) { if (LookUpControlType == null) { LookUpControlType = new LookUpControl(); LookUpControlType.ItemsSource = viewModel.TypeList; LookUpControlType.SelectedItemChange += Type_Change; LookUpControlType.BottomModal = LookUpModal; LookUpControlType.NameDisplay = "Name"; LookUpControlType.Placeholder = Language.loai_bat_dong_san; LookUpControlType.SetBinding(LookUpControl.SelectedItemProperty, new Binding("Type") { Source = viewModel }); } await LookUpControlType.OpenModal(); }
public async void FilterProvince_Click(object sender, EventArgs e) { if (LookUpControlProvince == null) { await viewModel.GetProvinceAsync(); LookUpControlProvince = new LookUpControl(); LookUpControlProvince.ItemsSource = viewModel.ProvinceList; LookUpControlProvince.SelectedItemChange += Province_Change; LookUpControlProvince.BottomModal = LookUpModal; LookUpControlProvince.NameDisplay = "Name"; LookUpControlProvince.Placeholder = Language.tinh_thanh; LookUpControlProvince.SetBinding(LookUpControl.SelectedItemProperty, new Binding("Province") { Source = viewModel }); } await LookUpControlProvince.OpenModal(); }
//Funkcija za popunjavanje kontrole u Input formi private void PopunjavanjeKontrola(PropertyInfo item) { if (item.GetCustomAttributes <BrowsableAttribute>().Count() > 0) { //f-ja koja provjerava da li ima BrowsableAttribute ako ima da se ne prikazuje na input formi return; } //Dodavanje kontrole za datum if (item.PropertyType.Name == "DateTime") { InputDateControl uc = new InputDateControl(); uc.Name = item.Name; uc.SetLabel(item.GetCustomAttributes <DisplayNameAttribute>().FirstOrDefault().DisplayName); if (state == StateEnum.Update) { try { uc.SetValueInDateBox(item.GetValue(myInterface).ToString()); } catch { } } //provjera da li smo kliknuli na detalje ako jesmo da polje bude samo read only if (Detalji == "detalji") { uc.ReadOnly(); } flowPanel.Controls.Add(uc); } //Dodavanje kontrole za Lookup else if (item.GetCustomAttributes <Attributes.ForeignKeyAttribute>() != null && item.Name.Contains("ID")) { PropertyInterface foreignKeyInterface = Assembly.GetExecutingAssembly(). CreateInstance(item.GetCustomAttribute <ForeignKeyAttribute>().ClassName) as PropertyInterface; LookUpControl uc = new LookUpControl(foreignKeyInterface, userEmail, Id); uc.Name = item.Name; uc.SetLabel(item.GetCustomAttributes <DisplayNameAttribute>().FirstOrDefault().DisplayName); if (uc.GetLabelValue() == "Radnik ID") { uc.SetValueTextBox(Id, userEmail); } //provjera da li smo kliknuli na detalje ako jesmo da polje bude samo read only if (Detalji == "detalji") { uc.ReadOnly(); } if (state == StateEnum.Update) { try { string broj = item.GetValue(myInterface).ToString(); string red = ""; SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, foreignKeyInterface.GetSelectQueryZaJedanItem(broj)); DataTable dt = new DataTable(); dt.Load(reader); if (uc.GetLabelValue() == "Radnik ID") { PropertyOsoba pom = new PropertyOsoba(); broj = dt.Rows[0][1].ToString(); reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, pom.GetSelectQueryZaJedanItem(broj)); dt = new DataTable(); dt.Load(reader); } //treba dodati i za ostale property-e sta treba da se prikaze u lookup polju if (myInterface.GetType() == typeof(PropertyKlijent)) { red = dt.Rows[0].ItemArray[1].ToString() + " " + dt.Rows[0].ItemArray[2].ToString(); } else if (myInterface.GetType() == typeof(PropertyFaktura) && item.Name == "KlijentID") { DataTable dtpom = new DataTable(); bool prop = true; foreach (PropertyInfo itemPom in foreignKeyInterface.GetType().GetProperties()) { //Izbacivanje prikaza primarnog kljuca if (prop == false) { if (itemPom.Name.Contains("ID")) { string klasa = itemPom.GetCustomAttributes <ForeignKeyAttribute>().FirstOrDefault().ClassName; foreignKeyInterface = Assembly.GetExecutingAssembly(). CreateInstance(klasa) as PropertyInterface; reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, foreignKeyInterface.GetLookupQuery(dt.Rows[0].ItemArray[1].ToString())); dtpom.Load(reader); } } prop = false; } red = dtpom.Rows[0].ItemArray[0].ToString(); } else if (uc.GetLabelValue() == "Model ID") { PropertyProizvodjac pom = new PropertyProizvodjac(); broj = dt.Rows[0][2].ToString(); red = dt.Rows[0].ItemArray[1].ToString(); reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, pom.GetSelectQueryZaJedanItem(broj)); dt = new DataTable(); dt.Load(reader); red += " " + dt.Rows[0].ItemArray[1].ToString(); } else if (myInterface.GetType() == typeof(PropertyCijena) && item.Name == "VoziloID") { DataTable dtpom = new DataTable(); bool prop = true; foreach (PropertyInfo itemPom in foreignKeyInterface.GetType().GetProperties()) { //Izbacivanje prikaza primarnog kljuca if (prop == false) { if (itemPom.Name.Contains("ID")) { string klasa = itemPom.GetCustomAttributes <ForeignKeyAttribute>().FirstOrDefault().ClassName; foreignKeyInterface = Assembly.GetExecutingAssembly(). CreateInstance(klasa) as PropertyInterface; reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, foreignKeyInterface.GetLookupQuery(dt.Rows[0].ItemArray[1].ToString())); dtpom.Load(reader); reader.Close(); red = dtpom.Rows[0].ItemArray[0].ToString(); bool prop1 = true; foreach (PropertyInfo itemPom1 in foreignKeyInterface.GetType().GetProperties()) { //Izbacivanje prikaza primarnog kljuca if (prop1 == false) { if (itemPom1.Name.Contains("ID")) { string klasa1 = itemPom1.GetCustomAttributes <ForeignKeyAttribute>().FirstOrDefault().ClassName; foreignKeyInterface = Assembly.GetExecutingAssembly(). CreateInstance(klasa1) as PropertyInterface; reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, foreignKeyInterface.GetLookupQuery(dtpom.Rows[0].ItemArray[1].ToString())); dtpom = new DataTable(); dtpom.Load(reader); red += " " + dtpom.Rows[0].ItemArray[0].ToString(); break; } } prop1 = false; } break; } } prop = false; } } else { red = dt.Rows[0].ItemArray[1].ToString(); try { red += " " + dt.Rows[0].ItemArray[2].ToString(); } catch { } } reader.Close(); uc.SetValueTextBox(item.GetValue(myInterface).ToString(), red); } catch { } } flowPanel.Controls.Add(uc); } //Dodavanje kontrole za 2 radio dugmica else if (item.GetCustomAttribute <TwoRadioButtonsAttribute>() != null) { TwoRadioButtonsControl uc = new TwoRadioButtonsControl(); uc.Name = item.Name; uc.SetLabel(item.GetCustomAttributes <DisplayNameAttribute>().FirstOrDefault().DisplayName); uc.SetRadioButtons(item.GetCustomAttribute <TwoRadioButtonsAttribute>().Value1, item.GetCustomAttribute <TwoRadioButtonsAttribute>().Value2); //provjera da li smo kliknuli na detalje ako jesmo da polje bude samo read only if (Detalji == "detalji") { uc.ReadOnly(); } if (state == StateEnum.Update) { try { uc.SetChecked(item.GetValue(myInterface).ToString()); } catch { } } flowPanel.Controls.Add(uc); } else if (item.GetCustomAttribute <ComboBoxAttribute>() != null) { ComboBoxControl uc = new ComboBoxControl(); uc.Name = item.Name; uc.SetLabel(item.GetCustomAttributes <DisplayNameAttribute>().FirstOrDefault().DisplayName); uc.FillComboBox(item.GetCustomAttribute <ComboBoxAttribute>().vrijednosti); if (Detalji == "detalji") { uc.ReadOnly(); } if (state == StateEnum.Update) { try { uc.SetComboBox(item.GetValue(myInterface).ToString()); } catch { } } flowPanel.Controls.Add(uc); } //Dodavanje kontrole za TextBox else { InputControl uc = new InputControl(); uc.Name = item.Name; if (uc.Name == "Napomena") { uc.SetValueInTextBox(" "); } uc.SetLabel(item.GetCustomAttributes <DisplayNameAttribute>().FirstOrDefault().DisplayName); if (Detalji == "detalji") { uc.ReadOnly(); } if (state == StateEnum.Update) { try { uc.SetValueInTextBox(item.GetValue(myInterface).ToString()); } catch { } } flowPanel.Controls.Add(uc); } }
private void btnOk_Click(object sender, EventArgs e) { Greske = ""; var properties = myInterface.GetType().GetProperties(); //String za dodavanje imena polja koja su obavezna a nisu popunjena foreach (var item in flowPanel.Controls) { try { string value = ""; if (item.GetType() == typeof(InputControl)) { InputControl input = item as InputControl; value = input.GetValueFromTextBox(); //provjera da li unosimo model vozila koji vec postoji u bazi podataka if (properties[0].Name == "ModelID" && properties[01].Name == "Naziv") { PropertyModelVozila propertyModelVozila = new PropertyModelVozila(); SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, propertyModelVozila.GetSelectQueryZaModelVozila()); if (reader.HasRows) { while (reader.Read()) { if (reader.GetString(0) == value) { DialogResult dr = MetroMessageBox.Show(this, $"\n\nError! Model vec postoji u bazi", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } } } else if (properties[0].Name == "ProizvodjacID" && properties[01].Name == "Naziv") { PropertyProizvodjac propertyModelVozila = new PropertyProizvodjac(); SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.GetConnectionString(), CommandType.Text, propertyModelVozila.GetSelectQueryZaModelVozila()); if (reader.HasRows) { while (reader.Read()) { if (reader.GetString(0) == value) { DialogResult dr = MetroMessageBox.Show(this, $"\n\nError! Model vec postoji u bazi", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } } } } string ImePolja = properties.Where(x => (item as InputControl).Name == x.Name).FirstOrDefault().GetCustomAttribute <DisplayNameAttribute>().DisplayName; if (properties.Where(x => (item as InputControl).Name == x.Name && x.GetCustomAttribute <NotRequiredAttribute>() != null).FirstOrDefault() == null && value == "") { Greske += "Polje \"" + ImePolja + "\" ne smije biti prazno!\n"; continue; } else { if (Regex.IsMatch(value, @"^[0-9]{3}[//]{1}[0-9]{3}[/-]{1}[0-9]{3}$") == false && (item as InputControl).Name == "BrojTelefon") { Greske += "Polje \"" + ImePolja + "\" ne smije da sadrzi slova i znakove osim '-' i '/'!\n"; continue; } else if (Regex.IsMatch(value, @"^[a-zA-Z]+$") == false && ((item as InputControl).Name == "Ime" || (item as InputControl).Name == "Prezime" || (item as InputControl).Name == "Gorivo" || (item as InputControl).Name == "Boja")) { Greske += "Polje \"" + ImePolja + "\" ne smije da sadrzi brojeve i znakove!\n"; continue; } else if (Regex.IsMatch(value, @"^[0-9]{13}$") == false && (item as InputControl).Name == "JMB") { Greske += "Polje \"" + ImePolja + "\" mora da sadrzi samo 13 brojeva!\n"; continue; } else if (Regex.IsMatch(value, @"^[2-5]{1}$") == false && (item as InputControl).Name == "BrojVrata") { Greske += "Polje \"" + ImePolja + "\" mora da sadrzi jednu cifru od 2 do 5!\n"; continue; } else if (Regex.IsMatch(value, @"^[0-9\.]+$") == false && (item as InputControl).Name == "Kilometraza") { Greske += "Polje \"" + ImePolja + "\" ne smije da sadrzi slova i znakove!\n"; continue; } else if ((item as InputControl).Name == "BrojRegistracije" && Regex.IsMatch(value, @"^[A-Z0-9]{3}[\-]{1}[A-Z]{1}[\-]{1}[0-9]{3}$") == false) { Greske += "Polje \"" + ImePolja + "\" nije u pravilnom formatu!\n"; continue; } } PropertyInfo property = properties.Where(x => input.Name == x.Name).FirstOrDefault(); property.SetValue(myInterface, Convert.ChangeType(value, property.PropertyType)); } else if (item.GetType() == typeof(InputDateControl)) { InputDateControl input = item as InputDateControl; value = input.GetValueFromDateBox(); PropertyInfo property = properties.Where(x => input.Name == x.Name).FirstOrDefault(); property.SetValue(myInterface, Convert.ChangeType(value, property.PropertyType)); } else if (item.GetType() == typeof(LookUpControl)) { LookUpControl input = item as LookUpControl; value = input.GetKeyValue(); if (value == "") { Greske += "Polje \"" + (item as LookUpControl).Name + "\" ne smije biti prazno!\n"; continue; } PropertyInfo property = properties.Where(x => input.Name == x.Name).FirstOrDefault(); property.SetValue(myInterface, Convert.ChangeType(value, property.PropertyType)); } else if (item.GetType() == typeof(TwoRadioButtonsControl)) { TwoRadioButtonsControl input = item as TwoRadioButtonsControl; value = input.GetChecked(); PropertyInfo property = properties.Where(x => input.Name == x.Name).FirstOrDefault(); property.SetValue(myInterface, Convert.ChangeType(value, property.PropertyType)); } else if (item.GetType() == typeof(ComboBoxControl)) { ComboBoxControl input = item as ComboBoxControl; value = input.GetText(); PropertyInfo property = properties.Where(x => input.Name == x.Name).FirstOrDefault(); property.SetValue(myInterface, Convert.ChangeType(value, property.PropertyType)); } } catch (Exception) { DialogResult dr = MetroMessageBox.Show(this, "Neocekivana greska!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if (Greske != "") { DialogResult dr = MetroMessageBox.Show(this, Greske, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Provjera poziva Input forme if (state == StateEnum.Create) { DialogResult myResult = MetroMessageBox.Show(this, "Uspjesno ste dodali novi item", "Uspjesno", MessageBoxButtons.OK, MessageBoxIcon.Information); if (myResult == DialogResult.OK) { SqlHelper.ExecuteNonQuery(SqlHelper.GetConnectionString(), CommandType.Text, myInterface.GetInsertQuery(), myInterface.GetInsertParameters().ToArray()); if (myInterface.GetType() == typeof(PropertyVozilo)) { PropertyCijena pomCijena = new PropertyCijena(); SqlHelper.ExecuteNonQuery(SqlHelper.GetConnectionString(), CommandType.Text, pomCijena.GetInsertQuery()); } CRUD.IstorijaCRUD.Istorija(userEmail, StateEnum.Create, myInterface); } } else if (state == StateEnum.Update) { DialogResult myResult = MetroMessageBox.Show(this, "Da li zelite izvrsiti azuriranje ?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (myResult == DialogResult.Yes) { SqlHelper.ExecuteNonQuery(SqlHelper.GetConnectionString(), CommandType.Text, myInterface.GetUpdateQuery(), myInterface.GetUpdateParameters().ToArray()); CRUD.IstorijaCRUD.Istorija(userEmail, StateEnum.Update, myInterface); } } DialogResult = DialogResult.OK; }