Пример #1
0
 public IHttpActionResult GetByEmpresaID(int empresaID)
 {
     try
     {
         return(Ok(_repository.GetByEmpresaID(empresaID)));
     }
     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));
            }
        }
Пример #3
0
        public IHttpActionResult CargaInicial(int inventarioID)
        {
            try
            {
                var inventario = _repository.GetByID(inventarioID);

                var empresa = _empresaRepository.GetByID(inventario.EmpresaID);

                var grupos = _grupoRepository.GetByEmpresaID(inventario.EmpresaID);

                var especies = _especieRepository.GetByEmpresaID(inventario.EmpresaID);

                var propriedades = _propriedadeRepository.GetByEmpresaID(inventario.EmpresaID);

                var especiePropriedades = _especiePropriedadeRepository.GetByEmpresaID(inventario.EmpresaID);

                var responsaveis = _responsavelRepository.GetByEmpresaID(inventario.EmpresaID);

                var centrosCusto = _centroCustoRepository.GetByEmpresaID(inventario.EmpresaID);

                var contasContabeis = _contaContabilRepository.GetByEmpresaID(inventario.EmpresaID);

                var filiais = _filialDbRepository.GetByEmpresaID(inventario.EmpresaID);

                var locais = _localDbRepository.GetByEmpresaID(inventario.EmpresaID);

                var configs = _configRepository.GetByInventarioID(inventario.ID);

                var itens = _itemRepository.GetByEmpresaID(inventario.EmpresaID);

                var itemEstados = _itemEstadoRepository.GetAll();

                object carga = new
                {
                    itemEstado = itemEstados.Count == 0 ? null : itemEstados.Select(ie => new
                    {
                        ie.ID,
                        ie.Nome
                    }),

                    empresa = new
                    {
                        empresa.CNPJ,
                        empresa.DataCadastroFormatada,
                        empresa.ID,
                        empresa.NomeFantasia,
                        empresa.RazaoSocial,

                        grupos = grupos.Count == 0 ? null : grupos.Select(g => new
                        {
                            g.Codigo,
                            g.ContaContabilID,
                            g.DataCadastroFormatada,
                            g.ID,
                            g.Nome
                        }),

                        especies = especies.Count == 0 ? null : especies.Select(e => new
                        {
                            e.Codigo,
                            e.DataCadastroFormatada,
                            e.GrupoID,
                            e.ID,
                            e.Nome,
                            propriedades = especiePropriedades.Where(ep => ep.EspecieID == e.ID).Select(ep => new
                            {
                                ep.DataCadastroFormatada,
                                ep.EspecieID,
                                ep.PropriedadeID
                            })
                        }),

                        propriedades = propriedades.Count == 0 ? null : propriedades.Select(p => new
                        {
                            p.Codigo,
                            p.DataCadastroFormatada,
                            p.Fixa,
                            p.ID,
                            p.Nome
                        }),

                        responsaveis = responsaveis.Count == 0 ? null : responsaveis.Select(r => new
                        {
                            r.Cargo,
                            r.DataCadastroFormatada,
                            r.ID,
                            r.Matricula,
                            r.Nome,
                            r.UsuarioID
                        }),

                        centrosCusto = centrosCusto.Count == 0 ? null : centrosCusto.Select(cc => new
                        {
                            cc.Codigo,
                            cc.CodigoInterno,
                            cc.DataCadastroFormatada,
                            cc.ID,
                            cc.Nome,
                            cc.Nivel,
                            cc.PaiID,
                            cc.ResponsavelID
                        }),

                        contasContabeis = contasContabeis.Count == 0 ? null : contasContabeis.Select(cco => new
                        {
                            cco.Codigo,
                            cco.CodigoInterno,
                            cco.DataCadastroFormatada,
                            cco.ID,
                            cco.Nivel,
                            cco.Nome,
                            cco.NomeAbreviado,
                            cco.PaiID
                        })
                    },

                    inventario = new
                    {
                        inventario.ID,
                        inventario.Codigo,
                        inventario.Nome,
                        inventario.StatusID,

                        filiais = filiais.Count == 0 ? null : filiais.Select(f => new
                        {
                            f.ID,
                            f.Codigo,
                            f.CNPJ,
                            f.Nome
                        }),

                        locais = locais.Count == 0 ? null : locais.Select(l => new
                        {
                            l.CentroCustoID,
                            l.Codigo,
                            l.CodigoInterno,
                            l.DataCadastroFormatada,
                            l.FilialID,
                            l.ID,
                            l.Nivel,
                            l.Nome,
                            l.PaiID,
                            l.ResponsavelID
                        }),

                        itens = itens.Count == 0 ? null : itens.Select(i => new
                        {
                            i.Codigo,
                            i.CodigoAnterior,
                            i.CodigoPM,
                            i.DadosPM,
                            i.DataCadastroFormatada,
                            i.EspecieID,
                            i.Local.FilialID,
                            i.ID,
                            i.ImagemUrl,
                            i.Imagens,
                            i.Incorporacao,
                            i.IncorporacaoAnterior,
                            i.ItemEstadoID,
                            i.Latitude,
                            i.LocalID,
                            i.LocalPM,
                            i.Longitude,
                            i.Marca,
                            i.Modelo,
                            i.Nome,
                            i.NumeroSerie,
                            i.Observacao,
                            i.ResponsavelID,
                            i.StatusID,
                            i.StatusNome,
                            i.Tag
                        }),

                        configs = configs.Select(c => new
                        {
                            c.EntidadeCampo.NomeCampo,
                            c.Visivel,
                            c.Obrigatorio
                        })
                    }
                };

                return(Ok(carga));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }