public ICommandResult Handle(AdicionarCentroCustoCommand command) { // Fail Fast Validations command.Validar(); if (command.Invalid) { AddNotifications(command); return(new CommandResult(false, "Não foi possível adicionar a empresa")); } //Validar Empresa var empresa = _empresaRepository.Buscar(e => e.CodEmpresa == command.CodEmpresa && e.IdSituacao == (int)ESituacao.Ativo).FirstOrDefault(); if (empresa == null) { AddNotification("Cod Empresa", "O Código de Empresa informado não existe ou Empresa não está ativa"); return(new CommandResult(false, "Não foi possível adicionar o registro")); } //Validar Grupo var grupo = _grupoRepository.Buscar(g => g.Codigo == command.CodGrupo).FirstOrDefault(); if (grupo == null) { AddNotification("Cod Grupo", "O Código de Grupo informado não existe"); return(new CommandResult(false, "Não foi possível adicionar o registro")); } //Validar Classe var classe = _classeContabilRepository.Buscar(c => c.Codigo == command.CodClasse).FirstOrDefault(); if (classe == null) { AddNotification("Cod Classe", "O Código de Classe informado não existe"); return(new CommandResult(false, "Não foi possível adicionar o registro")); } //Validar TipoBloqueio var tipoBloqueio = _tipoBloqueioRepository.Buscar(t => t.Codigo == command.CodTipoBloqueio).FirstOrDefault(); if (tipoBloqueio == null) { AddNotification("Tipo Bloqueio", "O Tipo de Bloqueio informado não existe"); return(new CommandResult(false, "Não foi possível adicionar o registro")); } //Validar Centro de Custo var centroCusto = _centroCustoRepository.Buscar(c => c.CodEmpresa == command.CodEmpresa && c.CodCentroCusto == command.CodCentroCusto).FirstOrDefault(); if (centroCusto != null) { AddNotification("Duplicidade", "O registro já esta cadastrado na base"); return(new CommandResult(false, "Não foi possível adicionar o registro")); } //Gerar as Entidades var centroCustoModel = new CentroCusto(command.CodEmpresa, command.CodCentroCusto, command.NomeCentroCusto, command.CodGrupo, command.CodClasse, command.CodTipoBloqueio); //Auditoria var auditoria = new LogAuditoria("Cadastro", centroCustoModel.GetType().Name, EAcao.Adicionar, centroCustoModel.GetType().Namespace, JsonConvert.SerializeObject(command), UserIdLogado); // Relacionamentos (Se houver) // Agrupar as Validações AddNotifications(centroCustoModel); // Checar as notificações if (Invalid) { return(new CommandResult(false, "Não foi possível realizar esta operação")); } // Salvar as Informações _centroCustoRepository.Adicionar(centroCustoModel); _logAuditoriaRepository.Adicionar(auditoria); // Enviar E-mail de boas vindas (Se houver necessidade) // Retornar informações return(new CommandResult(true, "Operação realizada com sucesso")); }
public List <CentroCusto> ObterTodosAtivos() { var result = _centroCustoRepository.Buscar(x => x.Delete.HasValue && !x.Delete.Value); return(result.ToList()); }