Example #1
0
        private PessoaJuridicaEntity UpdateEntity(PessoaJuridicaEntity entity, PessoaJuridicaUpdateModel model)
        {
            entity.Id           = model.Id;
            entity.PessoaId     = model.PessoaId;
            entity.RazaoSocial  = model.RazaoSocial;
            entity.NomeFantasia = model.NomeFantasia;
            entity.CNPJ         = model.CNPJ;
            entity.Pessoa       = _mapper.Map <PessoaEntity>(model.Pessoa);
            entity.Socios       = _mapper.Map <List <PessoaVinculoEntity> >(model.Socios);

            return(entity);
        }
        public PessoaJuridicaEntity Create(PessoaJuridicaEntity entity)
        {
            ValidarCnpj(entity);

            int qtdEnderecos = entity.Enderecos.Count;

            if (qtdEnderecos < 1 || qtdEnderecos > 3)
            {
                throw new Exception("A quantidade de endereços deve ser no mínimo 1 (um) e no máximo 3 (três).");
            }

            const decimal valorLimiteCreditoInicial = 100m;

            entity.ValorLimiteCredito = valorLimiteCreditoInicial;

            entity.Id = ObjectId.GenerateNewId();
            pessoa.InsertOne(entity);
            return(entity);
        }
        public void Update(string id, PessoaJuridicaEntity entity)
        {
            ValidarCnpj(entity, id);

            var idsEnderecos = new List <string>();

            entity.Enderecos.ForEach(item => idsEnderecos.Add(item.Id.ToString()));
            GetById(id).Enderecos.ForEach(item => idsEnderecos.Add(item.Id.ToString()));
            idsEnderecos = idsEnderecos.Distinct().ToList();
            if (idsEnderecos.Count > 3)
            {
                throw new Exception("A quantidade de endereços deve ser no mínimo 1 (um) e no máximo 3 (três).");
            }

            if (entity.ValorLimiteCredito < 0m)
            {
                throw new Exception("O valor de limite de crédito não pode ser negativo.");
            }

            pessoa.ReplaceOne(ps => ps.Id.ToString() == id, entity);
        }
        private void ValidarCnpj(PessoaJuridicaEntity entity, string id = null)
        {
            if (!ValidadorCNPJ.CNPJValido(entity.Cnpj))
            {
                throw new Exception("O CNPJ informado não é válido.");
            }

            if (id is null)
            {
                if (GetAll().Count(item => item.Cnpj == entity.Cnpj) > 0)
                {
                    throw new Exception("O CNPJ informado já esta sendo utilizado em outro registro.");
                }
            }
            else
            {
                if (GetAll().Count(item => item.Cnpj == entity.Cnpj && item.Id.ToString() != id) > 0)
                {
                    throw new Exception("O CNPJ informado já esta sendo utilizado em outro registro.");
                }
            }
        }