Пример #1
0
        public int InserirContrato(ContratoDto contratoDto)
        {
            var contrato = contratoDto.Converter();

            if (contrato.DataInicioVigencia.Date > DateTime.Now.Date)
            {
                throw new RegraNegocioException(TipoRegraNegocio.DataInicioVigenciaInvalida);
            }
            else if (contrato.DataFimVigencia < DateTime.Now.Date)
            {
                throw new RegraNegocioException(TipoRegraNegocio.DataFimVigenciaInvalida);
            }
            else if (contrato.VolumeDisponivel < 1)
            {
                throw new RegraNegocioException(TipoRegraNegocio.VolumeDisponivelInvalido);
            }

            return(_contratoRepositorio.InserirContrato(contrato));
        }
Пример #2
0
        public bool EditarContrato(ContratoDto contratoDto)
        {
            var contrato = contratoDto.Converter();

            if (contrato.DataInicioVigencia.Date > DateTime.Now.Date)
            {
                throw new RegraNegocioException(TipoRegraNegocio.DataInicioVigenciaInvalida);
            }
            else if (contrato.DataFimVigencia < DateTime.Now.Date)
            {
                throw new RegraNegocioException(TipoRegraNegocio.DataFimVigenciaInvalida);
            }
            else if (contrato.VolumeDisponivel < 1)
            {
                throw new RegraNegocioException(TipoRegraNegocio.VolumeDisponivelInvalido);
            }

            var contratoAtual = _contratoRepositorio.ObterContrato(contrato.ContratoId);

            if (contratoAtual == null)
            {
                return(false);
            }

            var pedidos = _pedidoRepositorio.ObterPedidos(contrato.ContratoId);
            var volumePedidosPendentes = pedidos.Where(p => !p.Atendido).Sum(p => p.Volume);

            if (contrato.VolumeDisponivel < volumePedidosPendentes)
            {
                throw new RegraNegocioException(TipoRegraNegocio.VolumeDisponivelInvalidoEdicao);
            }

            _contratoRepositorio.EditarContrato(contrato);

            return(true);
        }