/// <summary> /// Método para salvar a unidade de medida /// </summary> /// <param name="UnidadeMedidas">Objeto com os dados da unidade de medida</param> /// <returns>Contrato.RetornoUnidadeMedida</returns> internal static Contrato.RetornoUnidadeMedida SalvarUnidadeMedida(Contrato.EntradaUnidadeMedida entradaUnidadeMedida) { // Objeto que recebe o retorno do método Contrato.RetornoUnidadeMedida retUnidadeMedida = new Contrato.RetornoUnidadeMedida(); // Verifica se as informações do unidademedida foram informadas string strValidacao = ValidarUnidadeMedidaPreenchido(entradaUnidadeMedida.UnidadeMedida); // Objeto que recebe o retorno da sessão Contrato.RetornoSessao retSessao = Negocio.Sessao.ValidarSessao(new Contrato.Sessao() { Login = entradaUnidadeMedida.UsuarioLogado, Chave = entradaUnidadeMedida.Chave }); // Verifica se o usuário está autenticado if (retSessao.Codigo == Contrato.Constantes.COD_RETORNO_SUCESSO) { // Se existe algum erro if (strValidacao.Length > 0) { retUnidadeMedida.Codigo = Contrato.Constantes.COD_FILTRO_VAZIO; retUnidadeMedida.Mensagem = strValidacao; } else { // Loga no banco de dados Dados.BRASIL_DIDATICOS context = new Dados.BRASIL_DIDATICOS(); // Busca o unidademedida no banco List<Dados.UNIDADE_MEDIDA> lstUnidadeMedidas = (from um in context.T_UNIDADE_MEDIDA where (um.COD_UNIDADE_MEDIDA == entradaUnidadeMedida.UnidadeMedida.Codigo && (entradaUnidadeMedida.EmpresaLogada.Id == Guid.Empty || um.ID_EMPRESA == entradaUnidadeMedida.EmpresaLogada.Id)) || (entradaUnidadeMedida.Novo == null && entradaUnidadeMedida.UnidadeMedida.Id == um.ID_UNIDADE_MEDIDA) select um).ToList(); // Verifica se foi encontrado algum registro if (lstUnidadeMedidas.Count > 0 && entradaUnidadeMedida.Novo != null && (bool)entradaUnidadeMedida.Novo) { // Preenche o objeto de retorno retUnidadeMedida.Codigo = Contrato.Constantes.COD_REGISTRO_DUPLICADO; retUnidadeMedida.Mensagem = string.Format("A unidade de medida de código '{0}' já existe!", lstUnidadeMedidas.First().COD_UNIDADE_MEDIDA); } else { // Se existe o unidademedida if (lstUnidadeMedidas.Count > 0) { // Atualiza o unidademedida lstUnidadeMedidas.First().NOME_UNIDADE_MEDIDA = entradaUnidadeMedida.UnidadeMedida.Nome; lstUnidadeMedidas.First().DES_UNIDADE_MEDIDA = entradaUnidadeMedida.UnidadeMedida.Descricao; lstUnidadeMedidas.First().BOL_ATIVO = entradaUnidadeMedida.UnidadeMedida.Ativo; lstUnidadeMedidas.First().DATA_ATUALIZACAO = DateTime.Now; lstUnidadeMedidas.First().LOGIN_USUARIO = entradaUnidadeMedida.UsuarioLogado; } else { // Cria o unidademedida Dados.UNIDADE_MEDIDA tUnidadeMedida = new Dados.UNIDADE_MEDIDA(); tUnidadeMedida.ID_UNIDADE_MEDIDA = Guid.NewGuid(); tUnidadeMedida.COD_UNIDADE_MEDIDA = entradaUnidadeMedida.UnidadeMedida.Codigo; tUnidadeMedida.NOME_UNIDADE_MEDIDA = entradaUnidadeMedida.UnidadeMedida.Nome; tUnidadeMedida.DES_UNIDADE_MEDIDA = entradaUnidadeMedida.UnidadeMedida.Descricao; tUnidadeMedida.ID_EMPRESA = entradaUnidadeMedida.EmpresaLogada.Id; tUnidadeMedida.BOL_ATIVO = entradaUnidadeMedida.UnidadeMedida.Ativo; tUnidadeMedida.DATA_ATUALIZACAO = DateTime.Now; tUnidadeMedida.LOGIN_USUARIO = entradaUnidadeMedida.UsuarioLogado; context.AddToT_UNIDADE_MEDIDA(tUnidadeMedida); } // Salva as alterações context.SaveChanges(); // Preenche o objeto de retorno retUnidadeMedida.Codigo = Contrato.Constantes.COD_RETORNO_SUCESSO; } } } else { // retorna quando o usuário não está autenticado retUnidadeMedida.Codigo = retSessao.Codigo; retUnidadeMedida.Mensagem = retSessao.Mensagem; } // retorna dos dados return retUnidadeMedida; }