/// <summary> /// Método para validar os processos para excluir um pacote /// </summary> /// <param name="_command">Comando de deleção do pacote</param> /// <returns>Dados salvos ou erros gerados</returns> public ICommandResult Handle(ExcluirPacoteCommand _command) { //1º - Validando se o command recebido é válido _command.Validar(); //Caso seja inválido, recebemos quando são os valores incorretos identificados por ele if (_command.Invalid) { return(new GenericCommandResult(false, "Informe um id correto", _command.Notifications)); } //2º - Verificando se o id do pacote já não pertence a nossa base de dados var _pacoteExistente = _repository.BuscarPacotePorId(_command.IdPacote); //Caso o id não exista, informe ao usuário que o pacote informado não existe if (_pacoteExistente == null) { return(new GenericCommandResult(false, "Pacote não encontrado", _command.Notifications)); } //3º - Excluindo o pacote do banco de dados _repository.ExcluirPacote(_pacoteExistente); //Caso não haja erros, retornamos sucesso return(new GenericCommandResult(true, "Pacote excluido com sucesso", _pacoteExistente)); }
/// <summary> /// Método para validar os processos para alterar um pacote /// </summary> /// <param name="_command">Comando de alteração do pacote</param> /// <returns>Dados salvos ou erros gerados</returns> public ICommandResult Handle(AlterarImagemPacoteCommand _command) { //1º Verificando se a requisição não está inserindo um arquivo if (_command.Arquivo != null) { //Caso um arquivo esteja sendo anexado, enviamos para o método de 'UploadFile' var _imagemArquivo = UploadFile.Local(_command.Arquivo, "Pacotes"); //Atribuindo o caminho de exibição da imagem para o objeto _command.Imagem = _imagemArquivo; } //2º - Validando se o command recebido é válido _command.Validar(); //Caso seja inválido, recebemos quando são os valores incorretos identificados por ele if (_command.Invalid) { return(new GenericCommandResult(false, "Informe os dados corretamente", _command.Notifications)); } //3º - Verificando se o pacote existe no sistema var _pacoteExistente = _repository.BuscarPacotePorId(_command.IdPacote); if (_pacoteExistente == null) { return(new GenericCommandResult(false, "Pacote não encontrado, verifique o código do pacote", _command.Notifications)); } //4º Verificando se o usuário informou uma nova imagem if (_command.Imagem == _pacoteExistente.Imagem) { return(new GenericCommandResult(false, "A imagem não pode ser a mesma, informe uma nova imagem", _command.Imagem)); } //5º - Atribuir ao objeto pacote a alteração dos dados do mesmo _pacoteExistente.AlterarImagemPacote(_command.Imagem); //6º - Verificando se as alterações não contém erros para salvarmos if (_pacoteExistente.Invalid) { return(new GenericCommandResult(false, "Dados inválidos", _pacoteExistente.Notifications)); } //7º - Salvando as alterações no banco de dados _repository.AlterarPacote(_pacoteExistente); //Caso sucesso return(new GenericCommandResult(true, "Imagem alterada com sucesso", _pacoteExistente)); }
/// <summary> /// Método para validar os processos para alterar um pacote /// </summary> /// <param name="_command">Comando de alteração do pacote</param> /// <returns>Dados salvos ou erros gerados</returns> public ICommandResult Handle(AlterarPacoteCommand _command) { //1º - Validando se o command recebido é válido _command.Validar(); //Caso seja inválido, recebemos quando são os valores incorretos identificados por ele if (_command.Invalid) { return(new GenericCommandResult(false, "Informe os dados corretamente", _command.Notifications)); } //2º - Verificando se o pacote existe no sistema var _pacoteExistente = _repository.BuscarPacotePorId(_command.IdPacote); if (_pacoteExistente == null) { return(new GenericCommandResult(false, "Pacote não encontrado, verifique o código do pacote", _command.Notifications)); } //3º - Verificando se o novo titulo não está repetido com os armazenados na base de dados if (_command.Titulo != _pacoteExistente.Titulo) { //Buscando o email no banco de dados var _novoTituloExistente = _repository.BuscarPacotePorTitulo(_command.Titulo); //Verificando se há usuários utilizando o novo email informado if (_novoTituloExistente != null) { return(new GenericCommandResult(false, "Este título já está vinculado a uma pacote, informe outro titulo", _command.Notifications)); } } //4º - Atribuir ao objeto pacote a alteração dos dados do mesmo _pacoteExistente.AlterarPacote(_command.Titulo, _command.Descricao); //5º - Verificando se as alterações não contém erros para salvarmos if (_pacoteExistente.Invalid) { return(new GenericCommandResult(false, "Dados do pacote inválido", _command.Notifications)); } //6º - Salvamos as alterações no banco de dados _repository.AlterarPacote(_pacoteExistente); //Caso não haja erros, restornamos sucesso e o novo objeto return(new GenericCommandResult(true, "Pacote alterado", _pacoteExistente)); }
/// <summary> /// Método para validar os processos para alterar um pacote /// </summary> /// <param name="_command">Comando de alteração do pacote</param> /// <returns>Dados salvos ou erros gerados</returns> public ICommandResult Handle(AlterarStatusPacoteCommand _command) { //1º - Validando se o command recebido é válido _command.Validar(); //Caso seja inválido, recebemos quando são os valores incorretos identificados por ele if (_command.Invalid) { return(new GenericCommandResult(false, "Informe os dados corretamente", _command.Notifications)); } //2º - Verificando se o pacote existe no sistema var _pacoteExistente = _repository.BuscarPacotePorId(_command.IdPacote); if (_pacoteExistente == null) { return(new GenericCommandResult(false, "Pacote não encontrado, verifique o código do pacote", _command.Notifications)); } if (_command.Status == _pacoteExistente.Ativo) { return(new GenericCommandResult(true, "Este status já está definido.", _command.Notifications)); } _pacoteExistente.AlterarStatus(_command.Status); if (_pacoteExistente.Invalid) { return(new GenericCommandResult(false, "Dados inválidos", _pacoteExistente.Notifications)); } //Salvar alteração no banco _repository.AlterarPacote(_pacoteExistente); return(new GenericCommandResult(true, "Status de pacote alterado", _pacoteExistente)); }
/// <summary> /// Método para validar os processos para buscar os pacotes /// </summary> /// <param name="_query">Query de busca de pacotes</param> /// <returns>Dados salvos ou erros gerados</returns> public IQueryResult Handle(BuscarPacoteQuery _query) { //1º - Validando se a query recebida é válida _query.Validar(); //2º - Verificando se o parametro de busca não é por titulo if (_query.ParametroBuscaTitulo != null) { //Caso a query seja inválida, retornamos a mensagem de erro if (_query.Invalid) { return(new GenericQueryResult(false, "Dados inválidos", _query.Notifications)); } //3º - Verificando se o email de usuário não existe no banco de dados var _pacoteProcurado = _repository.BuscarPacotePorTitulo(_query.ParametroBuscaTitulo); //Caso o usuário não exista, retornamos a mensagem de erro if (_pacoteProcurado == null) { return(new GenericQueryResult(false, "Pacote não encontrado, verifique que os dados informados", _query.ParametroBuscaTitulo)); } //4º - Enviando a resposta da query para o nosso BuscarPacoteQuery para filtrar os dados do nosso pacote var _pacoteResultTitulo = new BuscarPacoteResult() { Id = _pacoteProcurado.Id, Titulo = _pacoteProcurado.Titulo, Descricao = _pacoteProcurado.Descricao, Imagem = _pacoteProcurado.Imagem, DataCriacao = _pacoteProcurado.DataCriacao, QuantidadeComentarios = _pacoteProcurado.Comentarios != null?_pacoteProcurado.Comentarios.Count() : 0, Comentarios = _pacoteProcurado.Comentarios != null?_pacoteProcurado.Comentarios.ToList() : null }; //Retornando o objeto pacote filtrado return(new GenericQueryResult(true, "Dados do pacote", _pacoteResultTitulo)); } //3º - Buscando na nossa base de dados o objeto usuário por meio do Id var _pacote = _repository.BuscarPacotePorId(_query.ParametroBuscaId); //Caso o usuário não exista, retornamos a mensagem de erro if (_pacote == null) { return(new GenericQueryResult(false, "Pacote não encontrado, verifique que os dados informados", _query.ParametroBuscaId)); } //4º - Enviando a resposta da query para o nosso BuscarPacoteQuery para filtrar os dados do nosso pacote var _pacoteResult = new BuscarPacoteResult() { Id = _pacote.Id, Titulo = _pacote.Titulo, Descricao = _pacote.Descricao, Imagem = _pacote.Imagem, DataCriacao = _pacote.DataCriacao, QuantidadeComentarios = _pacote.Comentarios != null?_pacote.Comentarios.Count() : 0, Comentarios = _pacote.Comentarios != null?_pacote.Comentarios.ToList() : null }; //Retornando o objeto pacote filtrado return(new GenericQueryResult(true, "Dados do pacote", _pacoteResult)); }