public async System.Threading.Tasks.Task <string> AprovarEvento(int idEvento) { try { bool podeAdicionar = true; Evento ev = new Evento(); List <Usuario> usuarios = new List <Usuario>(); var evento = _eventoService.GetById(idEvento); var retornoConsultaEvento = VerificaSeEventoJaExiste(evento); foreach (var v in retornoConsultaEvento) { if ( podeAdicionar && (evento.DataHoraInicio <= v.DataHoraInicio && evento.DataHoraFim <= v.DataHoraInicio) || (evento.DataHoraInicio >= v.DataHoraFim && evento.DataHoraFim >= v.DataHoraFim) ) { podeAdicionar = true; } else { ev = v; podeAdicionar = false; } } if (podeAdicionar) { evento.Aprovado = true; evento.Ativo = true; _eventoService.Update(evento); var garagens = _garagemService.GetByLatLong(evento.Latitude, evento.Longitude, 1); foreach (var g in garagens) { var vaga = _vagaService.GetByIdGarage(g.GaragemId); foreach (var v in vaga) { var loc = _locacaoService.GetAll().Where(l => l.VagaId == v.VagaId && ((l.DiaHoraInicio <= evento.DataHoraInicio && l.DiaHoraFim == null && l.Ativo) || (l.DiaHoraInicio <= evento.DataHoraInicio && l.DiaHoraFim >= evento.DataHoraFim && l.Ativo))); if (loc.Count() == 0) { usuarios.Add(v.Usuario); } } } var usuariosDistintos = usuarios.DistinctBy(e => e.UsuarioId).ToList(); foreach (var u in usuariosDistintos) { var notifiEmail = _notificacaoEmailSms.GetAll().Where(n => n.UsuarioId == u.UsuarioId && n.TipoNotificacao == 1 && n.MotivoNotificacao == 3 && n.DataCadastro >= DateTime.Now.AddHours(-2) && n.DataCadastro <= DateTime.Now); if (notifiEmail.Count() == 0) { var assunto = "Novo Evento em sua região"; var mensagem = "Olá " + u.Nome + ". <br /><br /> Gostaríamos de informar que no dia " + evento.DataHoraInicio.ToString("dd/MM/yyyy") + " das " + evento.DataHoraInicio.ToString("HH:mm") + " às " + evento.DataHoraFim.ToString("HH:mm") + " ocorrerá um evento próximo da região na qual você possui vagas. <br /><br />" + "Constatamos que até o momento " + "sua vaga possui horários disponíveis no período em que irá ocorrer o evento e achamos que esta será uma ótima " + "oportunidade para você lucrar. Fique atento. <br /><br />" + "Dados do Evento: <br />" + "Nome: " + evento.NomeEvento + "<br />" + "Endereço: " + evento.Endereco + ", Nº " + evento.Numero + "<br />" + "CEP: " + evento.Cep + "<br /><br />" + "E-mail automático. Favor não responder."; /*Notification n = new Notification(); * * if (u.AceitaReceberEmail) * { * await n.SendMailAsync(u.Email, assunto, mensagem); * }*/ NotificacaoEmailSms nes = new NotificacaoEmailSms(); nes.MotivoNotificacao = 3; nes.TipoNotificacao = 1; nes.UsuarioId = u.UsuarioId; _notificacaoEmailSms.Add(nes); } var notifiSms = _notificacaoEmailSms.GetAll().Where(n => n.UsuarioId == u.UsuarioId && n.TipoNotificacao == 2 && n.MotivoNotificacao == 3 && n.DataCadastro >= DateTime.Now.AddHours(-2) && n.DataCadastro <= DateTime.Now); if (notifiSms.Count() == 0) { /*Notification n = new Notification(); * if(u.AceitaReceberSms) * { * string sms = "Informamos que no dia " + evento.DataHoraInicio.ToString("dd/MM/yyyy") + * " ocorrerá um evento próximo da região na qual você possui vagas. Para mais informações acesse o App PareAqui."; * * n.SendSMS(u.Celular, sms); * }*/ NotificacaoEmailSms nes = new NotificacaoEmailSms(); nes.MotivoNotificacao = 3; nes.TipoNotificacao = 2; nes.UsuarioId = u.UsuarioId; _notificacaoEmailSms.Add(nes); } var token = _usuarioService.GetById(u.UsuarioId).TokenPush; if (token != null) { var client = new RestClient("https://fcm.googleapis.com/fcm/send"); var request = new RestRequest(Method.POST); request.AddHeader("content-type", "application/json"); request.AddHeader("authorization", "key=AAAApWoJXi4:APA91bHQiIkzL3CnydktDyZaMcs_pDR1Bu6ECbM-apPfRIXKgHZg_WWyYDHAFLsXeb6E1TZmjdqtjrrfZWa9BDd6JQKcF89NtAVZOIj2Kmu6yYSYg3n9mFMbc1np6mmiAXULJkKuwnqj"); request.AddParameter("application/json", "{\"to\" : \"" + token + "\",\"collapse_key\" : \"type_a\",\"notification\" : {\"body\" : \"Haverá um evento em sua região. É a oportunidade perfeita para você lucrar. Em instantes você receberá um e-mail com mais detalhes.\",\"title\": \"Oportunidade de lucar\" }}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); } } var evts = _eventoService.GetEventsForApproval().Where(e => e.Cep == evento.Cep && e.Numero == evento.Numero); foreach (var e in evts) { if ( e.DataHoraInicio < evento.DataHoraInicio && e.DataHoraFim <= evento.DataHoraInicio || e.DataHoraInicio >= evento.DataHoraFim && e.DataHoraFim > evento.DataHoraFim ) { } else { var a = ReprovarEvento(e.EventoId, "Há outro Evento neste mesmo horário que já foi aprovado."); } } return(JsonConvert.SerializeObject(new { code = 200, message = "Evento aprovado com sucesso." })); } else { return(JsonConvert.SerializeObject(new { code = 400, message = "Desculpe, mas já existe um evento cadastrado neste local para este horário.", retornoEvento = ev })); } } catch { return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao aprovar o Evento. Por favor tente novamente." })); } }
public async System.Threading.Tasks.Task <string> ReprovarVaga(int idVaga, string motivoReprovada) { try { var vaga = _vagaService.GetById(idVaga); vaga.Aceita = false; vaga.Ativo = false; vaga.MotivoReprovada = motivoReprovada; _vagaService.Update(vaga); var usuario = vaga.Usuario; var notifiEmail = _notificacaoEmailSms.GetAll().Where(n => n.UsuarioId == usuario.UsuarioId && n.TipoNotificacao == 1 && n.MotivoNotificacao == 2 && n.DataCadastro >= DateTime.Now.AddHours(-2) && n.DataCadastro <= DateTime.Now); if (notifiEmail.Count() == 0) { string assunto = "Vaga reprovada"; var mensagem = "Olá " + usuario.Nome + ". <br /><br /> Infelizmente não podemos aprovar a sua vaga, localizada na " + vaga.Garagem.Endereco + " Nº " + vaga.Garagem.NumeroRua + ". <br /><br /> Segue abaixo o motivo pelo qual não podemos aprovar a mesma.<br /><br />" + "Dados da Vaga: <br />" + "Endereço: " + vaga.Garagem.Endereco + ", Nº " + vaga.Garagem.NumeroRua + "<br />" + "Bairro: " + vaga.Garagem.Bairro + "<br />" + "CEP: " + vaga.Garagem.Cep + "<br /><br />" + "Motivo da Reprovação: " + motivoReprovada + "<br /><br />" + "E-mail automático. Favor não responder."; /*Notification n = new Notification(); * * if (usuario.AceitaReceberEmail) * { * await n.SendMailAsync(usuario.Email, assunto, mensagem); * }*/ NotificacaoEmailSms nes = new NotificacaoEmailSms(); nes.MotivoNotificacao = 2; nes.TipoNotificacao = 1; nes.UsuarioId = usuario.UsuarioId; _notificacaoEmailSms.Add(nes); } var notifiSms = _notificacaoEmailSms.GetAll().Where(n => n.UsuarioId == usuario.UsuarioId && n.TipoNotificacao == 2 && n.MotivoNotificacao == 2 && n.DataCadastro >= DateTime.Now.AddHours(-2) && n.DataCadastro <= DateTime.Now); if (notifiSms.Count() == 0) { /*Notification n = new Notification(); * * if(usuario.AceitaReceberSms) * { * string sms = "Olá " + usuario.Nome + ". Infelizmente não podemos aprovar a sua vaga. Para mais informações acesse o App PareAqui."; * * n.SendSMS(usuario.Celular, sms); * }*/ NotificacaoEmailSms nes = new NotificacaoEmailSms(); nes.MotivoNotificacao = 2; nes.TipoNotificacao = 2; nes.UsuarioId = usuario.UsuarioId; _notificacaoEmailSms.Add(nes); } var token = _usuarioService.GetById(vaga.UsuarioId).TokenPush; if (token != null) { var client = new RestClient("https://fcm.googleapis.com/fcm/send"); var request = new RestRequest(Method.POST); request.AddHeader("content-type", "application/json"); request.AddHeader("authorization", "key=AAAApWoJXi4:APA91bHQiIkzL3CnydktDyZaMcs_pDR1Bu6ECbM-apPfRIXKgHZg_WWyYDHAFLsXeb6E1TZmjdqtjrrfZWa9BDd6JQKcF89NtAVZOIj2Kmu6yYSYg3n9mFMbc1np6mmiAXULJkKuwnqj"); request.AddParameter("application/json", "{\"to\" : \"" + token + "\",\"collapse_key\" : \"type_a\",\"notification\" : {\"body\" : \"Infelizmente não podemos aprovar a sua vaga. Em instantes você receberá um e-mail com mais detalhes.\",\"title\": \"Vaga reprovada\" }}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); } return(JsonConvert.SerializeObject(new { code = 200, message = "Vaga reprovada com sucesso." })); } catch { return(JsonConvert.SerializeObject(new { code = 400, message = "Houve um erro ao reprovar a Vaga. Por favor tente novamente." })); } }