// Osvježavanje svojstava stavke. Ovo bi se inaèe trebalo raditi u poslovnom // objektu stavke ali to u ovom primjeru nije moguæe zbog jednostavnijeg dizajna frameworka private void stavkaDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex == -1) { return; } if (e.ColumnIndex == 0 || e.ColumnIndex == 1) { try { // Šifra object sifArtikla = stavkaDataGridView[e.ColumnIndex, e.RowIndex].Value; if (sifArtikla != null) { Artikl a = artiklBll.Fetch((int)sifArtikla); if (a != null) { Stavka s = stavkaBindingSource.Current as Stavka; s.JedCijArtikla = a.CijArtikla; s.JedMjereArtikla = a.JedMjere; } } } catch (InvalidCastException) { // Nije unesena ispravna vrijednost. Zanemari. Validacija æe to uloviti. } } }
private Artikl Fetch(object sifArtikla, object nazArtikla) { using (SqlConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)) { using (SqlCommand cmd = db.CreateCommand()) { cmd.CommandText = "[dbo].[ap_Artikl_R]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@SifArtikla", sifArtikla != null ? sifArtikla : DBNull.Value)); cmd.Parameters.Add(new SqlParameter("@NazArtikla", nazArtikla != null ? nazArtikla : DBNull.Value)); db.Open(); using (SqlDataReader dr = cmd.ExecuteReader()) { if (dr != null && dr.Read()) { return(Artikl.CreateNew(dr)); } else { return(null); } } } } }
// Stvara novi objekt èitanjem iz podataka baze public static Artikl CreateNew(IDataReader dr) { Artikl rez = new Artikl(); rez.Load(dr); return(rez); }
// Obavlja DELETE private void Delete(Artikl item, SqlCommand cmd) { cmd.CommandText = "[dbo].[ap_Artikl_D]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@SifArtikla", SqlDbType.Int)).Value = item.SifArtikla.HasValue ? (object)item.SifArtikla.Value : DBNull.Value; cmd.ExecuteNonQuery(); }
// Validacija svih svojstava poslovnog objekta public void Validate(Artikl target) { Validate(target, "SifArtikla"); Validate(target, "NazArtikla"); Validate(target, "JedMjere"); Validate(target, "CijArtikla"); Validate(target, "ZastUsluga"); Validate(target, "SlikaArtikla"); }
// Vraæanje originalnih vrijednosti (poništenje izmjena) protected override void DoRestore(object backupObject) { Artikl bak = (Artikl)backupObject; sifArtikla = bak.sifArtikla; nazArtikla = bak.nazArtikla; jedMjere = bak.jedMjere; cijArtikla = bak.cijArtikla; zastUsluga = bak.zastUsluga; slikaArtikla = bak.slikaArtikla; }
// Pohrana originalnih vrijednosti kako bi se mogao napraviti // poništenje unosa protected override void DoBackup(object backupObject) { Artikl bak = (Artikl)backupObject; bak.sifArtikla = sifArtikla; bak.nazArtikla = nazArtikla; bak.jedMjere = jedMjere; bak.cijArtikla = cijArtikla; bak.zastUsluga = zastUsluga; bak.slikaArtikla = slikaArtikla; }
// Osvježavanje unosa i pridruživanje metode za BLL objekt poslovnom objektu private void artiklBindingSource_CurrentChanged(object sender, EventArgs e) { // as za razliku od obiène pretvorbe tipa neæe puknuti s InvalidCastException // ako tip nije ispravan nego æe vratiti null. Artikl a = artiklBindingSource.Current as Artikl; // Ako se radi o novom poslovnom objektu // koji još ne zna gdje mu je BLL objekt... ažuriraj. if (a != null && !a.HasBllObject) { a.NeedBllObject += new NeedBllObjectEventHandler(Artikl_NeedBllObject); } }
// Obavlja UPDATE private void Update(Artikl item, SqlCommand cmd) { cmd.CommandText = "[dbo].[ap_Artikl_U]"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@SifArtikla", SqlDbType.Int)).Value = item.SifArtikla.HasValue ? (object)item.SifArtikla.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@NazArtikla", SqlDbType.NVarChar)).Value = !string.IsNullOrEmpty(item.NazArtikla) ? (object)item.NazArtikla : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@JedMjere", SqlDbType.NVarChar)).Value = !string.IsNullOrEmpty(item.JedMjere) ? (object)item.JedMjere : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@CijArtikla", SqlDbType.Decimal)).Value = item.CijArtikla.HasValue ? (object)item.CijArtikla.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@ZastUsluga", SqlDbType.Bit)).Value = item.ZastUsluga.HasValue ? (object)item.ZastUsluga.Value : DBNull.Value; cmd.Parameters.Add(new SqlParameter("@SlikaArtikla", SqlDbType.VarBinary)).Value = item.SlikaArtikla != null ? (object)item.SlikaArtikla : DBNull.Value; cmd.ExecuteNonQuery(); }
protected void GridViewArtikli_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { //dohvati cijenu artikla Firma.Artikl artikl = (Firma.Artikl)e.Row.DataItem; decimal? cijena = artikl.CijArtikla; //cijena je èetvrta po redu TableCell cell = e.Row.Cells[POZICIJA_CIJENE]; if (cijena < GRANICA_NISKE_CIJENE) { cell.ForeColor = BOJA_NISKIH; } else if (cijena < GRANICA_VISOKE_CIJENE) { cell.ForeColor = BOJA_VISOKIH; } else { cell.ForeColor = BOJA_OSTALIH; } } }
// Validacija svih svojstava poslovnog objekta public void Validate(Artikl target) { Validate(target, "JedCijArtikla"); Validate(target, "KolArtikla"); Validate(target, "PostoRabat"); }
// Validacija pojedinog svojstva poslovnog objekta. // Ukoliko poslovno pravilo nije zadovoljeno, metoda baca iznimku. public void Validate(object businessObject, string propertyName) { Artikl target = (Artikl)businessObject; switch (propertyName) { case "SifArtikla": { if (!target.SifArtikla.HasValue) { throw new Exception("Šifra artikla je obavezno polje!"); } if (target.State == BusinessObjectState.New) { Artikl a = Fetch(target.SifArtikla.Value); if (a != null) { throw new Exception(string.Format("Artikl {0} veæ postoji.", a.SifArtikla.Value)); } } break; } case "NazArtikla": { if (string.IsNullOrEmpty(target.NazArtikla)) { throw new Exception("Naziv artikla je obavezno polje!"); } if (target.State == BusinessObjectState.New || (!string.IsNullOrEmpty(target.NazArtiklaOriginal) && !target.NazArtikla.Equals(target.NazArtiklaOriginal))) { Artikl a = Fetch(target.NazArtikla.Trim()); if (a != null) { throw new Exception(string.Format("Artikl '{0}' veæ postoji!", a.SifArtikla.Value)); } } if (target.NazArtikla.Length > 255) { throw new Exception(string.Format("Maksimalna duljina naziva je {0}.", 255)); } break; } case "JedMjere": { if (string.IsNullOrEmpty(target.JedMjere)) { throw new Exception("Jedinica mjere je obavezno polje!"); } if (target.NazArtikla.Length > 255) { throw new Exception(string.Format("Maksimalna duljina je {0}.", 255)); } break; } case "CijArtikla": { if (!target.CijArtikla.HasValue || target.CijArtikla.Value <= 0) { throw new Exception("Cijena mora biti veæa od 0!"); } break; } default: break; } }
protected override void Zoom() { if (InEditMode) { if (idPartneraComboBox.Focused) { PartnerForm f = new PartnerForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih partnera partnerInfoBindingSource.DataSource = partnerBll.FetchAll(); Partner p = (Partner)f.Selected; (dokumentBindingSource.Current as Dokument).IdPartnera = p.IdPartnera; } } else if (idPrethDokumentaComboBox.Focused) { DokumentForm f = new DokumentForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih dokumenata prethDokumentBindingSource.DataSource = dokumentBll.FetchAll(); Dokument d = (Dokument)f.Selected; (dokumentBindingSource.Current as Dokument).IdPrethDokumenta = d.IdDokumenta; } } else if (stavkaDataGridView.SelectedCells.Count == 1 && stavkaDataGridView.SelectedCells[0].ColumnIndex == 0 || stavkaDataGridView.SelectedCells[0].ColumnIndex == 1) { ArtiklForm f = new ArtiklForm(); f.StartPosition = FormStartPosition.CenterScreen; if (f.ShowDialog() == DialogResult.OK) { // Potrebno zbog bindinga na lookup u sluèaju novounesenih artikala artiklBindingSource.DataSource = artiklBll.FetchAll(); Artikl a = (Artikl)f.Selected; Stavka s = null; if (stavkaDataGridView.Rows[stavkaDataGridView.SelectedCells[0].RowIndex].IsNewRow) { stavkaBindingSource.CancelEdit(); Dokument dok = (Dokument)dokumentBindingSource.Current; s = new Stavka(); dok.Stavke.Add(s); } else { s = (Stavka)stavkaBindingSource.Current; } s.SifArtikla = a.SifArtikla; s.NazArtikla = a.NazArtikla; s.JedMjereArtikla = a.JedMjere; s.JedCijArtikla = a.CijArtikla; } } StatusBar.RefreshStatusBar(); } }