private async Task <bool> SePuedeCerrar(CerrarSiniestroVm cerrarSiniestroVm) { await _repositorioPermisos.ObtenerPorId(cerrarSiniestroVm.IdPermiso); bool esPeritoResponsable = _repositorioPermisos.EsPeritoResponsable(cerrarSiniestroVm.IdPermiso); if (esPeritoResponsable) { return(true); } bool esPeritoNoResponsable = _repositorioPermisos.EsPeritoNoResponsable(cerrarSiniestroVm.IdPermiso); if (!esPeritoNoResponsable) { throw new CodigoErrorHttpException("No se puede cerrar el siniestro porque el usuario tiene permiso de administración", HttpStatusCode.InternalServerError); } bool esImpValoracionDaniosSiniestroMayorQueDelPerito = await EsImpValoracionDaniosMayorQueDelPerito(cerrarSiniestroVm.IdPerito, cerrarSiniestroVm.IdSiniestro); if (esImpValoracionDaniosSiniestroMayorQueDelPerito) { throw new CodigoErrorHttpException("No se puede cerrar el siniestro porque el importe de valoración de daños supera el establecido al perito", HttpStatusCode.InternalServerError); } else { return(true); } }
public async Task <ActionResult> Cerrar(CerrarSiniestroVm cerrarSiniestroVm) { await SePuedeCerrar(cerrarSiniestroVm); Estado cerrado = await _repositorioEstados.ObtenerPorTipo(TipoEstado.Cerrado); Siniestro siniestro = await _repositorioSiniestros.ObtenerPorId(cerrarSiniestroVm.IdSiniestro); siniestro.Estado = cerrado; await _repositorioSiniestros.Actualizar(siniestro); return(Ok(true)); }