public static async void UpdateCampanhas() { var camps = new List <CampanhaModel>() { }; var camp = new CampanhaModel() { }; await Task.Factory.StartNew(() => Observable.Interval(TimeSpan.FromSeconds(30)).Subscribe(async x => { foreach (var item in Colecoes.CampanhasEnviadas.Values) { Colecoes.CampanhasEnviadas.TryRemove(item.CampanhaID, out camp); camps.Add(camp); } if (camps.Any()) { Console.WriteLine("atualizando campanhas"); await new DALCampanha().CampanhasLoteNovo(camps); camps.Clear(); } }) , TaskCreationOptions.LongRunning); }
public int SaveCliente(CampanhaModel model) { if (model.Id > 0) { return(this.Update(model)); } return(this.Add(model)); }
private void MapAndSave(Campanha campanhaEntity, CampanhaModel campanha) { this.SaveCampanha(campanhaEntity, campanha); this.SaveImagens(campanhaEntity.Id, campanha.Imagens, campanha.UpdatedById); if (!campanha.Nacional) { this.SaveEstados(campanhaEntity.Id, campanha.Estados, campanha.UpdatedById); this.SaveCidades(campanhaEntity.Id, campanha.Cidades, campanha.UpdatedById); } }
public void WriteSMS(CampanhaModel c) { Thread.Sleep(rnd.Next(2000, 2000)); c.StatusEnvio = 2; c.DataEnviar = DateTime.Now; Colecoes.CampanhasEnviadas.TryAdd(c.CampanhaID, c); this.Wait.Set(); Console.WriteLine($"Sucesso {this.ToString()} CampanhaID {c.CampanhaID}"); }
public async Task <IActionResult> Upload(Guid id) { try { CampanhaModel campanha = await LocalizarCampanha(id); ViewBag.Prioridade = CarregarPrioridades(campanha.Prioridade); return(View("Upload", campanha)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }
protected async Task <SimpleResponseObj> EditarRegistro(CampanhaModel model) { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); var resultApi = await _client.PutAsJsonAsync("/api/v1/Campanha", model); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <SimpleResponseObj>(conteudo)); }
public IActionResult SaveCampanha([FromBody] CampanhaModel model) { try { model.UpdatedById = this.GetLoggedInUserId(); _campanhaDao.SaveCliente(model); return(Ok()); } catch (Exception ex) { _logger.ErrorAsync(ex, this.GetLoggedInUserId()); throw ex; } }
public async Task <IActionResult> Editar(Guid id, CampanhaModel model) { try { ViewBag.Prioridade = CarregarPrioridades(model.Prioridade); if (!ModelState.IsValid) { return(View("Editar", model)); } if (model.Prioridade.Value < 0 || model.Prioridade.Value > 3) { ModelState.AddModelError("Prioridade", "A prioridade de estar dentro da lista de escolha"); } if (model.ImgCampanha != null && model.ImgCampanha.Length > 524288) { ModelState.AddModelError("ImgCampanha", "Tamanho máximo de arquivo excedido (500KBytes)"); } if (ModelState.ErrorCount > 0) { return(View("Editar", model)); } SimpleResponseObj resposta = await EditarRegistro(model); if (resposta.Sucesso) { if (model.ImgCampanha != null) { SimpleResponse respImg = await CarregarArquivo(model.Id.Value, model.ImgCampanha); if (!respImg.Sucesso) { ViewBag.Prioridade = CarregarPrioridades(model.Prioridade); model.Criticas = "Falha ao carregar arquivo"; return(View("Editar", model)); } } return(RedirectToAction("Index")); } ModelState.AddModelError(string.Empty, $"Ops, algo deu errado, {resposta.Mensagem.ToString()}"); return(View("Editar", model)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }
protected async Task <SimpleResponseObj> AdicionarRegistro(CampanhaModel model) { model.DataInicial = new DateTime(model.DataInicial.Value.Year, model.DataInicial.Value.Month, model.DataInicial.Value.Day, 0, 0, 0); model.DataFinal = new DateTime(model.DataFinal.Value.Year, model.DataFinal.Value.Month, model.DataFinal.Value.Day, 23, 59, 59); _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); var resultApi = await _client.PostAsJsonAsync("/api/v1/Campanha", model); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <SimpleResponseObj>(conteudo)); }
public async Task <IActionResult> Editar(Guid id) { try { int? prioridade = 1; CampanhaModel campanha = await LocalizarCampanha(id); if (campanha != null) { prioridade = campanha.Prioridade; } ViewBag.Prioridade = CarregarPrioridades(prioridade); return(View("Editar", campanha)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }
Task Porta(int _porta) { return(Task.Factory.StartNew((k) => { PortaCOMModel porta = new PortaCOMModel(_porta, "COM", FornecedorID); var camp = new CampanhaModel(); while (true) { Thread.Sleep(Rnd.Next(3000, 5000)); if (Campanhas.TryDequeue(out camp)) { porta.Wait.Reset(); porta.WriteSMS(camp); porta.Wait.Wait(); } } }, CancellationToken.None, TaskCreationOptions.LongRunning)); }
/// <summary> /// Localizar uma campanha pelo Id /// </summary> /// <param name="id">Id da campanha</param> protected async Task <CampanhaModel> LocalizarCampanha(Guid id) { _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); HttpResponseMessage resultApi = await _client.GetAsync($"/api/v1/Campanha/{id.ToString()}"); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); CampanhaModel campanha = JsonConvert.DeserializeObject <CampanhaModel>(conteudo); if (!string.IsNullOrWhiteSpace(campanha.Imagem)) { campanha.Imagem = $"{_url}{campanha.Imagem}"; } return(campanha); }
public async Task <IActionResult> AdicionaRatinhos([FromBody] CampanhaModel c) { try { if (string.IsNullOrEmpty(c.Token)) { throw new Exception("Token não presente"); } ClaimsByToken(c.Token, "RatinhoAPI"); if (c.Celular == 0) { throw new Exception("O celular deve conter um valor"); } else { if (c.Celular.ToString().Length != 11) { throw new Exception("Tamanho do celular inválido"); } } await new CampanhaRepository().AdicionaRatinho(c); return(Ok()); } catch (Exception err) { var _err = (err.InnerException ?? err).Message; if (_err.Contains("IX_RATINHOS_CELULAR")) { _err = $"{c.Celular} já está cadastrado no sistema"; } else if (_err.Contains("Signature validation failed")) { _err = "Falha na validação do Token"; } return(BadRequest(new { erro = _err })); } }
public async Task <IActionResult> GravaRetornoRatinhos([FromBody] CampanhaModel c) { try { var validator = await Util.ValidaRequisicao(new CampanhaModelValidatorApiRatinho(), c); if (!validator.Item1) { throw new Exception(validator.Item2); } await new CampanhaRepository().GravaRetornoRatinhos(c); return(Ok()); } catch (Exception err) { return(BadRequest(new { erro = (err.InnerException ?? err).Message })); } }
public int Update(CampanhaModel campanha) { using (var transaction = _testersContext.Database.BeginTransaction()) { try { var cm = this.GetById(campanha.Id); this.MapAndSave(cm, campanha); transaction.Commit(); return(cm.Id); } catch (Exception ex) { transaction.Rollback(); throw ex; } } }
private void SaveCampanha(Campanha campanhaEntity, CampanhaModel campanha) { if (campanha.Anunciante.Id <= 0) { campanhaEntity.AnuncianteId = this.InsertNovoAnunciante(campanha.Anunciante, campanha.UpdatedById); } else { campanhaEntity.AnuncianteId = campanha.Anunciante.Id; } campanhaEntity.Chave = campanha.Chave; campanhaEntity.Titulo = campanha.Titulo; campanhaEntity.Texto = campanha.Texto; campanhaEntity.TipoCampanhaId = campanha.TipoCampanhaId; campanhaEntity.DataInicio = campanha.DataInicio; campanhaEntity.DataFim = campanha.DataFim; campanhaEntity.IsActive = true; campanhaEntity.LinkTrackeado = campanha.LinkTrackeado; campanhaEntity.Cupom = campanha.Cupom; campanhaEntity.ClienteId = campanha.ClienteId; campanhaEntity.UpdateDate = DateTime.UtcNow; campanhaEntity.UpdatedById = campanha.UpdatedById; if (campanhaEntity.Id > 0) { _testersContext.Campanhas.Update(campanhaEntity); } else { campanhaEntity.CreatedById = campanha.UpdatedById; campanhaEntity.CreatedDate = DateTime.UtcNow; _testersContext.Campanhas.Add(campanhaEntity); } _testersContext.SaveChanges(); }
public async Task <IActionResult> GenericCallBack([FromBody] object c, string token) { try { if (string.IsNullOrEmpty(token)) { throw new Exception("Token não presente"); } var dados = ClaimsByToken(token, "FornecedorAPI"); if (dados.Claims.Any(a => a.Type == "fornecedorid")) { FornecedorID = int.Parse(dados.Claims.SingleOrDefault(a => a.Type == "fornecedorid").Value); } var fornecedor = new FornecedorModel() { FornecedorID = FornecedorID, ApiKey = dados.Claims.SingleOrDefault(a => a.Type == JwtRegisteredClaimNames.Jti).Value }; var campanha = new CampanhaModel(); var retornos = new List <RetornoModel>() { }; if (await new FornecedorRepository().IsApiKeyFornecedor(fornecedor)) { switch (fornecedor.FornecedorID) { case (int)FornecedorEnum.Zenvia: var zenvia = JsonConvert.DeserializeObject <ZenviaJson>(c.ToString()); if (zenvia.CallbackMtRequest != null) //confirmação de entrega { campanha.CampanhaID = long.Parse(zenvia.CallbackMtRequest.id); campanha.StatusReport = StatusReport(zenvia.CallbackMtRequest.status, fornecedor.FornecedorID); campanha.DataReport = zenvia.CallbackMtRequest.received; } else if (zenvia.CallBackMoRequest != null) //retorno de cliente { retornos.Add(new RetornoModel() { CampanhaID = long.Parse(zenvia.CallBackMoRequest.id), RetornoCliente = zenvia.CallBackMoRequest.body, DataRetorno = zenvia.CallBackMoRequest.received }); } break; case (int)FornecedorEnum.Conectta: var conectta = JsonConvert.DeserializeObject <RetornoConectta>(c.ToString()); if (string.IsNullOrEmpty(conectta.retorno)) { campanha.CampanhaID = long.Parse(conectta.id); campanha.StatusReport = StatusReport(conectta.statuscode, fornecedor.FornecedorID); campanha.DataReport = conectta.datareport; } else { retornos.Add(new RetornoModel() { CampanhaID = long.Parse(conectta.id), RetornoCliente = conectta.retorno, DataRetorno = conectta.dataretorno }); } break; case (int)FornecedorEnum.Pontal: var pontal = JsonConvert.DeserializeObject <PontalModel>(c.ToString()); if (pontal.type == "api_message") //confirmação de entrega { switch (pontal.status) { case 4: case 14: case 10: campanha.StatusEnvio = 3; break; case 5: case 7: case 13: case 6: campanha.StatusReport = StatusReport(pontal.status, fornecedor.FornecedorID); break; } campanha.CampanhaID = long.Parse(pontal.reference); campanha.DataReport = DateTime.Now; } else if (pontal.type == "api_reply") //retorno de cliente { retornos.AddRange(JsonConvert.DeserializeObject <retorno>(c.ToString()) .replies .Select(a => new RetornoModel() { CampanhaID = long.Parse(a.reference), RetornoCliente = a.message, DataRetorno = a.received })); } break; } } if (campanha.CampanhaID > 0) //MT { await new CampanhaRepository().AtualizaItensStatusReport(new CampanhaModel[] { campanha }); } else //MO { await new RetornoRepository().AddByApi(retornos); #region IOPeople Disparos Retornos #pragma warning disable 4014 foreach (var retornoModel in retornos) { PostaRetornoIoPeople(new ReplyGenericModel() { received = retornoModel.DataRetorno, messageOriginal = retornoModel.RetornoCliente, reference = retornoModel.CampanhaID.ToString() }, fornecedor.FornecedorID); } #pragma warning restore 4014 #endregion } return(Ok()); } catch (Exception err) { return(BadRequest($"Erro {(err.InnerException ?? err).Message}")); } }
public async Task <IActionResult> ConfirmacoesEntrega([FromBody] CampanhaModel c) { try { var validator = await Util.ValidaRequisicao(new CampanhaModelValidatorApi(), c); if (!validator.Item1) { throw new Exception(validator.Item2); } var dados = ClaimsByToken(c.Token, "ClienteAPI"); ClienteID = int.Parse(dados.Claims.SingleOrDefault(a => a.Type == "clienteid").Value); if (ClienteID == 0) { throw new Exception("ClienteID sem valor no token"); } if (dados.Claims.Any(a => a.Type == "usuarioid")) { UsuarioID = int.Parse(dados.Claims.SingleOrDefault(a => a.Type == "usuarioid").Value); } c.Cliente = new ClienteModel() { ClienteID = ClienteID }; if (UsuarioID.HasValue) { c.Usuario = new UsuarioModel() { UsuarioID = UsuarioID.Value } } ; var result = await new CampanhaRepository().DetalhadoCampanhas(c, ClienteID, UsuarioID); if (result.Any()) { return(Ok(result.Select(a => new { texto = a.Texto, celular = a.Celular, dataenviar = a.DataEnviar, carteira = a.Carteira.Carteira, arquivo = a.Arquivo != null ? a.Arquivo.Arquivo : string.Empty, tipocampanha = a.TipoCampanha.TipoCampanha, operadora = a.Operadora.ToString(), uf = a.UF, regiao = a.Regiao, fornecedor = a.Fornecedor.Nome, statusreport = a.StatusReport.ToString() }))); } else { throw new Exception($"Sem dados para a pesquisa do dia {c.DataInicial} a {c.DataFinal}"); } } catch (Exception err) { return(BadRequest(new { error = (err.InnerException ?? err).Message })); } }
public async Task <IActionResult> Adicionar(Guid id, CampanhaModel model) { try { ViewBag.Prioridade = CarregarPrioridades(model.Prioridade); if (!ModelState.IsValid) { return(View("Adicionar", model)); } if (model.Prioridade.Value < 0 || model.Prioridade.Value > 3) { ModelState.AddModelError("Prioridade", "A prioridade de estar dentro da lista de escolha"); } if (model.ImgCampanha == null || model.ImgCampanha.Length.Equals(0)) { ModelState.AddModelError("ImgCampanha", "Arquivo de imagem inválido ou não informado"); } else if (model.ImgCampanha.Length > 524288) { ModelState.AddModelError("ImgCampanha", "Tamanho máximo de arquivo excedido (500KBytes)"); } else { if (!(ValidarArquivo(model.ImgCampanha))) { ModelState.AddModelError("ImgCampanha", "Formato de arquivo inválido"); } } if (ModelState.ErrorCount > 0) { return(View("Adicionar", model)); } SimpleResponseObj resposta = await AdicionarRegistro(model); if (resposta.Sucesso) { CampanhaModel campanha = JsonConvert.DeserializeObject <CampanhaModel>(resposta.Mensagem.ToString()); SimpleResponse respImg = await CarregarArquivo(campanha.Id.Value, model.ImgCampanha); if (respImg.Sucesso) { return(RedirectToAction("Index")); } campanha = await LocalizarCampanha(campanha.Id.Value); ViewBag.Prioridade = CarregarPrioridades(campanha.Prioridade); model.Criticas = "Falha ao carregar arquivo"; return(View("Editar", model)); } ModelState.AddModelError(string.Empty, $"Ops, algo deu errado, {resposta.Mensagem.ToString()}"); return(View("Adicionar", model)); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }
public async Task <IActionResult> Upload(Guid id, IFormFile arquivo) { try { CampanhaModel campanha = await LocalizarCampanha(id); ViewBag.Prioridade = CarregarPrioridades(campanha.Prioridade); if (arquivo == null || arquivo.Length.Equals(0)) { campanha.Criticas = "Arquivo inválido ou vazio"; return(View("Upload", campanha)); } // Salvar em pasta temporária string nomeArquivoBase = ContentDispositionHeaderValue.Parse(arquivo.ContentDisposition).FileName.Trim('"'); string hashId = $"{(DateTime.Now.Ticks * (new Random().Next(2, 16))).ToString().Substring(0, 6)}".Replace("-", string.Empty); string dataArquivo = DateTime.Now.ToString("yyyyMMddhhmmss"); string nomeArquivoFileServer = $"{hashId}-{dataArquivo}_{id.ToString()}.jpg"; string nomeCompleto = sys.Path.Combine(_caminho, nomeArquivoFileServer); // Validando tipo de arquivo pela extenção string extensao = nomeArquivoBase.Split('.').LastOrDefault().ToLower(); if (string.IsNullOrWhiteSpace(extensao) || !"jpg|jpeg|png".Contains(extensao.ToLower())) { campanha.Criticas = "Formato de arquivo inválido"; return(View("Upload", campanha)); } // Validando tamanho do arquivo using (sys.FileStream stream = new sys.FileStream(nomeCompleto, sys.FileMode.Create)) { arquivo.CopyTo(stream); } // Converter em Base64 byte[] bytes = sys.File.ReadAllBytes(nomeCompleto); string arquivoImagemBase64 = Convert.ToBase64String(bytes); try { System.IO.File.Delete(nomeCompleto); } finally { /* Nada a fazer */ } // Enviar para Api _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ObterToken()); HttpResponseMessage resultApi = await _client.PostAsJsonAsync($"/api/v1/Campanha/Imagem", new { CampanhaId = id.ToString(), ImagemBase64 = arquivoImagemBase64 }); if (resultApi.StatusCode.Equals(HttpStatusCode.Unauthorized)) { throw new SessaoExpiradaException(); } string conteudo = await resultApi.Content.ReadAsStringAsync(); SimpleResponse response = JsonConvert.DeserializeObject <SimpleResponse>(conteudo); if (!response.Sucesso) { campanha.Criticas = response.Mensagem; return(View("Upload", campanha)); } // Redirecionar para Listagem return(View("List", await CarregarCampanhas())); } catch (SessaoExpiradaException) { return(RedirectToAction("Logout", "Account")); } }