public async Task <IActionResult> Put(FornecedorEntity model)
        {
            try
            {
                var fornecedor = await _service.GetFornecedorAsyncById(model.Id);

                if (fornecedor == null)
                {
                    return(NotFound());
                }

                var idTelefone = new List <int>();
                model.TelefoneFornecedor.ForEach(item => idTelefone.Add(item.Id));

                var telefones = fornecedor.TelefoneFornecedor.Where(telefone => !idTelefone.Contains(telefone.Id)).ToArray();

                if (telefones.Length > 0)
                {
                    _service.DeleteRange(telefones);
                }

                _mapper.Map(model, fornecedor);

                var obtemEmpresa = await _empresa.ObterPorIdAsync(model.EmpresaId);

                var valida = await FornecedorValidation.ValidaFornecedor(model, obtemEmpresa);

                if (valida.Any())
                {
                    throw new ArgumentException(valida);
                }

                _service.Update(model);

                if (await _service.SaveChangesAsync())
                {
                    return(Ok(_mapper.Map <FornecedorEntity>(model)));
                }
            }
            catch (ArgumentException ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }

            return(BadRequest());
        }
        public async Task <IActionResult> Post(FornecedorEntity model)
        {
            try
            {
                var fornecedor   = _mapper.Map <FornecedorEntity>(model);
                var obtemEmpresa = await _empresa.ObterPorIdAsync(model.EmpresaId);

                var valida = await FornecedorValidation.ValidaFornecedor(fornecedor, obtemEmpresa);

                if (valida.Any())
                {
                    throw new ArgumentException(valida);
                }

                model.DataCadastro = DateTime.Now;
                return(Ok(_service.InsertAsync(model)));
            }
            catch (ArgumentException ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }