public IHttpActionResult Get(int id) { try { var inventario = _repository.GetByID(id); if (inventario == null) { return(NotFound()); } var configs = from c in _configRepository.GetByInventarioID(inventario.ID) select new { c.ID, c.EntidadeCampo.NomeCampo, Entidade = c.EntidadeCampo.Entidade.ToString(), c.Obrigatorio, c.Visivel }; return(Ok(new { inventario.AplicarMascara, inventario.Codigo, inventario.DataCadastroFormatada, inventario.EmpresaID, inventario.Geral, inventario.ID, inventario.MascaraNomeItem, inventario.Nome, inventario.StatusID, Configs = configs }));; } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }
public HttpResponseMessage Processar(int id) { var sinc = _repository.GetByID(id); if (sinc == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest, "Sincronização não Localizada")); } sinc.Status = Enums.StatusSincronizacao.PROCESSANDO; _repository.Update(sinc); try { var filePath = System.Configuration.ConfigurationManager.AppSettings["Sincronizacoes"] + sinc.ID + "\\sinc.json"; using (StreamReader sr = new StreamReader(filePath)) { string jsonString = sr.ReadToEnd(); JavaScriptSerializer jss = new JavaScriptSerializer(); List <Item> itens = jss.Deserialize <List <Item> >(jsonString); var pathCriticas = System.Configuration.ConfigurationManager.AppSettings["Sincronizacoes"] + sinc.ID + "\\criticas.txt"; if (File.Exists(pathCriticas)) { File.Delete(pathCriticas); } if (itens.Count > 0) { var contadorCriticas = 0; var inventario = _inventarioRepository.GetByID(sinc.InventarioID); var locais = _localRepository.GetByEmpresaID(inventario.EmpresaID); var empresas = _empresaRepository.GetAll(); var itemEstados = _itemEstadoRepository.GetAll(); var responsaveis = _responsavelRepository.GetByEmpresaID(inventario.EmpresaID); var especies = _especieRepository.GetByEmpresaID(inventario.EmpresaID); foreach (var item in itens) { bool critica = false; var itemEstado = itemEstados.Where(x => x.ID == item.ItemEstadoID).SingleOrDefault(); if (itemEstado == null) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"ItemEstado informado para o Item {item.Nome} não existe na Base de Dados;"); } critica = true; } if (item.ResponsavelID != null) { var responsavel = responsaveis.Where(x => x.ID == item.ResponsavelID).SingleOrDefault(); if (responsavel == null) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Responsável informado para o Item {item.Nome} não existe na Base de Dados;"); } critica = true; } } var local = locais.Where(x => x.ID == item.LocalID).SingleOrDefault(); if (local == null) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Local informado para o Item {item.Nome} não existe na Base de Dados;"); } critica = true; } var especie = especies.Where(x => x.ID == item.EspecieID).SingleOrDefault(); if (especie == null) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Espécie informada para o Item {item.Nome} não existe na Base de Dados;"); } critica = true; } var empresa = empresas.Where(x => x.ID == item.EmpresaID).SingleOrDefault(); if (empresa == null) { item.EmpresaID = inventario.EmpresaID; } if (item.Incorporacao != null) { if (!int.TryParse(item.Incorporacao.ToString(), out int incorporacao)) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Incorporação informada para o Item {item.Nome} precisa ser um INT;"); } critica = true; } } if (item.IncorporacaoAnterior != null) { if (!int.TryParse(item.IncorporacaoAnterior.ToString(), out int incorporacaoAnterior)) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Incorporação Anterior informada para o Item {item.Nome} precisa ser um INT;"); } critica = true; } } if (item.Latitude != null) { if (!decimal.TryParse(item.Latitude.ToString(), out decimal latitude)) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Latitude informada para o Item {item.Nome} precisa ser um DECIMAL;"); } critica = true; } } if (item.Longitude != null) { if (!decimal.TryParse(item.Longitude.ToString(), out decimal longitude)) { using (var sw = new StreamWriter(pathCriticas)) { sw.WriteLine($"Longitude informada para o Item {item.Nome} precisa ser um DECIMAL;"); } critica = true; } } if (critica) { contadorCriticas += 1; } } if (contadorCriticas > 0) { sinc.Status = Enums.StatusSincronizacao.CRITICAS; _repository.Update(sinc); return(Request.CreateResponse(HttpStatusCode.OK, "Foram encontradas incosistências nos dados enviados. Trate os dados e reprocesse a Sincronização.")); } else { foreach (var item in itens) { _itemRepository.Insert(item); } return(Request.CreateResponse(HttpStatusCode.OK, "Sincronização Processada com Sucesso.")); } } else { return(Request.CreateResponse(HttpStatusCode.OK, "Não foram encontrados Itens para Sincronizar!")); } } } catch (Exception ex) { sinc.Status = Enums.StatusSincronizacao.ERRO; _repository.Update(sinc); return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.Message)); } }