Пример #1
0
        public IHttpActionResult Post([FromBody] ContaContabil contaContabil)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var contas = _repository.GetByEmpresaID(contaContabil.EmpresaID);

                if (contas.Count == 0)
                {
                    contaContabil.CodigoInterno = 1;
                }
                else
                {
                    if (contaContabil.PaiID == null)
                    {
                        contaContabil.CodigoInterno = contas.Where(x => x.PaiID == null).Max(x => x.CodigoInterno) + 1;
                    }
                    else
                    {
                        var pai = contas.Where(x => x.ID == contaContabil.PaiID).Single();

                        double proximoCodigo = 0;

                        if (pai.Filhos.Count == 0)
                        {
                            proximoCodigo = Convert.ToDouble(pai.CodigoInterno.ToString().Split(',').Count() == 1 ? pai.CodigoInterno.ToString() + "," + "1" : pai.CodigoInterno.ToString().Split(',')[0] + "," + pai.CodigoInterno.ToString().Split(',')[1] + "1");
                        }
                        else
                        {
                            double ultimoCodigo = pai.Filhos.Max(x => x.CodigoInterno);
                            string codigo       = (Convert.ToInt32(ultimoCodigo.ToString().Split(',')[1]) + 1).ToString();
                            proximoCodigo = Convert.ToDouble(ultimoCodigo.ToString().Split(',')[0] + "," + codigo);
                        }

                        contaContabil.CodigoInterno = proximoCodigo;
                    }
                }

                _repository.Insert(contaContabil);

                return(Ok(contaContabil));
            }
            catch (System.Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Пример #2
0
        public IHttpActionResult Post([FromBody] Empresa empresa)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                _repository.Insert(empresa);

                if (empresa.CopiarDe != 0)
                {
                    var deParaPropriedade   = new Dictionary <int, int>();
                    var deParaGrupo         = new Dictionary <int, int>();
                    var deParaContaContabil = new Dictionary <int, int>();
                    var deParaCentroCusto   = new Dictionary <int, int>();
                    var deParaEspecie       = new Dictionary <int, int>();

                    if (empresa.CopiarEntidades.Contains("propriedade"))
                    {
                        var propriedadeBase = _propriedadeRepository.GetByEmpresaID(empresa.CopiarDe);

                        foreach (var pb in propriedadeBase)
                        {
                            var propriedadeNova = new Propriedade()
                            {
                                EmpresaID = empresa.ID,
                                Nome      = pb.Nome,
                                Fixa      = pb.Fixa
                            };

                            _propriedadeRepository.Insert(propriedadeNova);

                            deParaPropriedade.Add(pb.ID, propriedadeNova.ID);

                            if (pb.Fixa)
                            {
                                foreach (var pbValor in pb.Valores)
                                {
                                    _propriedadeValorRepository.Insert(new PropriedadeValor()
                                    {
                                        PropriedadeID = propriedadeNova.ID,
                                        Valor         = pbValor.Valor
                                    });
                                }
                            }
                        }
                    }

                    if (empresa.CopiarEntidades.Contains("contaContabil"))
                    {
                        var contaContabilBase = _contaContabilRepository.GetByEmpresaID(empresa.CopiarDe).OrderBy(x => x.CodigoInterno);

                        foreach (var ccb in contaContabilBase)
                        {
                            var contaContabilNova = new ContaContabil()
                            {
                                Codigo        = ccb.Codigo,
                                CodigoInterno = ccb.CodigoInterno,
                                EmpresaID     = empresa.ID,
                                Nome          = ccb.Nome,
                                NomeAbreviado = ccb.NomeAbreviado,
                                PaiID         = ccb.PaiID == null ? null : (int?)deParaContaContabil.Where(x => x.Key == ccb.PaiID).Single().Value
                            };

                            _contaContabilRepository.Insert(contaContabilNova);

                            deParaContaContabil.Add(ccb.ID, contaContabilNova.ID);
                        }
                    }

                    if (empresa.CopiarEntidades.Contains("grupo"))
                    {
                        var grupoBase = _grupoRepository.GetByEmpresaID(empresa.CopiarDe);

                        foreach (var gb in grupoBase)
                        {
                            var grupoNovo = new Grupo()
                            {
                                Codigo          = gb.Codigo,
                                ContaContabilID = gb.ContaContabilID == null ? null : deParaContaContabil.Count == 0 ? null : (int?)deParaContaContabil.Where(x => x.Key == gb.ContaContabilID).Single().Value,
                                EmpresaID       = empresa.ID,
                                Nome            = gb.Nome
                            };

                            _grupoRepository.Insert(grupoNovo);

                            deParaGrupo.Add(gb.ID, grupoNovo.ID);
                        }

                        if (empresa.CopiarEntidades.Contains("especie"))
                        {
                            var especieBase = _especieRepository.GetByEmpresaID(empresa.CopiarDe);

                            foreach (var eb in especieBase)
                            {
                                var especieNova = new Especie()
                                {
                                    Codigo  = eb.Codigo,
                                    GrupoID = deParaGrupo.Where(x => x.Key == eb.GrupoID).Single().Value,
                                    Nome    = eb.Nome
                                };

                                _especieRepository.Insert(especieNova);

                                deParaEspecie.Add(eb.ID, especieNova.ID);
                            }

                            if (deParaPropriedade.Count > 0)
                            {
                                var especiePropriedadeBase = _especiePropriedadeRepository.GetByEmpresaID(empresa.CopiarDe);

                                foreach (var epb in especiePropriedadeBase)
                                {
                                    var especiePropriedadeNova = new EspeciePropriedade()
                                    {
                                        EspecieID     = deParaEspecie.Where(x => x.Key == epb.EspecieID).Single().Value,
                                        PropriedadeID = deParaPropriedade.Where(x => x.Key == epb.PropriedadeID).Single().Value
                                    };

                                    _especiePropriedadeRepository.Insert(especiePropriedadeNova);
                                }
                            }
                        }
                    }

                    if (empresa.CopiarEntidades.Contains("centroCusto"))
                    {
                        var centroCustoBase = _centroCustoRepository.GetByEmpresaID(empresa.CopiarDe).OrderBy(x => x.CodigoInterno);

                        foreach (var ccb in centroCustoBase)
                        {
                            var centroCustoNovo = new CentroCusto()
                            {
                                Codigo        = ccb.Codigo,
                                CodigoInterno = ccb.CodigoInterno,
                                EmpresaID     = empresa.ID,
                                Nome          = ccb.Nome,
                                PaiID         = ccb.PaiID == null ? null : (int?)deParaCentroCusto.Where(x => x.Key == ccb.PaiID).Single().Value
                            };

                            _centroCustoRepository.Insert(centroCustoNovo);

                            deParaCentroCusto.Add(ccb.ID, centroCustoNovo.ID);
                        }
                    }
                }

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