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")); }
public async Task <IActionResult> Iniciar(int numeroOrden, Defecto defectoSeleccionado = null) { var usuario = await ObtenerUsuario(); var specOrden = new OrdenConNumeroSpecification(numeroOrden); var ordenCorrecta = await _unitOfWork.Repository <OrdenDeProduccion>().GetEntityWithSpec(specOrden); if (ordenCorrecta != null) { var empleadoValido = ordenCorrecta.VerificarAsosiacion(usuario.Empleado); if (empleadoValido) { var specObservados = new DefectosObservadosSpecification(TipoDefecto.Observado); var specReproceso = new DefectosObservadosSpecification(TipoDefecto.Reproceso); var defectosObservados = await _unitOfWork.Repository <Defecto>().ListAsync(specObservados); var defectosReproceso = await _unitOfWork.Repository <Defecto>().ListAsync(specReproceso); var hora = _unitOfWork.GetHora(); var turnos = await _unitOfWork.Repository <Turno>().ListAllAsync(); var turno = ordenCorrecta.Linea.ValidarTurno(turnos, hora); // if (turno != null) //{ var specHorarios = new HorariosDeOrdenSpecification(ordenCorrecta.Id); var horarios = await _unitOfWork.Repository <HorarioTrabajo>().ListAsync(specHorarios); var defectosListViewModel = new DefectosListViewModel { DefectosObservados = defectosObservados, DefectosReprocesos = defectosReproceso, Hora = hora, Orden = ordenCorrecta, Turno = turno, Hallazgos = ordenCorrecta.Horarios.Last().Hallazgos, Primeras = ordenCorrecta.Horarios.Last().ParesPrimera }; if (defectoSeleccionado != null) { defectosListViewModel.def = defectoSeleccionado; } if (horarios.Count > 0) { defectosListViewModel.CantidadPrimera = horarios.Last().ParesPrimera.Count;; } return(View("IniciarInspeccion", defectosListViewModel)); // } // else // { // return RedirectToAction("IniciarAsociacion", "Asociar"); // } } } return(RedirectToAction("IniciarAsociacion", "Asociar")); }