public async Task <IActionResult> IniciarNuevaOrden() { var colores = await _unitOfWork.Repository <Color>().ListAllAsync(); var modelos = await _unitOfWork.Repository <Modelo>().ListAllAsync(); var specLineas = new AddLineasIncludesSpecification(); var lineas = await _unitOfWork.Repository <LineaDeTrabajo>().ListAsync(specLineas); var estadoFinalizada = EstadoOrden.Finalizada; var lineasDisponibles = new List <LineaDeTrabajo>(); foreach (var linea in lineas) { var validado = linea.ObtenerLineaSiEstaFinalizada(estadoFinalizada); if (validado) { lineasDisponibles.Add(linea); } } var OrdenIniciarViewModel = new OrdenIniciarViewModel { Colores = colores, Lineas = lineasDisponibles, Modelos = modelos, Coloress = colores, Modeloss = modelos, Lineass = lineasDisponibles }; return(View(OrdenIniciarViewModel)); }
public async Task <IActionResult> CrearOrden(OrdenIniciarViewModel orden, int numeroOrden) { var usuario = await ObtenerUsuario(); var specLinea = new LineaConIdSpecification(Int32.Parse(orden.LineaSelected)); var linea = await _unitOfWork.Repository <LineaDeTrabajo>().GetEntityWithSpec(specLinea); var specModelo = new ModeloConNumeroSpecification(orden.ModeloSelected); var modelo = await _unitOfWork.Repository <Modelo>().GetEntityWithSpec(specModelo); var specColor = new ColorConNumeroSpecification(Int32.Parse(orden.ColorSelected)); var color = await _unitOfWork.Repository <Color>().GetEntityWithSpec(specColor); var turnos = await _unitOfWork.Repository <Turno>().ListAllAsync(); var horaActual = _unitOfWork.GetHora(); var estadoFinalizada = EstadoOrden.Finalizada; var specLineas = new AddLineasIncludesSpecification(); var lineas = await _unitOfWork.Repository <LineaDeTrabajo>().ListAsync(specLineas); int usuarioValidado = 0; if (ModelState.IsValid) { foreach (var li in lineas) { var validacionDeEmpleado = li.ComprobarAsignacionSupervisor(usuario.Empleado); if (validacionDeEmpleado) { usuarioValidado++; } } if (linea != null && modelo != null && color != null && usuario != null && usuarioValidado == lineas.Count) { var lineaDisponible = linea.ObtenerLineaSiEstaFinalizada(estadoFinalizada); if (lineaDisponible) { var spec = new OrdenConNumeroSpecification(numeroOrden); var ordenExistente = await _unitOfWork.Repository <OrdenDeProduccion>() .GetEntityWithSpec(spec); if (ordenExistente == null) { var ordenV = linea.CrearOrden(numeroOrden, modelo, color, usuario.Empleado, turnos, horaActual); if (ordenV != null) { _unitOfWork.Repository <LineaDeTrabajo>().Update(linea); await _unitOfWork.Complete(); } ModelState.AddModelError("", "Se debe crear la orden en un turno valido "); } ModelState.AddModelError("", "Orden ya existente, ingrese otra"); } ModelState.AddModelError("", "Orden activa en linea" + linea.Numero + ", finalice la ultima para crear otra"); } } return(RedirectToAction("ObtenerLineas")); }