///<summary> ///Criando um método para gravar Projeto e relacionamento ///com funcionarios do mesmo projeto ///</summary> public void Cadastrar(EntidadeProjeto p, List <Funcionario> funcionarios) { int contadorDeGerente = 0; FuncionarioRepositorio repFuncionario = new FuncionarioRepositorio(); foreach (Funcionario f in funcionarios) { if (repFuncionario.HastFuncaoGerente(f.IdFuncionario) != 0) { contadorDeGerente++; } } if (contadorDeGerente != 0) { //relacionamento do Projeto com os Funcionarios.. p.Funcionarios = funcionarios; //gravar no banco de dados.. ProjetoRepositorio repProjeto = new ProjetoRepositorio(); repProjeto.Insert(p); } else { throw new Exception("O Projeto deve conter pelo menos 1 Gerente."); } }
protected void BtnCadastro_Click(object sender, EventArgs e) { //método executado quando o botão for clicado... try { List <Funcionario> listaFuncionarios = new List <Funcionario>(); //percorrer as linhas do gridView foreach (GridViewRow linha in GridFuncionario.Rows) { //Buscar o checkBox contido na linha do grid CheckBox chkFuncionario = linha.FindControl("chkFuncionario") as CheckBox; //Verificar se o checkBox esta marcado.. if (chkFuncionario.Checked) { //capturar a label que contem o id do funcionario.. Label lblCodigo = linha.FindControl("lblCodigo") as Label; //criando um novo funcionario.. Funcionario f = new Funcionario(); f.IdFuncionario = int.Parse(lblCodigo.Text); //adicionar na lista.. listaFuncionarios.Add(f); } } //gravar o projeto EntidadeProjeto p = new EntidadeProjeto(); p.NomeProjeto = txtNomeProjeto.Text; p.DataInicio = DateTime.Parse(txtDataInicio.Text); p.DataFim = DateTime.Parse(txtDataFim.Text); ProjetoBusiness business = new ProjetoBusiness(); business.Cadastrar(p, listaFuncionarios); //mensagem de sucesso.. lblMensagem.Text = "Projeto " + p.NomeProjeto + " , cadastrado com sucesso."; LimparCampos(); } catch (Exception ex) { //imprimir mensagem de erro lblMensagem.Text = ex.Message; } }
/// <summary> /// Método para inserir um projeto na base de dados... /// </summary> /// <param name="p">O objeto</param> public void Insert(EntidadeProjeto p) { OpenConnection(); try { tr = con.BeginTransaction(); //abrindo transação... string queryProjeto = " INSERT INTO Projeto(NomeProjeto, DateInicio, DateFim) " + " VALUES(@NomeProjeto, @DataInicio, @DataFim) " + " SELECT SCOPE_IDENTITY() "; cmd = new SqlCommand(queryProjeto, con, tr); cmd.Parameters.AddWithValue("@NomeProjeto", p.NomeProjeto); cmd.Parameters.AddWithValue("@DataInicio", p.DataInicio); cmd.Parameters.AddWithValue("@DataFim", p.DataFim); p.IdProjeto = Convert.ToInt32(cmd.ExecuteScalar()); string queryProjetoFuncionario = " INSERT INTO ProjetoFuncionario(IdProjeto, IdFuncionario) " + " VALUES(@IdProjeto, @IdFuncionario) "; //varrer os funcionarios contidos no projeto.. foreach (Funcionario f in p.Funcionarios) { cmd = new SqlCommand(queryProjetoFuncionario, con, tr); cmd.Parameters.AddWithValue("@IdProjeto", p.IdProjeto); cmd.Parameters.AddWithValue("@IdFuncionario", f.IdFuncionario); cmd.ExecuteNonQuery(); } tr.Commit(); //executa a finaliza a transação... } catch (Exception e) { tr.Rollback(); //Desfazendo a transação throw new Exception(e.Message); //retorna o erro } CloseConnection(); }