/// <summary> /// Gravar os objetos dos correios em disco. /// </summary> /// <param name="codigoRastreio"></param> /// <param name="descricao"></param> /// <param name="idEndereco"></param> /// <returns></returns> public static async Task <bool> GravarObjetoCorreio(string codigoRastreio, string descricao, int idEndereco) { var sucesso = false; try { using (SROXml sroXml = new SROXml()) { using (Objeto objeto = new Objeto()) { objeto.Numero = codigoRastreio; objeto.Descricao = descricao; objeto.DataInicio = DateTime.Now; objeto.DataFim = DateTime.MinValue; objeto.IdEndereco = idEndereco; sroXml.Objetos = new List <Objeto>(); sroXml.Objetos.Add(objeto); sucesso = await sroXml.GravarCorreioOffLine(); if (sucesso) { } } } } catch (Exception ex) { Core.GravarLog("Core", "GravarObjetoCorreio", ex); return(false); } return(sucesso); }
/// <summary> /// Busca obj por codigo. Clique detalhe. /// </summary> /// <param name="codigoRastreio"></param> /// <returns>Sro com objeto unico.</returns> public static async Task <SROXml> GetSROXml(string codigoRastreio) { using (SROXml sroXml = new SROXml()) { try { SROXml sro = await sroXml.GetSROXml(); if (sro != null) { var retorno = sro.Objetos.Find((x) => x.Numero.Equals(codigoRastreio)); SROXml sroRetorno = new SROXml(); sroRetorno.Objetos = new List <Objeto>(); sroRetorno.Objetos.Add(retorno); return(sroRetorno); } else { return(new SROXml()); } } catch (Exception ex) { GravarLog("Core", "GetSROXml", ex); } return(new SROXml()); } }
/// <summary> /// Retorna o objeto pelo numero. /// </summary> /// <param name="Id"></param> /// <returns></returns> public static async Task <SROXml> GetHistorico(string numero) { using (HistoricoSRO objHistorico = new HistoricoSRO()) { try { SROXml sroXmlRetorno = new SROXml(); HistoricoSRO historico = await objHistorico.GetSHistorico(); if (historico != null && historico.ObjetoSRO != null) { var objeto = historico.ObjetoSRO.Objetos.Find((x) => x.Numero.Equals(numero)); if (objeto != null) { sroXmlRetorno.Objetos = new List <Objeto>(); sroXmlRetorno.Objetos.Add(objeto); } } return(sroXmlRetorno); } catch (Exception ex) { Core.GravarLog("Core", "GetHistorico", ex); return(new SROXml()); } } }
/// <summary> /// Asincrono. Deve analisar retorno! /// Retorna todo SROXml cadastrados pelo usuário. /// </summary> /// <returns>retorna um objeto SROXml.</returns> public static async Task <SROXml> GetSROXml() { using (SROXml objSROXml = new SROXml()) { return(await objSROXml.GetSROXml()); } }
/// <summary> /// Carregar os dados dos correios e descricao do XML Local. /// </summary> /// <param name="listCodigosRastreio"></param> /// <param name="resultado">T-> Serão retornados todos os Eventos, U -> Sera retornado apenas o ultimo Evento.</param> /// <returns></returns> public async static Task <SROXml> GetXmlCorreios(List <string> listCodigosRastreio, Enumeration.Resultado resultado) { try { Correio correio = new Correio(); SROXml sroXml = correio.BuscaObjetosOnline(listCodigosRastreio, resultado); if (sroXml != null && sroXml.Objetos != null) { SROXml sroXmlDescricaoObjeto = await Core.GetSROXml(); if (sroXmlDescricaoObjeto != null) { //Alterar o forech para linqs. foreach (Objeto itemOnLine in sroXml.Objetos) { foreach (Objeto itemDisco in sroXmlDescricaoObjeto.Objetos) { if (itemOnLine.Eventos != null && itemOnLine.Eventos.Count > 0) { foreach (Evento eventoCoord in itemOnLine.Eventos) { if (eventoCoord.GeoX == 0 || eventoCoord.GeoY == 0) { eventoCoord.BuscaGeoLocalizacaoEvento(); } } } if (itemOnLine.Numero == itemDisco.Numero) { itemOnLine.Descricao = itemDisco.Descricao; itemOnLine.IdEndereco = itemDisco.IdEndereco; break; } } } } } return(sroXml); } catch (Exception ex) { Core.GravarLog("Core", "GerXmlCorreios", ex); return(new SROXml()); } }
/// <summary> /// Atualiza o Tile com informacoes do ObjetoCorreio. /// </summary> /// <param name="dicObj"></param> private static void UpdateTile(SROXml sroTiles) { // Create a tile update manager for the specified syndication feed. var updater = TileUpdateManager.CreateTileUpdaterForApplication(); updater.EnableNotificationQueue(true); updater.Clear(); // Keep track of the number feed items that get tile notifications. int itemCount = 0; // Create a tile notification for each feed item. if (sroTiles != null && sroTiles.Objetos != null) { foreach (var obj in sroTiles.Objetos) { string tile = (String.Format("<tile><visual><binding template=\"TileWideText01\">" + "<text id=\"1\">{0}</text>" + "<text id=\"2\">{1}</text>" + "<text id=\"3\">{2}</text>" + "<text id=\"4\">{3}</text>" + "</binding>" + "<binding template=\"TileSquareText03\">" + "<text id=\"1\">{0}</text>" + "<text id=\"2\">{1} </text>" + "<text id=\"3\">{2}</text>" + "<text id=\"4\">{3}</text>" + "</binding>" + "</visual>" + "</tile>", obj.Numero, obj.Eventos[0].Descricao, obj.Eventos[0].Destino.Cidade, obj.Eventos[0].Destino.Local)); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(tile); TileNotification tileNotification = new TileNotification(xmlDoc); TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification); // Create a new tile notification. updater.Update(new TileNotification(xmlDoc)); // Don't create more than 5 notifications. if (itemCount++ > 50) { break; } } } }
/// <summary> /// Atualizar automaticamente com valor estipulado. /// </summary> /// <returns>Objeto atualizado.</returns> public async static Task <SROXml> AtualizacaoAutomatica(int tempoAtualizacao) { try { SROXml sroDisco = await GetSROXml(); //if (sroDisco == null) // sroDisco = new SROXml(); if (tempoAtualizacao == 0) { return(sroDisco); } if (DateTime.Now >= sroDisco.UltimaAtualizacao.AddHours(tempoAtualizacao)) { sroDisco.UltimaAtualizacao = DateTime.Now.AddHours(tempoAtualizacao); var gravouDisco = await sroDisco.GravarCorreioOnLine(); if (gravouDisco) { } var atualizouCorreios = await Core.AtualizarObjetosDisco(); if (atualizouCorreios) { } } sroDisco.Dispose(); sroDisco = null; sroDisco = await GetSROXml(); return(sroDisco); } catch (Exception ex) { Core.GravarLog("Core", "AtualizacaoAutomatica", ex); return(new SROXml()); } }
/// <summary> /// Busca os Objetos dos Correios. /// </summary> /// <returns>Dicionario com seus Eventos e destinos.</returns> private static async Task <SROXml> GetObjetosCorreios() { SROXml sroRetorno = new SROXml(); try { //Verificar o timer para atualizar a lista do webCorreio. using (SROXml sroXmlDisco = await Core.AtualizacaoAutomatica()) { Objeto objeto = null; Evento evento = null; Destino destino = null; if (sroXmlDisco != null && sroXmlDisco.Objetos != null && sroXmlDisco.Objetos.Count > 0) { foreach (Objeto obj in sroXmlDisco.Objetos) { objeto = new Objeto(); evento = new Evento(); destino = new Destino(); objeto.Numero = obj.Descricao != string.Empty ? obj.Descricao : obj.Numero; foreach (Evento ev in obj.Eventos) { evento.Descricao = ev.Descricao + " - " + ev.Local + "-" + ev.Cidade + " " + ev.UF + ev.Data + " " + ev.Hora; if (ev.Destino != null) { destino.Cidade = ev.DestinoEvento() + ev.Destino.Bairro + " " + ev.Destino.Cidade + " " + ev.Destino.Uf; destino.Local = ev.Destino.Local + "\r\n\r\n\r\n\r\n" + Util.GeraSequenciaNumerica(); } break; } if (evento.Destino == null) { evento.Destino = new Destino(); } evento.Destino = destino; if (objeto.Eventos == null) { objeto.Eventos = new List <Evento>(); } objeto.Eventos.Add(evento); if (sroRetorno.Objetos == null) { sroRetorno.Objetos = new List <Objeto>(); } sroRetorno.Objetos.Add(objeto); } } } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } return(sroRetorno); }
/// <summary> /// Atualizar a lista de objetos gravados em disco. /// </summary> /// <param name="listCodigosRastreio"></param> /// <returns></returns> public async static Task <bool> AtualizarObjetosDisco() { //muda a posicao da publicidade. Preferencias preferencias = await GetSPreferencias(); switch (preferencias.PosicaoPublicidade) { case Windows.UI.Xaml.HorizontalAlignment.Center: preferencias.PosicaoPublicidade = Windows.UI.Xaml.HorizontalAlignment.Right; break; case Windows.UI.Xaml.HorizontalAlignment.Left: preferencias.PosicaoPublicidade = Windows.UI.Xaml.HorizontalAlignment.Center; break; case Windows.UI.Xaml.HorizontalAlignment.Right: preferencias.PosicaoPublicidade = Windows.UI.Xaml.HorizontalAlignment.Left; break; default: break; } var gravouPref = await GravarPreferencias(preferencias); if (gravouPref) { } //Corrigir método, pois tem que ser atualizado do disco a partir do correio, mas nao pode perder os que ainda nao foram mostrados nos correios. var sucesso = false; SROXml sroXmlLocal = null; SROXml sroXml = null; try { sroXmlLocal = await Core.GetSROXml(); List <string> listCodigoRastreio = new List <string>(); if (sroXmlLocal != null && sroXmlLocal.Objetos != null) { foreach (Objeto item in sroXmlLocal.Objetos) { listCodigoRastreio.Add(item.Numero); } } if (listCodigoRastreio.Count > 0) { Correio correios = new Correio(); sroXml = correios.BuscaObjetosOnline(listCodigoRastreio, Enumeration.Resultado.T); List <string> listContain = null; List <string> listNaoContain = null; if (sroXml != null && sroXml.Objetos != null && (listCodigoRastreio.Count != sroXml.Objetos.Count)) { listContain = new List <string>(); listNaoContain = new List <string>(); foreach (var item in sroXml.Objetos) { listContain.Add(item.Numero); } for (int i = 0; i < listCodigoRastreio.Count; i++) { if (!listContain.Contains(listCodigoRastreio[i])) { listNaoContain.Add(listCodigoRastreio[i]); } } } if (sroXml != null && sroXml.Objetos != null) { //Alterar o forech para linqs. foreach (Objeto itemOnLine in sroXml.Objetos) { foreach (Objeto itemDisco in sroXmlLocal.Objetos) { if (itemOnLine.Numero == itemDisco.Numero) { if (itemOnLine.Eventos != null && itemOnLine.Eventos.Count > 0) { foreach (Evento eventoCoord in itemOnLine.Eventos) { if (eventoCoord.GeoX == 0 || eventoCoord.GeoY == 0) { eventoCoord.BuscaGeoLocalizacaoEvento(); } } } itemOnLine.Descricao = itemDisco.Descricao; itemOnLine.IdEndereco = itemDisco.IdEndereco; break; } } } if (listNaoContain != null) { for (int i = 0; i < listNaoContain.Count; i++) { foreach (Objeto item in sroXmlLocal.Objetos) { if (listNaoContain[i] == item.Numero) { Evento ev = new Evento(); ev.Descricao = "O nosso sistema não possui dados sobre o objeto informado. Se o objeto foi postado recentemente, é natural que seus rastros não tenham ingressado no sistema, nesse caso, por favor, tente novamente mais tarde. Adicionalmente, verifique se o código digitado está correto"; item.Eventos = new List <Evento>(); item.Eventos.Add(ev); sroXml.Objetos.Add(item); break; } } } } sroXml.UltimaAtualizacao = DateTime.Now; sucesso = await sroXml.GravarCorreioOnLine(); if (sucesso) { } } } } catch (Exception ex) { Core.GravarLog("Core", "AtualizarObjetosDisco", ex); } finally { if (sroXmlLocal != null) { sroXmlLocal.Dispose(); sroXmlLocal = null; } if (sroXml != null) { sroXml.Dispose(); sroXml = null; } } return(sucesso); }
/// <summary> /// Excluir Objeto ou Historico. Obs se remover direto o objeto ele nao encontra. Precisa percorrer e remover dele mesmo. /// </summary> /// <param name="objetoExcluir"></param> /// <returns></returns> public async static Task <bool> ExcluirObjeto(Objeto objetoExcluir) { SROXml sroXml = null; SROXml sroExclusao = null; try { var sucesso = false; sroXml = await GetSROXml(objetoExcluir.Numero); if (sroXml == null) { sroXml = new SROXml(); } if (sroXml != null && sroXml.Objetos[0] == null) { using (HistoricoSRO historico = await GetHistorico()) { foreach (Objeto item in historico.ObjetoSRO.Objetos) { if (item.Numero == objetoExcluir.Numero) { historico.ObjetoSRO.Objetos.Remove(item); break; } } sucesso = await historico.GravarCorreioOnLine(); if (sucesso) { } } } else { sroExclusao = await GetSROXml(); if (sroExclusao == null) { sroExclusao = new SROXml(); } foreach (Objeto item in sroExclusao.Objetos) { if (item.Numero == objetoExcluir.Numero) { sroExclusao.Objetos.Remove(item); sroExclusao.Qtd--; break; } } sucesso = await sroExclusao.GravarCorreioOnLine(); if (sucesso) { } } return(sucesso); } catch (Exception ex) { Core.GravarLog("Core", "ExcluirObjeto", ex); return(false); } finally { if (sroXml != null) { sroXml.Dispose(); sroXml = null; } if (sroExclusao != null) { sroExclusao.Dispose(); sroExclusao = null; } } }
/// <summary> /// Gravar Historico dos objetos. /// </summary> /// <returns></returns> public static async Task <bool> GravarObjetoHistorico() { var sucessoOnLine = false; SROXml sroObjeto = null; List <Objeto> listExcluidos = null; HistoricoSRO historico = null; try { sroObjeto = await GetSROXml(); if (sroObjeto.Objetos == null) { return(sucessoOnLine); } foreach (Objeto objetoLocal in sroObjeto.Objetos) { if (objetoLocal.Eventos != null && objetoLocal.Eventos.Count > 0) { if (objetoLocal.Eventos[0].Codigo != null) { DateTime dataEvento = new DateTime(Convert.ToInt16(objetoLocal.Eventos[0].Data.Substring(6, 4)), Convert.ToInt16(objetoLocal.Eventos[0].Data.Substring(3, 2)), Convert.ToInt16(objetoLocal.Eventos[0].Data.Substring(0, 2)), Convert.ToInt16(objetoLocal.Eventos[0].Hora.Substring(0, 2)), Convert.ToInt16(objetoLocal.Eventos[0].Hora.Substring(3, 2)), 0); if (Status.VerificarStatus(objetoLocal.Eventos[0].Tipo, Convert.ToInt16(objetoLocal.Eventos[0].Status)) &&//objetoLocal.Eventos[0].Descricao == Entities.Enumeration.DescricaoEvento.Entregue dataEvento.AddDays(1) < DateTime.Now) { if (listExcluidos == null) { listExcluidos = new List <Objeto>(); } listExcluidos.Add(objetoLocal); } } } } if (listExcluidos != null && listExcluidos.Count > 0) { historico = await GetHistorico(); if (historico != null) { foreach (Objeto item in listExcluidos) { sroObjeto.Objetos.Remove(item); sroObjeto.Qtd--; item.DataFim = new DateTime(Convert.ToInt16(item.Eventos[0].Data.Substring(6, 4)), Convert.ToInt16(item.Eventos[0].Data.Substring(3, 2)), Convert.ToInt16(item.Eventos[0].Data.Substring(0, 2)), Convert.ToInt16(item.Eventos[0].Hora.Substring(0, 2)), Convert.ToInt16(item.Eventos[0].Hora.Substring(3, 2)), 0); if (historico.ObjetoSRO == null) { historico.ObjetoSRO = new SROXml(); } if (historico.ObjetoSRO.Objetos == null) { historico.ObjetoSRO.Objetos = new List <Objeto>(); } historico.ObjetoSRO.Objetos.Add(item); } historico.ObjetoSRO.UltimaAtualizacao = DateTime.Now; } var sucesso = await historico.GravarCorreioOnLine(); if (sucesso) { sucessoOnLine = await sroObjeto.GravarCorreioOnLine(); if (sucessoOnLine) { } } } } catch (Exception ex) { Core.GravarLog("Core", "GravarObjetoHistorico", ex); } finally { if (sroObjeto != null) { sroObjeto.Dispose(); sroObjeto = null; } if (listExcluidos != null) { listExcluidos.Clear(); listExcluidos = null; } if (historico != null) { historico.Dispose(); historico = null; } } return(sucessoOnLine); }