public object Put([FromBody] InformeInspeccionModificarNissanViewModel viewModel)
        {
            try
            {
                InformeInspeccionNissan informeInspeccionNissan = _informeInspeccionNissanRepositorio.BuscarInformeInspeccionPorId(viewModel.InformeInspeccionId);

                informeInspeccionNissan.ModificarNombreDescripcion(viewModel.Nombre, viewModel.Descripcion);
                foreach (var G in viewModel.Grupos)
                {
                    List<DetalleInformeInspeccionNissan> detalles = new List<DetalleInformeInspeccionNissan>();

                    if (G.Id <= 0) // Todos los Objectos son nuevos
                    {
                        foreach (var D in G.Detalles)
                        {
                            DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                            List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                            List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                            List<Opcion> OpcionesMedicion = new List<Opcion>();

                            if (D.OpcionesCheckCalidad != null)
                            {
                                foreach (var OCC in D.OpcionesCheckCalidad)
                                {
                                    OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                }
                            }

                            if (D.OpcionesCheckRevision != null)
                            {
                                foreach (var OCR in D.OpcionesCheckRevision)
                                {
                                    OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                }
                            }

                            if (D.OpcionesMedicion != null)
                            {
                                foreach (var OM in D.OpcionesMedicion)
                                {
                                    OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                }
                            }

                            detalle.Descripcion = D.Descripcion;
                            detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                            detalles.Add(detalle);
                            //detalle.AgregarOpciones(OpcionesCheckCalidad, OpcionesCheckRevision, OpcionesMedicion);
                        }

                        informeInspeccionNissan.AgregarGrupo(G.DescripcionGrupo, detalles, TipoGrupoInformeInspeccionNissan.Revision);
                    }
                    else
                    {
                        foreach (var D in G.Detalles)
                        {
                            if (D.Id <= 0) // Grupo Existe, pero es un nuevo Detalle, Nuevas Opciones
                            {
                                DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                    }
                                }

                                detalle.Descripcion = D.Descripcion;
                                detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                                informeInspeccionNissan.AgregarDetalleEnGrupo(G.Id, detalle);
                            }
                            else // Grupo Existe, Detalle Existe, se agrega o modifica opciones
                            {
                                informeInspeccionNissan.ModificarDescripcionDetalleEnGrupo(G.Id, D.Id, D.Descripcion);

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion
                                        {
                                            Id = OCC.Id,
                                            Descripcion = OCC.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad
                                        });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion
                                        {
                                            Id = OCR.Id,
                                            Descripcion = OCR.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision
                                        });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion
                                        {
                                            Id = OM.Id,
                                            Descripcion = OM.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion
                                        });
                                    }
                                }

                                informeInspeccionNissan.AgregarOModificarOpcionesDetalleEnGrupo(G.Id, D.Id, OpcionesCheckCalidad, OpcionesCheckRevision, OpcionesMedicion);
                            }
                        }

                        informeInspeccionNissan.ModificarGrupo(G.Id, G.DescripcionGrupo, TipoGrupoInformeInspeccionNissan.Revision);
                    }
                }

                foreach (var G in viewModel.GruposCalidad)
                {
                    List<DetalleInformeInspeccionNissan> detalles = new List<DetalleInformeInspeccionNissan>();

                    if (G.Id <= 0) // Todos los Objectos son nuevos
                    {
                        foreach (var D in G.Detalles)
                        {
                            DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                            List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                            List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                            List<Opcion> OpcionesMedicion = new List<Opcion>();

                            if (D.OpcionesCheckCalidad != null)
                            {
                                foreach (var OCC in D.OpcionesCheckCalidad)
                                {
                                    OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                }
                            }

                            if (D.OpcionesCheckRevision != null)
                            {
                                foreach (var OCR in D.OpcionesCheckRevision)
                                {
                                    OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                }
                            }

                            if (D.OpcionesMedicion != null)
                            {
                                foreach (var OM in D.OpcionesMedicion)
                                {
                                    OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                }
                            }

                            detalle.Descripcion = D.Descripcion;
                            detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                            detalles.Add(detalle);
                        }

                        informeInspeccionNissan.AgregarGrupo(G.DescripcionGrupo, detalles, TipoGrupoInformeInspeccionNissan.Calidad);
                    }
                    else
                    {
                        foreach (var D in G.Detalles)
                        {
                            if (D.Id <= 0) // Grupo Existe, pero es un nuevo Detalle, Nuevas Opciones
                            {
                                DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                    }
                                }

                                detalle.Descripcion = D.Descripcion;
                                detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                                informeInspeccionNissan.AgregarDetalleEnGrupo(G.Id, detalle);
                            }
                            else // Grupo Existe, Detalle Existe, se agrega o modifica opciones
                            {
                                informeInspeccionNissan.ModificarDescripcionDetalleEnGrupo(G.Id, D.Id, D.Descripcion);

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion
                                        {
                                            Id = OCC.Id,
                                            Descripcion = OCC.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad
                                        });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion
                                        {
                                            Id = OCR.Id,
                                            Descripcion = OCR.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision
                                        });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion
                                        {
                                            Id = OM.Id,
                                            Descripcion = OM.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion
                                        });
                                    }
                                }

                                informeInspeccionNissan.AgregarOModificarOpcionesDetalleEnGrupo(G.Id, D.Id, OpcionesCheckCalidad, OpcionesCheckRevision, OpcionesMedicion);
                            }
                        }

                        informeInspeccionNissan.ModificarGrupo(G.Id, G.DescripcionGrupo, TipoGrupoInformeInspeccionNissan.Calidad);
                    }
                }

                foreach (var G in viewModel.GruposEspeciales)
                {
                    List<DetalleInformeInspeccionNissan> detalles = new List<DetalleInformeInspeccionNissan>();

                    if (G.Id <= 0) // Todos los Objectos son nuevos
                    {
                        foreach (var D in G.Detalles)
                        {
                            DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                            List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                            List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                            List<Opcion> OpcionesMedicion = new List<Opcion>();

                            if (D.OpcionesCheckCalidad != null)
                            {
                                foreach (var OCC in D.OpcionesCheckCalidad)
                                {
                                    OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                }
                            }

                            if (D.OpcionesCheckRevision != null)
                            {
                                foreach (var OCR in D.OpcionesCheckRevision)
                                {
                                    OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                }
                            }

                            if (D.OpcionesMedicion != null)
                            {
                                foreach (var OM in D.OpcionesMedicion)
                                {
                                    OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                }
                            }

                            detalle.Descripcion = D.Descripcion;
                            detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                            detalles.Add(detalle);
                            //detalle.AgregarOpciones(OpcionesCheckCalidad, OpcionesCheckRevision, OpcionesMedicion);
                        }

                        informeInspeccionNissan.AgregarGrupo(G.DescripcionGrupo, detalles, TipoGrupoInformeInspeccionNissan.Medicion);
                    }
                    else
                    {
                        foreach (var D in G.Detalles)
                        {
                            if (D.Id <= 0) // Grupo Existe, pero es un nuevo Detalle, Nuevas Opciones
                            {
                                DetalleInformeInspeccionNissan detalle = new DetalleInformeInspeccionNissan();

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion { Descripcion = OCC.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion { Descripcion = OCR.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion { Descripcion = OM.Descripcion, CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion });
                                    }
                                }

                                detalle.Descripcion = D.Descripcion;
                                detalle.Opciones = OpcionesCheckCalidad.Concat(OpcionesCheckRevision).Concat(OpcionesMedicion).ToList();
                                informeInspeccionNissan.AgregarDetalleEnGrupo(G.Id, detalle);
                            }
                            else // Grupo Existe, Detalle Existe, se agrega o modifica opciones
                            {
                                informeInspeccionNissan.ModificarDescripcionDetalleEnGrupo(G.Id, D.Id, D.Descripcion);

                                List<Opcion> OpcionesCheckCalidad = new List<Opcion>();
                                List<Opcion> OpcionesCheckRevision = new List<Opcion>();
                                List<Opcion> OpcionesMedicion = new List<Opcion>();

                                if (D.OpcionesCheckCalidad != null)
                                {
                                    foreach (var OCC in D.OpcionesCheckCalidad)
                                    {
                                        OpcionesCheckCalidad.Add(new Opcion
                                        {
                                            Id = OCC.Id,
                                            Descripcion = OCC.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad
                                        });
                                    }
                                }

                                if (D.OpcionesCheckRevision != null)
                                {
                                    foreach (var OCR in D.OpcionesCheckRevision)
                                    {
                                        OpcionesCheckRevision.Add(new Opcion
                                        {
                                            Id = OCR.Id,
                                            Descripcion = OCR.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision
                                        });
                                    }
                                }

                                if (D.OpcionesMedicion != null)
                                {
                                    foreach (var OM in D.OpcionesMedicion)
                                    {
                                        OpcionesMedicion.Add(new Opcion
                                        {
                                            Id = OM.Id,
                                            Descripcion = OM.Descripcion,
                                            CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion
                                        });
                                    }
                                }

                                informeInspeccionNissan.AgregarOModificarOpcionesDetalleEnGrupo(G.Id, D.Id, OpcionesCheckCalidad, OpcionesCheckRevision, OpcionesMedicion);
                            }
                        }

                        informeInspeccionNissan.ModificarGrupo(G.Id, G.DescripcionGrupo, TipoGrupoInformeInspeccionNissan.Medicion);
                    }
                }

                if (viewModel.GruposAnulados != null)
                {
                    foreach (var G in viewModel.GruposAnulados)
                    {
                        informeInspeccionNissan.AnularGrupo(G.Id);
                    }
                }

                if (viewModel.DetallesAnulados != null)
                {
                    foreach (var D in viewModel.DetallesAnulados)
                    {
                        //informeInspeccionNissan.AnularDetalleEnGrupo(D.Id);

                        foreach (var grupo in informeInspeccionNissan.GruposDetallesInformeInspeccionNissan)
                        {
                            foreach (var detalle in grupo.Detalles)
                            {
                                if (detalle.Id == D.Id)
                                {
                                    //detalle.Inactivar();
                                    detalle.IndicadorEstado = EstadoEntidad.Inactivo;
                                }
                            }
                        }
                    }
                }

                if (viewModel.OpcionesAnulados != null)
                {
                    foreach (var O in viewModel.OpcionesAnulados)
                    {
                        informeInspeccionNissan.AnularOpcionEnGrupo(O.Id);
                    }
                }

                _informeInspeccionNissanRepositorio.ModificarInformeInspeccion(informeInspeccionNissan);
            }
            catch (Exception e)
            {
                return new
                {
                    Status = 500,
                    Mensaje = e.Message
                };
            }

            return new
            {
                Status = 200,
                Mensaje = "OK!"
            };
        }
        public InformeInspeccionNissan Crear(InformeInspeccionPostNissanViewModel informeInspeccionPostNissanViewModel)
        {
            InformeInspeccionNissan informeInspeccion = new InformeInspeccionNissan();
            List<GrupoInformeInspeccionNissan> grupos = new List<GrupoInformeInspeccionNissan>();

            #region GruposRevision
            foreach (var grupo in informeInspeccionPostNissanViewModel.Grupos)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                                {
                                    CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                    Descripcion = opcion.Descripcion
                                }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCheckRevision.ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Revision;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            #region GruposCalidad
            foreach (var grupo in informeInspeccionPostNissanViewModel.GruposCalidad)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCalidad.ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Calidad;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            #region GruposEspeciales
            foreach (var grupo in informeInspeccionPostNissanViewModel.GruposEspeciales)
            {
                GrupoInformeInspeccionNissan grupoInformeInspeccion = new GrupoInformeInspeccionNissan();
                List<DetalleInformeInspeccionNissan> detallesInformeInspeccionNissan = new List<DetalleInformeInspeccionNissan>();

                foreach (var detalle in grupo.Detalles)
                {
                    DetalleInformeInspeccionNissan detalleInformeInspeccionNissan = new DetalleInformeInspeccionNissan();
                    List<Opcion> opcionesCheckRevision = new List<Opcion>();
                    List<Opcion> opcionesMedicion = new List<Opcion>();
                    List<Opcion> opcionesCalidad = new List<Opcion>();

                    if (detalle.OpcionesCheckRevision != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckRevision)
                        {
                            opcionesCheckRevision.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckRevision,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesMedicion != null)
                    {
                        foreach (var opcion in detalle.OpcionesMedicion)
                        {
                            opcionesMedicion.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionMedicion,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    if (detalle.OpcionesCheckCalidad != null)
                    {
                        foreach (var opcion in detalle.OpcionesCheckCalidad)
                        {
                            opcionesCalidad.Add(new Opcion
                            {
                                CodigoAgrupacion = TipoOpcionNissan.OpcionCheckCalidad,
                                Descripcion = opcion.Descripcion
                            }
                            );
                        }
                    }

                    detalleInformeInspeccionNissan.Descripcion = detalle.Descripcion;
                    detalleInformeInspeccionNissan.AgregarOpciones(opcionesCheckRevision.Concat(opcionesMedicion).ToList());
                    detallesInformeInspeccionNissan.Add(detalleInformeInspeccionNissan);
                }

                grupoInformeInspeccion.Descripcion = grupo.DescripcionGrupo;
                grupoInformeInspeccion.Detalles = detallesInformeInspeccionNissan;
                grupoInformeInspeccion.IndicadorEstado = EstadoEntidad.Activo;
                grupoInformeInspeccion.TipoGrupo = TipoGrupoInformeInspeccionNissan.Medicion;
                grupos.Add(grupoInformeInspeccion);
            }
            #endregion

            informeInspeccion.Nombre = informeInspeccionPostNissanViewModel.Nombre;
            informeInspeccion.Descripcion = informeInspeccionPostNissanViewModel.Descripcion;
            informeInspeccion.GruposDetallesInformeInspeccionNissan = grupos;

            return informeInspeccion;
        }
 public void AgregarDetalleEnGrupo(int idGrupo, DetalleInformeInspeccionNissan detalle)
 {
     GrupoInformeInspeccionNissan grupo = this.GruposDetallesInformeInspeccionNissan.Where(g => g.Id == idGrupo).First();
     grupo.AgregarDetalle(detalle);
 }