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