//Validamos las medidas de las entradas respecto a la salida public void ValidarEntradas(DivisionLotesModel model) { //Obtenemos los valores de las salidas inicialmente var largoSalida = model.LineasSalida.First().Largo; var anchoSalida = model.LineasSalida.First().Ancho; var gruesoSalida = model.LineasSalida.First().Grueso; var cantidadSalida = model.LineasSalida.First().Cantidad; var metrosSalida = model.LineasSalida.First().Metros; bool largoModificado = false; bool anchoModificado = false; bool gruesoModificado = false; bool cantidadModificada = false; foreach (var entrada in model.LineasEntrada) { if (entrada.Largo != largoSalida) { largoModificado = true; } if (entrada.Ancho != anchoSalida) { anchoModificado = true; } if (entrada.Grueso != gruesoSalida) { gruesoModificado = true; } if (entrada.Cantidad != cantidadSalida) { cantidadModificada = true; } } if (!largoModificado && !anchoModificado && !gruesoModificado) { if (!cantidadModificada) { throw new ValidationException("No se han modificado las entradas"); } if (cantidadModificada && (cantidadSalida != model.LineasEntrada.Sum(a => a.Cantidad.Value))) { throw new ValidationException("La cantidad de las entradas no corresponde con la cantidad de la salida"); } } //Si modificamos el largo, ancho y grueso y ademas los metros cuadrado if (largoModificado || anchoModificado || gruesoModificado) { //La suma de los metros cuadrados (tabla) o cubicos (bloque) de las entradas no pueden ser superior a los de la salida if (model.LineasEntrada.Sum(a => a.Metros.Value) > metrosSalida) { throw new ValidationException("Los metros de las entradas son superiores a la salida"); } } }
//Solo se permite 1 salida public void ValidarSalidas(DivisionLotesModel model) { if (model.LineasSalida.Count > 1) { model.LineasSalida.Clear(); model.LineasEntrada.Clear(); throw new ValidationException("Sólo se puede generar división de lotes para una salida"); } }