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)); } }
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)); } }