/// <summary> /// Atualiza dados simples do profissional /// Email, Telefone fixo/celular e CHN /// </summary> /// <param name="profissional"></param> public void AtualizaProfissionalSimples(ProfissionalCompletoEntidade profissional) { using (var sqlConnection = this.InstanciaConexao()) { // Query string query = @"update tblColaboradoresEmpresaSistema set vcTelefoneCelular = @Celular, vcTelefoneResidencial = @Telefone, bitTelefoneCelularWhatsApp = @wpp where idColaboradorEmpresaSistema = @id"; // Query Multiple sqlConnection.Execute(query, new { id = profissional.ID, Celular = profissional.TelefoneCelular, Telefone = profissional.TelefoneResidencial, wpp = profissional.CelularWpp }); } }
/// <summary> /// Inclui Profissional /// </summary> /// <param name="filtro">ProfissionalCompletoEntidade</param> /// <returns>UsuarioEntidade</returns> public void IncluirProfissional(ProfissionalCompletoEntidade profissional) { int? idColaborador = null; int? idEndereco = null; List <int> Comissoes = new List <int>(); using (var sqlConnection = this.InstanciaConexao()) { using (var trans = sqlConnection.BeginTransaction()) { try { #region Incluir Profissional // Insert Novo Endereco string query = @"INSERT INTO [dbo].[tblEnderecos] ([vcRua] ,[vcNumero] ,[vcComplemento] ,[vcBairro] ,[vcCidade] ,[vcUF] ,[vcCEP] ,[vcPontoDeReferencia] ,[bitPrincipal]) VALUES (@Rua ,@RuaNumero ,@Complemento ,@Bairro ,@Cidade ,@UF ,@Cep ,@PontoReferencia ,@EnderecoPrincipal) select @@identity;"; // Execute idEndereco = trans.Connection.ExecuteScalar <int?>(query, new { Rua = profissional.Rua, RuaNumero = profissional.RuaNumero, Complemento = profissional.Complemento, Bairro = profissional.Bairro, Cidade = profissional.Cidade, UF = profissional.UF, Cep = profissional.Cep, PontoReferencia = profissional.PontoReferencia, EnderecoPrincipal = profissional.EnderecoPrincipal, }, trans); int tipoProfissional = profissional.TipoCNH == TipoCarteira.A ? 1 : 2; // Update tblColaboradoresEmpresaSistema query = @" INSERT INTO [dbo].[tblColaboradoresEmpresaSistema] ([idUsuario] ,[idEndereco] ,[idTipoProfissional] ,[vcNomeCompleto] ,[vcCPFCNPJ] ,[vcDocumentoHabilitacao] ,[vcCategoriaDocumentoHabilitacao] ,[vcTelefoneResidencial] ,[vcTelefoneCelular] ,[bitTelefoneCelularWhatsApp] ,[bitRegimeContratacaoCLT] ,[vcObservacoes] ,[vcEmail] ,[dtDataHoraRegistro] ,[vcRG] ,[vcTipoVeiculos]) VALUES (@IDGestor ,@idEndereco ,@TpProfissional ,@NomeCompleto ,@CPF ,@CNH ,@CategoriaCNH ,@TelefoneResidencial ,@TelefoneCelular ,@WPP ,@CLT ,@Observacao ,@Email, getdate(), @RG, @TipoVeiculos) select @@identity;"; // Execução idColaborador = trans.Connection.ExecuteScalar <int?>(query, new { IDGestor = profissional.IDGestor, idEndereco = idEndereco, TpProfissional = tipoProfissional, NomeCompleto = profissional.NomeCompleto, CPF = profissional.CPF, CNH = profissional.CNH, CategoriaCNH = profissional.TipoCNH, TelefoneResidencial = profissional.TelefoneResidencial, TelefoneCelular = profissional.TelefoneCelular, WPP = profissional.CelularWpp, CLT = profissional.ContratoCLT, Observacao = profissional.Observacao, Email = profissional.Email, RG = profissional.DocumentoRG, TipoVeiculos = profissional.TipoVeiculo }, trans); #endregion #region Incluir Usuario // Commit Profissional trans.Commit(); new UsuarioRepositorio().IncluirUsuario(new BHJet_Repositorio.Entidade.UsuarioEntidade() { bitAtivo = profissional.StatusUsuario, ClienteSelecionado = null, idTipoUsuario = TipoUsuario.Profissional, vcEmail = profissional.Email, vbsPassword = profissional.Senha, ColaboradorSelecionado = idColaborador }); #endregion // Insere comissões using (var sqlConnectionCom = this.InstanciaConexao()) { if (profissional.Comissoes != null && profissional.Comissoes.Any()) { string queryComissao = @"INSERT INTO [dbo].[tblComissaoColaboradorEmpresaSistema] ([idColaboradorEmpresaSistema] ,[decPercentualComissao] ,[dtDataInicioVigencia] ,[dtDataFimVigencia] ,vcObservacoes ,[bitAtivo]) VALUES (@idCol ,@vlComissao ,@dtIni ,@dtFim ,@Obs ,1) select @@identity;"; foreach (var com in profissional.Comissoes) { if (!ValidaComissao(sqlConnectionCom, com, idColaborador)) { var comissao = sqlConnectionCom.ExecuteScalar <int>(queryComissao, new { idCol = idColaborador, vlComissao = com.decPercentualComissao, dtIni = com.dtDataInicioVigencia, dtFim = com.dtDataFimVigencia, Obs = com.vcObservacoes }, trans); Comissoes.Add(comissao); } else { throw new Exception("Você não pode incluir comissões com periodo de vigência já existentes. Favor preencher corretamente."); } } } } } catch (Exception e) { if (trans.Connection != null) { trans.Rollback(); } RoolbackColaborador(idEndereco, idColaborador, Comissoes.ToArray(), profissional.Email); throw e; } } } }
/// <summary> /// Atualiza Profissional /// </summary> /// <param name="filtro">ProfissionalCompletoEntidade</param> /// <returns>UsuarioEntidade</returns> public void AtualizaProfissional(ProfissionalCompletoEntidade profissional) { using (var sqlConnection = this.InstanciaConexao()) { using (var trans = sqlConnection.BeginTransaction()) { try { // Update tblColaboradoresEmpresaSistema string query = @"UPDATE dbo.tblColaboradoresEmpresaSistema SET vcNomeCompleto = @NomeCompleto, vcCPFCNPJ = @CPF, vcDocumentoHabilitacao = @CNH, vcCategoriaDocumentoHabilitacao = @TipoCNH, vcTelefoneResidencial = @TelefoneResidencial, vcTelefoneCelular = @TelefoneCelular, bitTelefoneCelularWhatsApp = @CelularWpp, bitRegimeContratacaoCLT = @TipoContrato, vcObservacoes = @Observacao, vcEmail = @Email, vcRG = @DocumentoRG, vcTipoVeiculos = @TipoVeiculos where idColaboradorEmpresaSistema = @ID"; // Execução trans.Connection.ExecuteScalar(query, new { NomeCompleto = profissional.NomeCompleto, CPF = profissional.CPF, CNH = profissional.CNH, TipoCNH = profissional.TipoCNH, TelefoneResidencial = profissional.TelefoneResidencial, TelefoneCelular = profissional.TelefoneCelular, CelularWpp = profissional.CelularWpp, TipoContrato = (int)profissional.TipoRegime, Observacao = profissional.Observacao, Email = profissional.Email, ID = profissional.ID, DocumentoRG = profissional.DocumentoRG, TipoVeiculos = profissional.TipoVeiculo }, trans); // Insert Novo Endereco query = @"UPDATE [dbo].[tblEnderecos] SET [vcRua] = @Rua ,[vcNumero] = @RuaNumero ,[vcComplemento] = @Complemento ,[vcBairro] = @Bairro ,[vcCidade] = @Cidade ,[vcUF] = @UF ,[vcCEP] = @Cep ,[vcPontoDeReferencia] = @PontoReferencia ,[bitPrincipal] = @EnderecoPrincipal WHERE idEndereco = (select idEndereco from tblColaboradoresEmpresaSistema where idColaboradorEmpresaSistema = @id)" ; // Execute var idEndereco = trans.Connection.Query <int>(query, profissional, trans); // Comissoes string queryComissao = @"UPDATE [dbo].[tblComissaoColaboradorEmpresaSistema] SET [decPercentualComissao] = @decCom ,[dtDataInicioVigencia] = @dtIni ,[dtDataFimVigencia] = @dtFim ,[vcObservacoes] = @Obs WHERE idComissaoColaboradorEmpresaSistema = @id" ; string queryAddComissao = @"INSERT INTO [dbo].[tblComissaoColaboradorEmpresaSistema] ([idColaboradorEmpresaSistema] ,[decPercentualComissao] ,[dtDataInicioVigencia] ,[dtDataFimVigencia] ,vcObservacoes ,[bitAtivo]) VALUES (@id ,@decCom ,@dtIni ,@dtFim ,@Obs ,1) select @@identity;"; string queryRemoveComissao = @"Delete from [dbo].[tblComissaoColaboradorEmpresaSistema] WHERE idColaboradorEmpresaSistema = @idCol"; //not in (@ids) and idColaboradorEmpresaSistema = @idCol"; // Notificacoes a excluir //long?[] notificacoesAntigasMantidas = profissional.Comissoes.Where(x => x.idComissaoColaboradorEmpresaSistema != null).Select(x => x.idComissaoColaboradorEmpresaSistema).ToArray(); trans.Connection.Execute(queryRemoveComissao, new { //ids = string.Join(",", notificacoesAntigasMantidas), idCol = profissional.ID }, trans); // Notificacoes antigas e novas //foreach (var com in profissional.Comissoes) //{ // if (com.dtDataInicioVigencia == null || com.dtDataInicioVigencia == null) // continue; // if (com.idComissaoColaboradorEmpresaSistema != null || ExisteComissao(trans, com.idComissaoColaboradorEmpresaSistema, profissional.ID)) // trans.Connection.Execute(queryComissao, new // { // decCom = com.decPercentualComissao, // dtIni = com.dtDataInicioVigencia, // dtFim = com.dtDataFimVigencia, // Obs = com.vcObservacoes, // id = com.idComissaoColaboradorEmpresaSistema // }, trans); // else trans.Connection.Execute(queryAddComissao, new { decCom = profissional.Comissoes.FirstOrDefault().decPercentualComissao, dtIni = profissional.Comissoes.FirstOrDefault().dtDataInicioVigencia, dtFim = profissional.Comissoes.FirstOrDefault().dtDataFimVigencia, Obs = profissional.Comissoes.FirstOrDefault().vcObservacoes, id = profissional.ID }, trans); //} // Atualiza senha if (!string.IsNullOrWhiteSpace(profissional.Senha)) { string queryUpdateUsuario = @"update tblUsuarios set vbPassword = @pass where idUsuario = (select idUsuario from tblColaboradoresEmpresaSistema where idColaboradorEmpresaSistema = @idCol)"; trans.Connection.Execute(queryUpdateUsuario, new { pass = new UsuarioRepositorio().RetornaSenhaEncriptada(profissional.Senha), idCol = profissional.ID }, trans); } // Atualiza status string queryUpdateStatus = @"update tblUsuarios set bitAtivo = @status, vcEmail = @Email where idUsuario = (select idUsuario from tblColaboradoresEmpresaSistema where idColaboradorEmpresaSistema = @idCol)"; trans.Connection.Execute(queryUpdateStatus, new { status = profissional.StatusUsuario, Email = profissional.Email, idCol = profissional.ID }, trans); // Commit trans.Commit(); } catch (Exception e) { trans.Rollback(); throw e; } } } }