public List<TabHistorico> RankingExemplares() { List<TabHistorico> exRank = new List<TabHistorico>(); var teste = (from p in db.TabHistorico where p.dsStatus == 5 group p by p.fkIdExemplar into g select new { fkIdExemplar = g.Key, Quantidade = g.Count() } ).OrderByDescending(c => c.Quantidade); var count = 1; foreach (var registro in teste) { TabHistorico exemplar = new TabHistorico(); TabExemplar tbex = new TabExemplar(); TabTitulo tbTit = new TabTitulo(); tbex = db.TabExemplar.Where(model => model.idExemplar == registro.fkIdExemplar).FirstOrDefault(); tbTit = db.TabTitulo.Where(model => model.idTitulo == tbex.fkIdTitulo).FirstOrDefault(); tbex.TabTitulo = tbTit; exemplar.idHistorico = count; count++; exemplar.fkIdExemplar = registro.fkIdExemplar; exemplar.dsStatus = registro.Quantidade; exemplar.TabExemplar = tbex; exRank.Add(exemplar); } return exRank; }
public Tuple<bool, string> Doar(string email, string login, int idExemplar, int idDoador) { var receptor = db.TabLeitor.Where(model => model.dsLogin.ToLower() == login.ToLower() && model.dsEmail.ToLower() == email.ToLower()).FirstOrDefault(); var doador = db.TabLeitor.Where(model => model.idLeitor == idDoador).FirstOrDefault(); var exemplar = db.TabExemplar.Where(model => model.idExemplar == idExemplar).FirstOrDefault(); //Verifica se o leitor digitou um login ou email desconhecidos ou de um leitor que está inativo if (receptor == null || receptor.dsStatus == (int)EnumStatusLeitor.INATIVO) { return new Tuple<bool, string>(false, "Leitor não encontrado"); } if (receptor.dsLogin.Equals(doador.dsLogin) && receptor.dsEmail.Equals(doador.dsEmail)) { return new Tuple<bool, string>(false, "Não é possível doar para si mesmo"); } TabHistorico historico = new TabHistorico() { fkIdExemplar = idExemplar, fkIdLeitor = idDoador, fkIdReceptor = receptor.idLeitor, dtHistorico = DateTime.Now, dsStatus = (int)EnumStatusHistorico.PENDENTE }; exemplar.dsStatus = (int)StatusRegistroExemplar.INDISPONIVEL; db.TabHistorico.Add(historico); db.SaveChanges(); return new Tuple<bool, string>(true, "Notificação enviada com sucesso"); }
public List<TabHistorico> RankingLeitores(long idLeitor) { List<TabHistorico> ltrRank = new List<TabHistorico>(); var teste = (from p in db.TabHistorico where p.dsStatus == 3 group p by p.fkIdLeitor into g select new { fkIdLeitor = g.Key, Quantidade = g.Count() } ).OrderByDescending(c => c.Quantidade); var count = 1; foreach (var registro in teste) { TabHistorico exemplar = new TabHistorico(); TabLeitor tbleitor = new TabLeitor(); tbleitor = db.TabLeitor.Where(model => model.idLeitor == registro.fkIdLeitor).FirstOrDefault(); exemplar.idHistorico = count; count++; exemplar.fkIdLeitor = registro.fkIdLeitor; exemplar.dsStatus = registro.Quantidade; exemplar.TabLeitor = tbleitor; ltrRank.Add(exemplar); } var Posicao = ltrRank.Where(model => model.fkIdLeitor == idLeitor).FirstOrDefault(); if (Posicao == null) { TabHistorico exemplar = new TabHistorico(); TabLeitor tbleitor = new TabLeitor(); tbleitor = db.TabLeitor.Where(model => model.idLeitor == idLeitor).FirstOrDefault(); exemplar.idHistorico = count; count++; exemplar.fkIdLeitor = (int)idLeitor; exemplar.dsStatus = 0; exemplar.TabLeitor = tbleitor; ltrRank.Add(exemplar); } return ltrRank; }
public string VerificaResposta(int idReceptor,int idDoador, int idExemplar, string resposta) { TabHistorico resultado = new TabHistorico(); if (resposta.Equals("aceito")) { //registra a aceitação resultado.fkIdLeitor = idDoador; resultado.fkIdExemplar = idExemplar; resultado.fkIdReceptor = idReceptor; resultado.dsStatus = (int)EnumStatusHistorico.ACEITO; resultado.dtHistorico = DateTime.Now; db.TabHistorico.Add(resultado); db.SaveChanges(); //registra a doação TabHistorico historico = new TabHistorico(); historico.fkIdLeitor = idReceptor; historico.fkIdExemplar = idExemplar; historico.dsStatus = (int)EnumStatusHistorico.DOADO; historico.dtHistorico = DateTime.Now; db.TabHistorico.Add(historico); db.SaveChanges(); } else { var exemplar = db.TabExemplar.Where(model => model.idExemplar == idExemplar).FirstOrDefault(); //altera o status para disponível exemplar.dsStatus = (int)StatusRegistroExemplar.DISPONIVEL; //registra a aceitação resultado.fkIdLeitor = idDoador; resultado.fkIdExemplar = idExemplar; resultado.fkIdReceptor = idReceptor; resultado.dsStatus = (int)EnumStatusHistorico.RECUSADO; resultado.dtHistorico = DateTime.Now; db.TabHistorico.Add(resultado); db.SaveChanges(); } return "Uma notificação foi enviada ao Doador"; }
public Tuple<TabExemplar, string> Criar(TabExemplar exemplar, string titulo,int idLeitor) { TabExemplar novoExemplar = new TabExemplar(); TabHistorico novoHistorico = new TabHistorico(); //Pesquisa no banco se o título informado já existe var _titulo = db.TabTitulo.Where(model => model.nmTitulo.ToLower() == titulo.ToLower()).FirstOrDefault(); //Senão NÃO existir, preenche a TabTitulo e TabExemplar com as informações passada como parâmetro if (_titulo == null) { //Monta o objeto TabTitulo TabTitulo novoTitulo = new TabTitulo(); novoTitulo.nmTitulo = titulo; //Adiciona o titulo no contexto do EF novoTitulo = db.TabTitulo.Add(novoTitulo); //Monta o objeto TabExemplar novoExemplar.nmEditora = exemplar.nmEditora; novoExemplar.nmAutor = exemplar.nmAutor; novoExemplar.dsEdicao = exemplar.dsEdicao; novoExemplar.fkIdTitulo = novoTitulo.idTitulo; novoExemplar.dsStatus = (int)StatusRegistroExemplar.DISPONIVEL; novoExemplar.dsObs = exemplar.dsObs; //Adiciona o exemplar no contexto do EF novoExemplar = db.TabExemplar.Add(novoExemplar); //Monta o objeto historico novoHistorico.dtHistorico = DateTime.Now; novoHistorico.dsStatus = (int)EnumStatusHistorico.CADASTRADO; novoHistorico.fkIdExemplar = novoExemplar.idExemplar; novoHistorico.fkIdLeitor = idLeitor; novoHistorico.fkIdReceptor = null; //Adiciona o historico no contexto do EF db.TabHistorico.Add(novoHistorico); db.SaveChanges(); } //Mas se JÁ existir, preenche somente a tabela exemplar else { //Monta o objeto TabExemplar novoExemplar.nmEditora = exemplar.nmEditora; novoExemplar.nmAutor = exemplar.nmAutor; novoExemplar.dsEdicao = exemplar.dsEdicao; novoExemplar.fkIdTitulo = _titulo.idTitulo; novoExemplar.dsStatus = (int)StatusRegistroExemplar.DISPONIVEL; //Persiste o exemplar novoExemplar = db.TabExemplar.Add(novoExemplar); //Monta o objeto historico novoHistorico.dtHistorico = DateTime.Now; novoHistorico.dsStatus = (int)EnumStatusHistorico.CADASTRADO; novoHistorico.fkIdExemplar = novoExemplar.idExemplar; novoHistorico.fkIdLeitor = idLeitor; novoHistorico.fkIdReceptor = null; //Adiciona o historico no contexto do EF db.TabHistorico.Add(novoHistorico); db.SaveChanges(); } return new Tuple<TabExemplar, string>(novoExemplar, "Corrente iniciada !! :D"); }