/// <summary> /// Inclui o histórico e a alteração no saldo das moedas do usuárioTrilha, itemTrilha se for solução sebrae e ou itemTrilhaCurtida se for uma curtida. /// </summary> /// <param name="usuarioTrilha"></param> /// <param name="itemTrilha"></param> /// <param name="itemTrilhaCurtida"></param> /// <param name="quantidadePrata"></param> /// <param name="quantidadeOuro"></param> /// <param name="tipoCurtidaAnterior"></param> public Dictionary <string, int> Incluir(UsuarioTrilha usuarioTrilha, ItemTrilha itemTrilha = null, ItemTrilhaCurtida itemTrilhaCurtida = null, int quantidadePrata = 0, int quantidadeOuro = 0, enumTipoCurtida tipoCurtidaAnterior = enumTipoCurtida.SemAcao) { VerificarRegrasNegocio(usuarioTrilha, itemTrilha, itemTrilhaCurtida, quantidadePrata, quantidadeOuro); var usuarioTrilhaMoedas = new UsuarioTrilhaMoedas() { TipoCurtida = itemTrilhaCurtida != null ? itemTrilhaCurtida.TipoCurtida : enumTipoCurtida.SemAcao, Curtida = itemTrilhaCurtida, ItemTrilha = itemTrilha, UsuarioTrilha = usuarioTrilha, MoedasDePrata = quantidadePrata, MoedasDeOuro = quantidadeOuro, DataCriacao = DateTime.Now, Auditoria = new Auditoria(usuarioTrilha.Usuario.CPF) }; if (itemTrilhaCurtida != null) { usuarioTrilhaMoedas.MoedasDePrata = CalcularCurtida(itemTrilhaCurtida, tipoCurtidaAnterior); } if (!this.IsCreditoDuplicado(usuarioTrilhaMoedas)) { _bmUsuarioTrilhaMoedas.Salvar(usuarioTrilhaMoedas); } return(new Dictionary <string, int>() { { "Ouro", Obter(usuarioTrilha, enumTipoMoeda.Ouro) }, { "Prata", Obter(usuarioTrilha, enumTipoMoeda.Prata) } }); }
/// <summary> /// Validação das informações de um Item de uma Trilha. /// </summary> /// <param name="pItemTrilha"></param> private void ValidarInformado(ItemTrilhaCurtida pItemTrilhaCurtida) { ValidarInstancia(pItemTrilhaCurtida); //Verifica se o item da trilha está nulo if (pItemTrilhaCurtida.ItemTrilha == null) { throw new AcademicoException("Item da Trilha. Campo Obrigatório"); } //Verifica se o usuario da trilha está nulo if (pItemTrilhaCurtida.UsuarioTrilha == null) { throw new AcademicoException("Usuario da Trilha. Campo Obrigatório"); } //Verifica se o valor da curtida está vazio if (pItemTrilhaCurtida.ValorCurtida == 0) { throw new AcademicoException("Valor da Curtida. Campo Obrigatório"); } //Verifica se o valor da curtida está vazio if (pItemTrilhaCurtida.ValorDescurtida == 0) { throw new AcademicoException("Valor da Descurtida. Campo Obrigatório"); } }
public void Salvar(ItemTrilhaCurtida pItemTrilhaCurtida) { ValidarInformado(pItemTrilhaCurtida); //Se Id =0, significa insert. if (pItemTrilhaCurtida.ID == 0) { pItemTrilhaCurtida.DataCriacao = DateTime.Now; } repositorio.Salvar(pItemTrilhaCurtida); }
public void Excluir(int pId) { try { ItemTrilhaCurtida itemTrilhaCurtida = Obter(pId); bmItemTrilhaCurtida.Excluir(itemTrilhaCurtida); } catch (AcademicoException ex) { throw ex; } }
/// <summary> /// Calcula o peso da curtida/descurtida/cancelamento que a ação atual gerou. /// </summary> /// <param name="itemTrilhaCurtida"></param> /// <param name="tipoCurtidaAnterior"></param> /// <returns></returns> public int CalcularCurtida(ItemTrilhaCurtida itemTrilhaCurtida, enumTipoCurtida tipoCurtidaAnterior = enumTipoCurtida.SemAcao) { if (itemTrilhaCurtida == null) { return(0); } int quantidadePrata = 0; switch (tipoCurtidaAnterior) { case enumTipoCurtida.SemAcao: if (itemTrilhaCurtida.TipoCurtida == enumTipoCurtida.Curtiu) { quantidadePrata += itemTrilhaCurtida.ValorCurtida; } else if (itemTrilhaCurtida.TipoCurtida == enumTipoCurtida.Descurtiu) { quantidadePrata -= itemTrilhaCurtida.ValorDescurtida; } break; case enumTipoCurtida.Curtiu: // Removo a curtida porque ele só pode ir para sem ação ou descurtida quantidadePrata -= itemTrilhaCurtida.ValorCurtida; // Caso ele vá para descurtida, removo mais o valor da descurtida if (itemTrilhaCurtida.TipoCurtida == enumTipoCurtida.Descurtiu) { quantidadePrata -= itemTrilhaCurtida.ValorDescurtida; } break; case enumTipoCurtida.Descurtiu: // Removo a descurtida porque ele só pode ir para sem ação ou curtida quantidadePrata += itemTrilhaCurtida.ValorDescurtida; // Caso ele vá para descurtida, removo mais o valor da descurtida if (itemTrilhaCurtida.TipoCurtida == enumTipoCurtida.Curtiu) { quantidadePrata += itemTrilhaCurtida.ValorCurtida; } break; } return(quantidadePrata); }
/// <summary> /// Faz as verificações de regra de negócio para inserção e alteração de moedas /// </summary> /// <param name="itemTrilha"></param> /// <param name="itemTrilhaCurtida"></param> /// <param name="quantidadePrata"></param> /// <param name="quantidadeOuro"></param> public void VerificarRegrasNegocio(UsuarioTrilha usuarioTrilha, ItemTrilha itemTrilha = null, ItemTrilhaCurtida itemTrilhaCurtida = null, int quantidadePrata = 0, int quantidadeOuro = 0) { if (itemTrilha != null && itemTrilhaCurtida != null) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir variações ao mesmo tempo no histórico de moedas."); } if (quantidadeOuro > 0 && quantidadePrata > 0) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de prata e ouro ao mesmo tempo, a troca só é válida ao remover prata e adicionar ouro."); } if (itemTrilha != null && quantidadePrata != 0) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de prata ao completar uma solução sebrae."); } if (itemTrilhaCurtida != null && quantidadeOuro != 0) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível incluir moedas de ouro ao curtir uma solução do trilheiro."); } if (quantidadeOuro < 0) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Não é possível retirar moedas de ouro."); } if (quantidadeOuro > 0 && quantidadePrata < 0 && Obter(usuarioTrilha, enumTipoMoeda.Prata) < 0) { throw new ResponseException(enumResponseStatusCode.ErroRegraNegocioTrilhas, "Usuário não possuí moedas de prata suficientes para realizar a troca."); } }
public void Excluir(ItemTrilhaCurtida pItemTrilhaCurtida) { this.ValidarInstancia(pItemTrilhaCurtida); repositorio.Excluir(pItemTrilhaCurtida); }
public void Alterar(ItemTrilhaCurtida pItemTrilhaCurtida) { base.PreencherInformacoesDeAuditoria(pItemTrilhaCurtida); Incluir(pItemTrilhaCurtida); }
public void Incluir(ItemTrilhaCurtida pItemTrilhaCurtida) { bmItemTrilhaCurtida.Salvar(pItemTrilhaCurtida); }
/// <summary> /// Obtem todo o histórico de acordo com as curtidas /// </summary> /// <param name="pItemTrilhaCurtida"></param> /// <returns></returns> public IQueryable <UsuarioTrilhaMoedas> ObterTodos(ItemTrilhaCurtida pItemTrilhaCurtida) { return(repositorio.ObterTodosIQueryable().Where(x => x.Curtida.ID == pItemTrilhaCurtida.ID)); }