示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }